$错误
包含当前程序信息的结构
该变量可用于评估相对于提前运行的当前执行。例如,该变量可用于评估程序中的错误,以便可以使用适当的故障服务函数来响应这些错误。
该变量是写保护的,只能读取。
该变量可用于评估相对于提前运行的当前执行。例如,该变量可用于评估程序中的错误,以便可以使用适当的故障服务函数来响应这些错误。
该变量是写保护的,只能读取。
$ERR 分别针对机器人和提交解释器存在。每个解释器只能访问自己的变量。对于命令解释器来说,$ERR 不存在。
每个子例程级别都有自己的$ERR 表示形式。这样,一个级别的信息不会覆盖其他级别的信息,并且可以同时读取不同级别的信息。
ON_ERROR_PROCEED 隐式地从当前解释器和当前级别的$ERR 中删除信息。
$ERR=信息
消息类型:Error_T
列出有关当前正在执行的程序的信息。
STRUC Error_T INT 编号、PROG_INT_E 解释器、INT_TYP_E int_type、INT int_prio、line_nr、
CHAR 模块[24]、up_name[24]、TRIGGER_UP_TYPE 触发器类型
Number: 发生运行时错误时的消息号。如果没有发生错误,则显示零值。
口译员:当前口译员
#R_INT:机器人翻译器
#S_INT:提交解释器
int_type 当前图片类型和中断状态
#I_NORMAL:该程序不是中断程序。
#I_INTERRUPT:该程序是一个中断程序。
#I_STOP_INTERRUPT:通过$STOPMESS 中断(出错时停止)
int_prio 中断优先级
1, 2, 4…39
81…128
line_nr当前程序中的行号
module[]当前程序的目录和名称
up_name[]当前子程序的目录和名称
触发器类型
属于子例程的触发器触发的上下文
#TRG_NONE:该子程序不是触发子程序。
#TRG_REGULAR:向前运动期间切换的触发子程序。
#TRG_BACKWARD:向后移动时切换触发子程序。
#TRG_RESTART:触发子程序已打开,切换回向前运动。
#TRG_REPLAY:后退后触发重复切换的子程序。
注意:该组件在KUKA 系统软件8.3 或更高版本中可用。
如何使用它?
1.ERR_RAISE()的示例:
如果您不想抑制所有可能的运行时错误消息,而只想抑制特定消息,则可以通过SWITCH . ENDSWITCH 进行区分。在此示例中,仅不输出消息1422。将显示可能的其他运行时错误消息。
1 DEF myProg ()
2 DECL E6POS myPos 2 DECL E6POS myPos
3 INI
4 错误继续
5 我的位置=$POS_INT
第5 行将触发消息1422 {$variable} invalid value。 (该例程也由中断调用。)
6 SWITCH ($ERR.NUMBER) 根据$ERR.NUMBER进行情况区分,获取机器人故障号
7 案例0
如果第5 行没有发生错误,则$ERR.NUMBER==0。在这种情况下无需采取任何措施。
8 案例1422
如果触发消息1422,则$ERR.NUMBER==1422。如果需要,可以对错误策略进行编程。
9;需要时制定错误策略
.
10默认
11 ERR_RAISE($ERR)
如果触发1422 以外的消息,则该消息现在(以及随后)通过ERR_RAISE 输出。
12端开关
.
13结束
2.ON_ERROR_PROCEED的示例:
1 DEF myMainProg ()
2INT myVar, myVar2
3 INI
4 错误继续
第5 行触发消息1422 {$variable} 的值无效,因为未安装myVar,因此无法传输到子例程。此行中的ON_ERROR_PROCEED 会预先抑制错误消息。
5 mySubProg(myVar)
6 暂停
如果通过变量校正在此处读取$ERR,则以下组件具有以下值: $ERR.number==1422/$ERR.line_nr==15/$ERR.module[]=='MYMAINPROG'/$ERR.up_name []=='我的主程序'。
3.$ERR不仅可以用于错误处理,还可以用于确定当前环境。
在此示例中,参数从机器人程序和提交程序转换为子例程。在子例程中,系统确定参数来自哪个解释器。执行的操作取决于结果。
机器人程序:
GLOBALDEF mySUB (par:IN)
INTpar
INI
IF($ERR.INTERPRETER==#R_INT) THEN - 如果机器人解释器失败- 发出输出
$OUT_C[par]=TRUE
别的
$OUT[par]=TRUE
万一
.
结尾
审稿人:刘庆