首页 ABB机器人的错误处理

ABB机器人的错误处理

举报
开通vip

ABB机器人的错误处理ABB机器人的错误处理 ABB机器人的错误处理 errnum 数据类型 errnum用于描述在执行过程中,发生的所有可恢复的错误。例如程序执行时,被零除。如果机器人程序执行过程中检测到一个错误,错误非致命,可以被错误处理程序处理。这类错误的典型例子是过大的值或者被零除。 errnum 类型的系统变量errno,根据不同的错误性质,分配不同的值。错误处理程序可以通过读取这个变量来纠正错误,然后执行程序可以正确的方式继续运行。 错误也可以通过使用RAISE指令在程序中创建。错误处理程序通过指定一个能检测到该特...

ABB机器人的错误处理
ABB机器人的错误处理 ABB机器人的错误处理 errnum 数据类型 errnum用于描述在执行过程中,发生的所有可恢复的错误。例如程序执行时,被零除。如果机器人程序执行过程中检测到一个错误,错误非致命,可以被错误处理程序处理。这类错误的典型例子是过大的值或者被零除。 errnum 类型的系统变量errno,根据不同的错误性质,分配不同的值。错误处理程序可以通过读取这个变量来纠正错误,然后执行程序可以正确的方式继续运行。 错误也可以通过使用RAISE指令在程序中创建。错误处理程序通过指定一个能检测到该特定类型的错误号(范围1-90内或通过BookErrNo指令预订)作为RAISE的参数。 示例: reg1 := reg2 / reg3; ... ERROR IF ERRNO = ERR_DIVZERO THEN reg3 := 1; RETRY; ENDIF 如果REG3= 0,机器人除法时检测到发生的错误。这个错误可以被检测并通过分配REG3的值为1予以纠正。因此除法可再次被执行,程序可以继续执行。 CONST errnum machine_error := 1; ... IF di1=0 RAISE machine_error; ... ERROR IF ERRNO=machine_error RAISE; 机器人通过信号DI1检测出现的错误。跳转到错误处理程序。调用的错误处理程序调,纠正这个错误。machine_error 作为一个常数,用来让错误处理程序确切知道发生的是哪种错误的类型。 预定义的错误类型 系统变量ERRNO 可以用于读取最后一次发生的错误。许多预定义常量可以用来确定发生的错误类型。(ABB 编程手册1179 page) 关于raise RAISE用于在程序中产生一个错误,并调用程序的错误处理函数。RAISE 同样可以在错误处理函数中使用,将当前错误传送给调用程序的错误处理函数。 这个指令可以用于跳回高一层的程序结构,例如,底层的错误返给主程序的错误处理函数。 参数: RAISE [ Error no. ] Error no的数据类型为errnum。Error number: 错误处理程序可以通过ERRNO系统变量查找1和90之间任意数字的错误。 举例: MODULE MainModule VAR errnum ERR_MY_ERR := -1; PROC main() BookErrNo ERR_MY_ERR; IF di1 = 0 THEN RAISE ERR_MY_ERR; ENDIF ERROR IF ERRNO = ERR_MY_ERR THEN TPWrite "di1 equals 0"; ENDIF ENDPROC ENDMODULE 如果di1 等于0 产生一个错误. RAISE 会将程序推动到错误处理程序处执行。在这个程序中,用户创建了自己的错误号处理指定的错误。. 通过BookErrNo注册错误号并使用。 MODULE MainModule VAR num value1 := 10; VAR num value2 := 0; PROC main() routine1; ERROR IF ERRNO = ERR_DIVZERO THEN value2 := 1; RETRY; !RETRY 指令用于当一个错误发生时,重新运行引起错误的指令。 ENDIF ENDPROC PROC routine1() value1 := 5/value2;!当value2为0的时候,这将导致一个错误。 ERROR RAISE; ENDMODULE 关于错误处理 TRYNEXT - 跳过产生错误的指令,继续运行。TRYNEXT 指令用于在产生一个错误后,程序运行产生错误的下一条语句。 示例 reg2 := reg3/reg4; ... ERROR IF ERRNO = ERR_DIVZERO THEN reg2:=0; TRYNEXT; ENDIF RETRY 指令用于从引起错误的地方恢复程序继续运行。 示例: reg2 := reg3/reg4; ... ERROR IF ERRNO = ERR_DIVZERO THEN reg4 :=1; RETRY; ENDIF reg3除以reg4,如果reg4等于0(零),那么跳转到错误处理程序,重新为reg4赋值。然后RETRY从错误处理程序跳出,回到产生错误的除法指令,执行除法指令。 错误处理程序与机器人运动示例(在机器人运动过程中产生某种错误时,如何在自动模式下恢复错误) PROC CONST robtarget service_pos := [...]; VAR robtarget stop_pos; ... ERROR IF ERRNO = AW_WELD_ERR THEN ! Current movement on motion base path level is already stopped. ! New motion path level for new movements in the ERROR handler ! Store current position from motion base path level stop_pos := CRobT(\Tool:=tool1, \WObj:=wobj1); ! Do the work to fix the problem MoveJ service_pos, v50, fine, tool1, \WObj:=wobj1; ... ! Move back to the position on the motion base path level MoveJ stop_pos, v50, fine, tool1, \WObj:=wobj1; ! Go back to motion base path level RestoPath; ! Restart the stopped movements on motion base path level, ! restart the process and retry program execution StartMoveRetry; ENDIF ENDPROC
本文档为【ABB机器人的错误处理】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_751406
暂无简介~
格式:doc
大小:20KB
软件:Word
页数:7
分类:互联网
上传时间:2019-04-18
浏览量:114