$ err
具有有关当前程序信息的结构
该变量可用于评估相对于提前运行的当前执行程序。例如,该变量可用于评估程序中的错误,以便能够使用适当的故障服务功能对其进行响应。
该变量具有写保护,只能被读取。
该变量可用于评估相对于提前运行的当前执行程序。例如,该变量可用于评估程序中的错误,以便能够使用适当的故障服务功能对其进行响应。
该变量具有写保护,只能被读取。
$ ERR对于机器人和提交解释器是分别存在的。每个解释器只能访问其自己的变量。对于命令解释器,$ ERR不存在。
每个子程序级别都有其自己的$ ERR表示形式。这样,来自一个级别的信息不会覆盖来自不同级别的信息,并且可以同时从不同级别读取信息。
ON_ERROR_PROCEED在当前解释器和当前级别从$ ERR隐式删除信息。
$ERR=Information
信息类型:Error_T
列出有关当前正在执行的程序的信息.
STRUC Error_T INT number, PROG_INT_E interpreter, INT_TYP_E int_type, INT int_prio, line_nr, CHAR module[24], up_name[24], TRIGGER_UP_TYPE trigger_type
Number:发生运行时错误时的消息编号。如果未发生错误,则显示零值。
Interpreter:当前解释器
#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[]当前子程序的目录和名称
trigger_type
触发属于子程序的触发器的上下文
#TRG_NONE:该子程序不是触发子程序。
#TRG_REGULAR:在向前运动期间切换了触发器子程序。
#TRG_BACKWARD:触发子程序在向后运动期间被切换。
#TRG_RESTART:触发子程序已打开,切换回正向运动。
#TRG_REPLAY:触发子程序在向后运动后反复切换。
注意:此组件在KUKA System Software 8.3或更高版本中可用。
如何使用呢?
1.ERR_RAISE() 的示例:
如果不想不输出所有可能存在的运行时间错误信息,而是只不输出特定的信息,则可以通过 SWITCH … ENDSWITCH 进行该区分。在该示例中只不输出信息 1422。可能存在的其他运行时间错误信息将显示。
1 DEF myProg ()
2 DECL E6POS myPos
3 INI
4 ON_ERROR_PROCEED
5 myPos = $POS_INT
行 5 将触发信息 1422 {$ 变量 } 值无效 。(此外由中断调用该程序。)
6 SWITCH ($ERR.NUMBER) 情况区分取决于 $ERR.NUMBER获取机器人故障号
7 CASE 0
如果在行 5 中未出现错误,则 $ERR.NUMBER==0。在这种情况下不需要任何操作。
8 CASE 1422
如果触发了信息 1422,则 $ERR.NUMBER==1422。在需要时可以编程设定一个错误策略。
9 ;在需要时编程设定错误策略
...
10 DEFAULT
11 ERR_RAISE ($ERR)
如果触发了一个不同于 1422 的信息,则现在 (随后)通过 ERR_RAISE 输出该信息。
12 ENDSWITCH
...
13 END
2.ON_ERROR_PROCEED的示例:
1 DEF myMainProg ()
2 INT myVar, myVar2
3 INI
4 ON_ERROR_PROCEED
行 5 触发信息 1422 {$ 变量 } 值无效 ,因为 myVar 未安装,因此无法将其传输给子程序。该行中的 ON_ERROR_PROCEED 事先抑制错误信息。
5 mySubProg (myVar)
6 HALT
如果在此通过变量修正读取 $ERR,则以下分量具有以下值:$ERR.number == 1422/$ERR.line_nr == 15/$ERR.module[] == "MYMAINPROG"/ $ERR.up_name[] == "MYMAINPROG".
3.$ ERR不仅可以用于错误处理,还可以用于确定当前环境。
在此示例中,参数从机器人程序和提交程序都转换为子程序。在子程序中,系统确定参数来自哪个解释器。所执行的操作取决于结果。
机器人程序:
GLOBAL DEF mySUB (par:IN)
INT par
INI
IF ($ERR.INTERPRETER==#R_INT) THEN -如果故障时机器人解释器-发出输出
$OUT_C[par] = TRUE
ELSE
$OUT[par] = TRUE
ENDIF
编辑:jq
全部0条评论
快来发表一下你的评论吧 !