1
PERS wobjdata mywobj := ... ; 2
PERS tooldata mytool := ... ; 3
PERS robtarget myrobtarget := ... ; 4
CONST string myjob := "myjob.job";
5
VAR cameratarget mycameratarget;
6
...
7
PROC MoveToDetectedObject() CamSetProgramMode mycamera;
8 9
CamLoadJob mycamera, myjob;
10
CamSetRunMode mycamera;
11
CamReqImage mycamera;
12
CamGetResult mycamera, mycameratarget;
13
mywobj.oframe := mycameratarget.cframe;
14
MoveL myrobtarget, v100, fine, mytool \WObj:=mywobj;
15
16 ENDPROC 17 ...
66 应用手册 - Integrated Vision
5.10.2 基本编程示例
有关如何创建模块、创建例行程序和添加 RAPID 指令的信息,请参阅操作员手册 - 带 FlexPendant 的 IRC5中的编程与测试一章。
训练部件夹持位置
夹持部件通常与移动 TCP 到摄像头报告的目标并不一样。通常必须首先复位此位置然 后旋转一定值以实现良好夹持。
最简单的方法是微调机器人到指定位置,然后修改位置。
操作
确保摄像头只能看到一个部件。
1
运行前面的示例程序到MoveL指令并停止执行。
2
此时mywobj的对象框架已经修改,正确的工具mytool已经激活。
确认图像摄像头成功地找到了该部件的位置。
3
微动调节机器人到适合夹持的位置。
4
标记位置myrobtarget并点击 Modify Position(修改位置)。
5
从头与运行程序,确保部件是按预定的位置夹持的。
6
移动部件,然后再次重头运行程序。
7
应用手册 - Integrated Vision 67
5.10.2 基本编程示例 续前页
5.10.3 高级编程示例
简介
下列示例展示了部分可以在运行图像引导机器人程序时使用的较高级功能。示例展示 了错误处理、场景ID的使用以及其他增加生产效率和节省周期时间的方法。
数据声明
CONST string myjob := "myjob.job";
PERS robtarget myrobtarget :=
[[100,200,300],[1,0,0,0],[0,0,0,0],[9E9,9E9,9E9,9E9,9E9,9E9]];
VAR cameratarget mycameratarget;
...
PROC integratedvisionadvanced() VAR num mysceneid:=0;
VAR num myexposuretime:=10;
VAR bool targetsavailable := TRUE;
...
! Insert the code here ...
ENDPROC
异步加载
在移动机器人时异步加载作业作业,然后在作业完成加载后立即采集图像。这可以让 机器人在加载时执行其他任务,从而节省了周期时间。
CamSetProgramMode mycamera;
CamStartLoadJob mycamera, myjob;
!MoveJ myrobtarget, v100, fine, toolvision \WObj:=wobjvision;
CamWaitLoadJob mycamera;
CamSetRunMode mycamera;
CamReqImage mycamera;
使用SceneId参数
获取图像并在结果可用时立即获取结果。使用SceneId参数可以实现在最新图片中 没有找到目标时快速通知用户。
CamReqImage mycamera \SceneId:=mysceneid;
CamGetResult mycamera, mycameratarget \SceneId:=mysceneid;
更换参数
在当前曝光时间上增加 5 ms
myexposuretime := CamGetExposure (mycamera \ExposureTime);
myexposuretime := myexposuretime + 5;
CamSetExposure mycamera \ExposureTime:=myexposuretime;
禁用一个图像工具
在指定作业禁用特定图像工具。为了防止耗时的作业加载,可能有人会喜欢在一个作 业中配置多个配置图像工具。通过启用和禁用当前未使用的工具,可以将处理时间降 到最低。
CamSetParameter mycamera, "Pattern_1.Tool_Enabled" \BoolVal:=FALSE;
下一页继续
68 应用手册 - Integrated Vision
5.10.3 高级编程示例
查找多个部件
在一个图像中查找多个部件并逐个使用目标。当没有目标剩下时会产生错误 ERR_CAM_NO_MORE_DATA,请参阅
第69页的ERROR 处理程序。
CamReqImage mycamera \SceneId:=mysceneid;
WHILE targetsavailable DO
CamGetResult mycamera, mycameratarget \SceneId:=mysceneid;
TPWrite "Current camera target is: "
\Pos:=mycameratarget.cframe.trans;
ENDWHILE
检查作业是否已经加载
为了节省周期时间,应该只有在作业尚未加载时才可以被加载到摄像头内存。
IF CamGetLoadedJob(mycamera) <> myjob THEN CamLoadJob mycamera, myjob;
ENDIF
按名称将部件分类
根据部件的名称属性将部件分类。
CamGetResult mycamera, mycameratarget;
IF mycameratarget.name = "wrench" THEN
!Do something with the wrench
ELSEIF mycameratarget.name = "screwdriver" THEN
!Do something with the screwdriver ENDIF
ERROR 处理程序
ERROR
IF ERRNO = ERR_CAM_NO_MORE_DATA THEN
TPWrite "There are no more targets originating from image with scene id "\Num:=mysceneid;
targetsavailable:=FALSE;
TRYNEXT;
ENDIF
应用手册 - Integrated Vision 69
5.10.3 高级编程示例 续前页
5.11 开始生产
设置摄像头为运行模式
要开始并进行生产,摄像头必须处于运行模式。摄像头可以手动从 RobotStudio 设置 为运行模式。这主要用于测试目的。
推荐的做法是使用CamSetRunMode指令从 RAPID设置运行模式。
启动机器人程序
从 FlexPendant 的 生产窗口启动程序。
70 应用手册 - Integrated Vision
5.11 开始生产