Cognex康耐视相机操作技巧使用使用说明_第1页
Cognex康耐视相机操作技巧使用使用说明_第2页
Cognex康耐视相机操作技巧使用使用说明_第3页
Cognex康耐视相机操作技巧使用使用说明_第4页
Cognex康耐视相机操作技巧使用使用说明_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、-/康耐视相机操作使用说明书文档密级不保密内部机密项目名称版本号1.0描述康耐视相机操作使用说明书编写人余国鹰编写日期2015/9/10审核人审核日期文件状态:草稿修改定稿-/1314康耐视相机具体设置1.1 软件安装 1.2 流程编辑 1.3 CODESYS 通信注意事项相机标定2.1 相机校准 2.2 绝对坐标实现2.3 相对坐标实现示教器示例程序3.1 绝对坐标实现范例3.2 相对坐标实现范例四、 CODESYS 逻辑开发4.1 SOCKET 通信开发4.2 外部点数据处理五、 细节说明目录错误 ! 未定义书签。101111111317-/X一、康耐视相机具体设置1.1软件安装双击康耐视

2、相机软件 Cog nex_l n-Sight_Software_4.8.1,按照步骤一步步安装即可。1.2流程编辑1. 设置电脑本地连接IPV4地址为192.168.39.12 (设置为39段即可)。2. 双击康耐视In-Sight浏览器软件进入相机设置界面,软件会自动搜索连接的相机设备,如 下图1.1所示。迫.fr-Sight 圜览器-adminI艾件S辑g看氣统 S 口認助 :J V 03 h孕丛診勺二-姿X' I裁b强乜*Q二 :Iit-Sieht 网S0- Ici-SigKt 借感器卜马 jniw-FC3.双击相机设备(红色椭圆内设备图标)图1.1,进入相机编辑界面,如下图1.

3、2所示。图1.22曲H;宅3.91RP曲(E1P lotos4个步骤形成一个完整的相机操4.在应用程序步骤中,开始、设置工具、配置结果、完成这 作流程;? 开始单击“开始”中“已连接”,如下图1.3所示,可以进行连接设备、断开设备、刷新、添加等操作。单击“开始”中的“设置图像” 在“采集/加载图像”对话框中, 机中的图像,“从PC加载图像”,如下图1.4所示。“触发器”按钮是进行拍照,“实况视频”按钮是实时显示相按钮是加载一张存在的图像。相机触岌器班时(毫秒)鮭岌器间隔(毫秒) 光(荃秒)自动逞光50亠50. 000 亠扁长蹿卄时同 目樣宴復 幵怡行行埶光歧控制模武兀憑控制40. 0C0 -&

4、#177;-97 OCO 圭Exp o zure C orL-.r -11 ed魅点区域图1.4在“编辑采集设置”对话框中,设置一系列相机参数,根据具体需要进行调节?设置工具 单击“设置工具”中“定位部件”按钮,对检测模型进行定位,作为识别的模型进行对比;单击“设置工具”中“检测部件”按钮,对模型进行编辑操作。在“定位部件”的设置对话框中,如下图1.5所示,合格阀值:每次拍照之后的得分如果大于阀值,则拍照成功,否则失败;旋转公差:检测部件能够旋转的角度范围,如果在 范围之类则会拍照成功,否则会失败C常规设置合格風值50学130囹缩放处差水平偏移0.000 3S直偏移0.000刽«型樂

5、型边模型超时5000 昌结果C-2T.0,-4&, &)-54. I?得分图1.5“通信”按钮,进行通讯设置操作,如下图1.6所示。TCP/IP通讯方式,单击“ TCP/IP”,如下图1.7所示,在? 配置结果单击“配置结果”新时达机器人视觉通信采用的“TCP/IP设置”对话框中,“服务器主机名”设为192.168.39.220 (机器人控制器IP地址), “端口”设置与CodeSys中相同,本例中设为 9876,“超时时间”设为15000, “结束符” 设为字符串(CR13)。单击“格式化输出字符串”,进行输出操作,如下图 1.8所示。勾选“使用分隔符”,表示 在输出之间用逗

6、号分隔符进行隔开,方便进行数据处理操作;单击“添加”按钮,可以输出很多数据,这里只需要输出4个数据,“失败”、“定位器.X ”、“定位器.Y”、“定位器.角度”;输出数据说明:均为 7个字节宽度,除图案.失败是整形外,其它数据均为浮点型,小数 点位数为2位。第一位图案.失败:判定符,为0表示采集到特征,拍照成功;为 1则拍照失败。第二位图案.定位器.X :输出用户坐标系下的 X方向绝对值。第三位图案.定位器.Y :输出用户坐标系下的 丫方向绝对值。 第四位图案.定位器.角度:输出用户坐标系下的相对角度。1)2)3)4)选軽一个通僖类型,以配置In-SigKt OFC Server的OfC标记,

7、或是酉遥 操作员界面面板的 单击“添加设菁 按a以.酉ES与外部诰备的1信O图1.6IjH)ise 皿1)<yrrz5帝哥 nriJii1.7K* tr i =昭C*r3 ll27t11LG4L皈_4芒也罢殆虔1 1LUtelPfiFJ 宦(3寻 V诵占空1上 J.-杯& =刁砖Sr應VS :Ii«?¥ift比 7:彌31= 300匚二 二 MF,ein-30a- DC工一(K6_E*饥J1呻1|<1 '史曲辭耳*文玉匸图1.8? 完成 在“完成”中单击“保存作业”,则保存当前作业任务中的所有设置;在“完 成”中单击“运行作业”,则运行当前作业任

8、务。注意,以上参数设定必须在脱机模式下才能够设置,在联机状态下参数不能设置,与外 界设备实时通讯必须在联机模式下;物体旋转一定角度拍照失败,看检测部件是否超过相机 视野范围和旋转角度值设置是否合理。1.3 Codesys通信注意事项a)b)c)d)e)f)说明:设定PC端的IP地址,IP地址必须192.168.39.XXX,这里设定为192.168.39.12, 用网线与相机控制器相连;通信流程包括:建立TCPIP的服务器端并连接,给相机发送指令,从相机接收数据; 图1.7中如果把“字段分隔符”改为“停止” ,则两个数据之间就是无分隔符的直接 连接;如果选择其他,则有相应的分隔符号;例:采用“

9、消零”为“有”,“字段分隔符”为“停止”的方式时,相机发送数据“ -001.00 ”和“ 1010.02”时,实际上发送了“ 45 48 48 49 46 48 48 49 48 49 48 46 48 50 13 ” (13 是回车符的ASIIC码);在下载工程成功时,查看通讯是否连接正常。当dient_congnex step_cognex:=2 禾R server_cognex 中的 step_server: =2 时,此时通讯成功, 不正常,需要查看设备是否连接好和In-Sight软件是否处于联机状态。详细指令及其他形式的通信可参考文档通信设定sdn b-cn5-714d_fh_fz5

10、任务中的否则通讯。相机标定要实现将相机采集的数据转换为机器人坐标系下的位姿数据,必须建立相机坐标系与机 器人坐标系的对应转换关系,该过程通过相机标定来实现。相机也分平面相机和三维相机,前者只支持平面数据采集,后者则可以获取xyz空间值。以三维相机为例,要详细建立相机三维空间的位置与机器人坐标系的对应关系,必须通过严 格的手眼标定来实现。不同相机有手眼标定算法,通过示教多个点来建立手眼转换关系。这 里不详述。如果只做平面工件抓取,那只需要工件变化的坐标值X、y以及绕z轴的转动角度C,问题就简单的多,只需要进行平面的简单标定即可实现。以康耐视相机为例,格力等客户只需 要实现流水线来料的抓取操作,标

11、定平面坐标系即可,康耐视相机可以提供移动后的工件相 对于移动前的偏移位置量,或者提供工件的绝对移动位置。这里,我们提供这两种工作方式 的实现过程。2.1相机校准相机默认输出的坐标值是相机采集到的像素值,并非实际工件位置尺寸,因此需要将物 理坐标与像素值进行映射标定。设定校准后,可使测量结果像素值转换为实际尺寸并输出, 康耐视提供了校准参数的制作过程。1. 单击“设置图像“,界面右下角出现下图2.1所示界面。校准类型中有很多种,根据实际需要选择,这里选择“网格”,然后单击“校准”按钮,出现下图2.2所示界面。校淮类型;单位:mm尺 7t:10.0000图2.12. 打印校准网格纸张。在图2.2中

12、,单击“打印网格”按钮,然后将打印的网格纸张放在 相机视野正中间。3. 在“设置”界面中,“网格类型”为方格图案(带基准),其它值均为默认。4. 单击“姿势”,进入姿势设置界面,如图2.3所示,原点位置为默认,单击“触发器”按钮,相机会自动拍照,最后单击“校准”,校准工作就结束。5. 单击“结果”,可以查看校准情况,如图2.4所示。+能电13:N rfyj la'-t ratejnd1 > 11图22as:p DOWU Odwjp OVX时iS如H36tstft屉(21t .科10LTll_ Lnr 3列L:P3.ZZWL5E C咻T90 amJDJ4DJ110 «&#

13、187;耶T-3& ODD0 uuDI-uiL图2.3图2.46.建立检测模型。单击“定位部件”,出现如图2.5所示界面,单击“位置工具”中“图 案”,然后单击“添加”,单击“ OK”,接着单击界面右下角“模型”,拖动绿色模型矩形框, 使被检测模型处于绿色矩形框中,最后单击界面右下角“训练”,此时检测模型已经建立。+皿皿靂|:1 :Q: H +醱 «-|D)tn-龜詭肚"踽nt建匸輕"(33,耘 琵竝士印挣m 蒔冃羞號中Z胆”期柔痕 仝廿贱Ed!辭噓因各IT i电走”井少crZuic<.l图7.查看模型建立是否成功。在界面右侧选择板中, 示模型建立成

14、功,同时会输出检测模型的位置、角度、2.5可以查看建立图案的情况,绿色圆点表 得分,如图2.6所示。丄z詳/ EPJ匚i*aii7lETTlOnfl*" IRB图2.6PCftBi通过以上7步即可完成相机的校准过程。2.2绝对坐标实现绝对坐标的实现必须借助机器人的用户坐标系,即机器人在用户坐标系下走绝对位置运 动。具体实现由以下几个步骤组成。首先,用steP机器人三点法示教出一个固定用户坐标系。用户坐标系的原点根据实际情 况而定,一般选择流水线上一个固定位置参考点,该参考点要方便相机进行坐标转化标定。 关于用户坐标系的标定,可参见新时达机器人操作使用说明书;其次,进行相机坐标与实际位

15、置坐标的标定转换。在完成第一步中的固定用户坐标系标 定后,在该坐标系下选取工件上的三点,计算出这三点在用户坐标系的X、Y值(该步骤可通过机器人协助示教获得在用户坐标系下的位姿值)。在图像输入的“校准”模块中,按照2.1中的步骤完成相机坐标与实际位置坐标的校准参数制作转换;最后,机器人实现绝对位置运动。在完成第二步后,工件每偏移一点,相机均可计算出 其在用户坐标系下新的位置值X、Y和绕Z轴的theta角度值。这样,只需要在示教器程序中设置抓取运动点参考的坐标系为用户坐标系即可,即codesys 里直接读取的相机返回值。RefSys语句下走绝对 cpe点。该 cpe点是2.3 相对坐标实现X和 丫

16、)。相对坐标的实现就比较简单,只需要将相机坐标转换为实际位置坐标即可。在工件上选 取三个特征点,用带尖机器人示教出这三点在机器人基坐标系下的坐标值(主要是 按照2.1 中的校准流程制作出校准参数。这样,工件偏移后,相机可以直接计算出其新的坐标 X、 丫和 theta 。需要注意的是,使用相对坐标运动时,相机输出数据必须是相对量,即测量坐标与基准 坐标之差,而不是绝对测量坐标。具体信息见后续章节。三、示教器示例程序3.1 绝对坐标实现范例Tool(tool0);/ 若带工具,则先加载好PTP(ap0); /走到一个安全位置点Lin(cp3); /走到标准抓取位置(工件处于标准位置时机器人的抓取位

17、姿,提前示教好) RefSys(ref1); /切到用户坐标系下WaitTime(uint3);BOOLEXTSet(boolbasepos,TRUE);/端口号为2,发送信号到codesys,读取当前位置作为标准 抓取位置WaitTime(uint4);BOOLEXTSet(boolbasepos,FALSE); /关闭该端口/以上为获得标准抓取位置需要的步骤RefSys(WORLD);PTP(ap0);LP:int0;BOOLEXTSet(boolphoto,TRUE); /发送相机拍照命令,端口号 0WaitTime(uintO);等待PLC处理时间,建议在300ms以上bool0:=B

18、OOLEXTRead(boolenableget);读取抓取标志位,为TRUE 则能抓取BOOLEXTSet(boolphoto,FALSE); /关闭该端口,保证下次为高电平触发IF(bool0=0)THEN /为true则可抓取,否则重新发送拍照命令WaitTime(uint1);GOTO(int0);END_IFRefSys(ref1);/切到用户坐标系下Lin(rcpe0);/走到codesys里输出的绝对位置(外部点形式,端口号0)BOOLEXTSet(boolfinishget,TRUE); /发送抓取完成标志WaitTime(uint2);BOOLEXTSet(boolfinis

19、hget,FALSE);/关闭抓取完成标志PTP(ap1);GOTO(int1); /回到循环开始,等待下一个工件3.2 相对坐标实现范例Tool(tool0); / 若带工具,则先加载好PTP(ap0); / 走到一个安全位置点Lin(cp3); /走到标准抓取位置(工件处于标准位置时机器人的抓取位姿,提前示教好) WaitTime(uint3);BOOLEXTSet(boolbasepos,TRUE); /端口号为 2,读取当前位置作为标准抓取位置 WaitTime(uint4);BOOLEXTSet(boolbasepos,FALSE); /关闭该端口 /以上为获得标准抓取位置需要的步骤

20、PTP(ap0); /回到安全点LP:int0;BOOLEXTSet(boolphoto,TRUE); /发送相机拍照命令,端口号 0WaitTime(uintO);等待PLC处理时间,建议在300ms以上boolO:=BOOLEXTRead(boolenableget);读取抓取标志位,为TRUE 则能抓取BOOLEXTSet(boolphoto,FALSE); /关闭该端口,保证下次为高电平触发 IF(bool0=0)THEN /为true则可抓取,否则重新发送拍照命令WaitTime(uint1);GOTO(int0);END_IFLin(rcpe1);/走到codesys里输出的绝对位

21、置(外部点形式,该位置是机器人当前位置加上相对偏移, 端口号 1)BOOLEXTSet(boolfinishget,TRUE);/发送抓取完成标志WaitTime(uint2);BOOLEXTSet(boolfinishget,FALSE);/关闭抓取完成标志PTP(ap1);GOTO(int1); /回到循环开始,等待下一个工件-/四、Codesys 逻辑开发4.1 Socket 通信开发首先,要在codesys上完成socket通讯开发。通讯开发的要点包括协议类型、协议数据、 数据收发、逻辑判断等。一般的相机都是支持 TCP /IP协议的,我们也多是采用该协议完成step控制器与各类相机的

22、通讯连接及数据交互的。一般来说,机器人控制器作为主机server (服务器),相机处理器作为从机client (客户端)。控制器作为主机的好处在于,控制器“知道”自己什么时候需要拍 照、需要数据,此时给相机发送命令即可。相机作为客户端始终处于监听状态。主机控制器 的 IP 地址为 192.168.39.220,端口号任意,如取为 9876,用网线与相机控制器相连,在完成 相机与控制器的通信数据格式设定后,接下来就是codesys端编程实现。通信示例说明:CASE step OF0:SAddr.sAddr := '192.168.39.120' /服务器地址 server(xEn

23、able:=TRUE,ipAddr:=SAddr,uiPort:=9876); /建立服务器 IF(server.xBusy = TRUE) THENconnect(xEnable:=server.xBusy,hServer:=server.hServer);/ 连接IF(connect.xActive = TRUE) THEN /连接成功step := 1;/执行接收数据END_IFIF(connect.xError = TRUE)THEN /连接报错 step := 3;/复位END_IFEND_IFIF(server.xError = TRUE)THEN step := 3;END_IF

24、/从相机传过来的数据以 ASCII 码的形式存储到 recvokcr 数组 ,数组的第一位存储的是串行数据 输出中设定的首位例如设定的整数位为 1,小数位为 1,当相机发送一个 1.0 时,用 BYTE 型 recvokcr 数组“ 1.0 回车(CR)” 对应的 ASCII 码“ 49 “,” 62 “,” 48 “,”13 “size1 := SIZEOF(recvokcr); / 数组长度precv := ADR(recvokcr); / 数组地址recv(xEnable:=TRUE,hConnection:=connect.hConnection,szSize:=size1,pData

25、:=precv); / 接收数据IF(recv.szCount>7) THEN / 判断是否收到数据输出,这里的数字应小于数据总长度ste p:=5;/数据处理END_IFIF recv.xError THEN /接收数据报错1:-/2 ) *step:=3;END_IF/以ASCII码的形式从senddata数组传给相机,给相机发送“M回车(CR)”命令可以采集一张图片2:size2 := SIZEOF(senddata); /数组长度senddata0:=16#4D; /M 的 ASCII 码,16 进制表示,是单次测量的指令。senddata1:=16#0D; /回车(CR)的AS

26、CII码,16进制表示(欧姆龙相机用 MCR来发送数据) psend := ADR(senddata);/ 指令地址send(xExecute:=TRUE,hConnection:=connect.hConnection,szSize:=size2,pData:=psend,udiTimeOut:=1000000);IF(send.xDone = TRUE) THEN /发送成功send(xExecute:=FALSE); /函数复位step := 1;END_IFIF(send.xError = TRUE) THEN / 发送报错send(xExecute:=FALSE);step := 3

27、;END_IF5:/数据处理程序3: /复位后返回connect(xEnable:=FALSE);server(xEnable:=FALSE);recv(xEnable:=FALSE,hConnection:=connect.hConnection,szSize:=size,pData:=precv);step := 99;99:step:=0;END_CASE注意,多数 socket 函数都是上升沿执行,所以在调用后,应在合适的地方将其关闭(给 下降沿),这样下一周期执行时才会继续生效。否则可能造成函数执行无效,程序死循环卡死 在某一步、或者报错处理。4.2 外部点数据处理在步骤 1.1 通

28、过 socket 实现控制器与相机的通信连接及数据收发处理后, 与 HMI 的命令收发处理以及外部 cpe 点位置计算与返回。完整流程逻辑如下:本步骤主要完成/获取示教器输入GetHMIBOOL(Enable := TRUE,PortNumber := 0,Data => ReqGet);/获取拍照命令GetHMIBOOL(Enable := TRUE,PortNumber := 1,Data => FinishGet);GetHMIBOOL(Enable := TRUE,PortNumber := 2,Data => BasePosGet);/(* 获取标准抓取位置(当前通

29、过 IO 语句发送命令实现,端口号为/获取完成抓取命令/ 获取标准抓取位置命令-/IF (BasePosGet = TRUE AND (BasePosCount = 0) THEN BasePosCount := 1;ReadRefSys(Enable := TRUE,RefSys => RefSys_qz);/注意, ReadRefSys 读出来的当前坐标系的 ABC 为弧度,需要转换为角度 RefSys_qz.a := RefSys_qz.a * R2D;RefSys_qz.b := RefSys_qz.b * R2D;RefSys_qz.c := RefSys_qz.c * R2D

30、;ReadTCPData(Enable := TRUE,RefSys := RefSys_qz,CartPos =>BasePos); / 注意,当前读取用户坐标 系下的位置值END_IFIF BasePosGet = FALSE THENBasePosCount := 0;END_IF*)/(* 请求相机数据并计算抓取外部点 与通讯部分分开使用,通过标志符确定是否获取数据成功rtrig(CLK :=TakePhoPLC);IF rtrig.Q = TRUE THENTakePhoPLC := FALSE; / baseTCP 为标准抓取位置baseTCP.x := BasePos.x;

31、baseTCP.y := BasePos.y; baseTCP.z := BasePos.z;baseTCP.a := BasePos.a*D2R;baseTCP.b := BasePos.b*D2R;baseTCP.c := BasePos.c*D2R;/ Tpos 为相机输出数据Tpos.x := server.Pos_x;Tpos.y := server.Pos_y;Tpos.z := 0;Tpos.a := 0;Tpos.b := 0;Tpos.c := server.Pos_c*D2R;/ 以下过程为坐标变换,将相机坐标系下的角度 theta 转换到用户坐标系下FB_Cartpos2

32、Homomatrix_0(SR_RefSys_0 := baseTCP); baseTCP_homomatrix := FB_Cartpos2Homomatrix_0.Ref_Homomatrix;FB_Cartpos2Homomatrix_1(SR_RefSys_0 := Tpos); basecamera_homomatrix := FB_Cartpos2Homomatrix_1.Ref_Homomatrix;FB_MulHomomatrix_0(homomatrix_1baseTCP_homomatrix);basecamera_homomatrix, homomatrix_2T0TCP

33、 := FB_MulHomomatrix_0.homomatrix_out;(* change to xyzabc*)FB_Homomatrix2Cartpos_0(Ref_Homomatrix := T0TCP, SR_RefSys_0 => SR_test);FB_Homomatrix2Cartpos_0(Ref_Homomatrix := T0TCP, SR_RefSys_0 => SR_RefSys_0);SR_RefSys_0.a := SR_RefSys_0.a * R2D;SR_RefSys_0.b := SR_RefSys_0.b * R2D;SR_RefSys_0

34、.c := SR_RefSys_0.c * R2D;/ 绝对坐标输出,端口号 0EXTPos.x:=server.Pos_x; / x 和 y 值用相机输出数据EXTPos.y:=server.Pos_y;EXTPos.z:=BasePos.z; / z、a、 b 用标准抓取位置值EXTPos.a:=BasePos.a;EXTPos.b:=BasePos.b;EXTPos.c:= SR_RefSys_0.c;/theta 用转换过的角度SetCartPos(Enable:=TRUE,PortNumber:=0,RobotCartPos:=EXTPos);/ 相对坐标输出,端口号 1EXTPos_1.x:=BasePos.x + se

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论