扫一扫
手机浏览

查看: 4984|回复: 8
打印 上一主题 下一主题

ABB机器人的数据类型错误处理

[复制链接]

86

主题

86

帖子

575

积分

注册会员

Rank: 2

积分
575
跳转到指定楼层
楼主
发表于 2020-4-15 14:47:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  abb机器人的数据类型错误处理
  errnum用于描述在执行过程中,发生的所有可恢复的错误。例如程序执行时,被零除。如果机器人程序执行过程中检测到一个错误,错误非致命,可以被错误处理程序处理。这类错误的典型例子是过大的值或者被零除。errnum类型的系统变errno,根据不同的错误性质,分配不同的值。错误处理程序可以通过读取这个变量来纠正错误,然后执行程序可以正确的方式继续运行。
  错误也可以通过使用RAISE指令在程序中创建。错误处理程序通过指定一个能检测到该特定类型的错误号(范围1-90内或通过BookErrNo指令预订)作为RAISE的参数。
  示例:
  reg1:=reg2/reg3;
  ERROR
  IFERRNO=ERR_DIVZEROTHEN
  reg3:=1;
  RETRY;
  ENDIF
  如果REG3=0,机器人除法时检测到发生的错误。这个错误可以被检测并通过分配REG3的值为1予以纠正。因此除法可再次被执行,程序可以继续执行。
  CONST
  errnummachine_error:=1;
  IF di1=0RAISEmachine_error;
  ERROR
  IFERRNO=machine_errorRAISE;
  机器人通过信号DI1检测出现的错误。跳转到错误处理程序。调用的错误处理程序调,纠正这个错误。machine_error作为一个常数,用来让错误处理程序确切知道发生的是哪种错误的类型。
  系统变量ERRNO可以用于读取最后一次发生的错误。许多预定义常量可以用来确定发生的错误类型。关于raise,RAISE用于在程序中产生一个错误,并调用程序的错误处理函数。RAISE同样可以在错误处理函数中使用,将当前错误传送给调用程序的错误处理函数。这个指令可以用于跳回高一层的程序结构,例如,底层的错误返给主程序的错误处理函数。
  参数:
  RAISE [Error no]
  Error no的数据类型为errnum。Errornumber:错误处理程序可以通过ERRNO系统变量查找1和90之间任意数字的错误。
  举例:
  MODULEMainModule
  VAR errnumERR_MY_ERR:=-1;
  PROC main( )
  BookErrNoERR_MY_ERR;
  IF=0THEN
  RAISEERR_MY_ERR;
  ENDIF
  ERROR
  IF ERRNO=ERR_MY_ERR
  THENTPWrite"di1equals 0";
  ENDIF
  ENDPROC
  ENDMODULE
  如果di1等于0产生一个错误。RAISE会将程序推动到错误处理程序处执行。在这个程序中,用户创建了自己的错误号处理指定的错误。通过BookErrNo注册错误号并使用。
  MODULEMainModule
  VAR numvalue1:=10;
  VAR numvalue2:=0;
  PROC main()
  routine1;
  ERROR
  IFERRNO=ERR_DIVZEROTHEN
  value2:=1;
  RETRY;RETRY指令用于当一个错误发生时,重新运行引起错误的指令。
  ENDIF
  ENDPROC
  PROCroutine1( )
  value1:=5/value2;当value2为0的时候,这将导致一个错误。
  ERROR
  RAISE;
  ENDPROC
  ENDMODULE
  关于错误处理,TRYNEXT-跳过产生错误的指令,继续运行。TRYNEXT指令用于在产生一个错误后,程序运行产生错误的下一条语句。
  示例:
  reg2:=reg3/reg4;
  ERROR
  IF ERRNO=ERR_DIVZEROTHEN
  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
  CONSTrobtarget service_pos:=[...];
  VARrobtargetstop_pos;
  ERROR
  IFERRNO=AW_WELD_ERRTHEN
  Currentmovement on motion base pathlevel is already stopped.
  New motionpath level for newmovements in the ERROR handler
  StorePath;
  Storecurrent position from motionbase path level
  stop_pos:=CRobT(\Tool:=tool1,\WObj:=wobj1);
  !Do the workto fix the problem
  MoveJservice_pos,v50,fine,tool1,\WObj:=wobj1;
  Move backto the position on themotion base path level
  MoveJstop_pos,v50,fine,tool1,\WObj:=wobj1;
  Go back tomotion base path leveRestoPath;
  Restart thestopped movements onmotion base path level,
  restart theprocess and retryprogram execution
  StartMoveRetry;
  ENDIF
  ENDPROC

【工业机器人维修,机器人保养。 24小时紧急维修,问题解答,免费检测。 请拔打15889988091】

使用道具 举报

0

主题

0

帖子

0

积分

注册会员

Rank: 2

积分
0
沙发
发表于 2020-4-15 17:06:56 | 只看该作者
看贴回贴是美德
【工业机器人维修,机器人保养。 24小时紧急维修,问题解答,免费检测。 请拔打15889988091】

使用道具 举报

2

主题

1

帖子

11

积分

注册会员

Rank: 2

积分
11
板凳
发表于 2020-4-16 00:53:19 | 只看该作者
需再关注关注
【工业机器人维修,机器人保养。 24小时紧急维修,问题解答,免费检测。 请拔打15889988091】

使用道具 举报

0

主题

0

帖子

0

积分

注册会员

Rank: 2

积分
0
地板
发表于 2020-4-16 01:48:57 | 只看该作者
困难在于自己
【工业机器人维修,机器人保养。 24小时紧急维修,问题解答,免费检测。 请拔打15889988091】

使用道具 举报

0

主题

0

帖子

0

积分

注册会员

Rank: 2

积分
0
5#
发表于 2020-4-16 14:05:55 | 只看该作者
好东西一定要看看!
【工业机器人维修,机器人保养。 24小时紧急维修,问题解答,免费检测。 请拔打15889988091】

使用道具 举报

0

主题

24

帖子

22

积分

注册会员

Rank: 2

积分
22
6#
发表于 2020-4-17 09:07:45 | 只看该作者
自己的楼自己顶
【工业机器人维修,机器人保养。 24小时紧急维修,问题解答,免费检测。 请拔打15889988091】

使用道具 举报

0

主题

0

帖子

-2

积分

注册会员

Rank: 2

积分
-2
7#
发表于 2020-4-17 16:25:59 | 只看该作者
发现还不错,那里的资料我都很喜欢哦
【工业机器人维修,机器人保养。 24小时紧急维修,问题解答,免费检测。 请拔打15889988091】

使用道具 举报

0

主题

0

帖子

-2

积分

注册会员

Rank: 2

积分
-2
8#
发表于 2020-4-18 19:04:51 | 只看该作者
今天没事来逛逛,看了一下,感觉相当的不错
【工业机器人维修,机器人保养。 24小时紧急维修,问题解答,免费检测。 请拔打15889988091】

使用道具 举报

0

主题

25

帖子

25

积分

注册会员

Rank: 2

积分
25
9#
发表于 2020-4-19 19:53:59 | 只看该作者
感谢您的分享!
【工业机器人维修,机器人保养。 24小时紧急维修,问题解答,免费检测。 请拔打15889988091】

使用道具 举报

子锐机器人
机器人维修论坛APP下载