$ err
具有有关当前程序信息的结构
该变量可用于评估相对于提前运行的当前执行程序。例如,该变量可用于评估程序中的错误,以便能够使用适当的故障服务功能对其进行响应。
该变量具有写保护,只能被读取。
$ERR=Information
信息类型:Error_T
列出有关当前正在执行的程序的信息.
变量结构:
STRUC Error_T INT number, PROG_INT_Einterpreter, 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
触发属于子程序的触发器的上下文
1.#TRG_NONE:该子程序不是触发子程序。#TRG_REGULAR:在向前运动期间切换了触发器子程序。#TRG_BACKWARD:触发子程序在向后运动期间被切换。
2.#TRG_RESTART:触发子程序已打开,切换回正向运动。
3.#TRG_REPLAY:触发子程序在向后运动后反复切换。
注意:此组件在KUKA System Software 8.3或更高版本中可用。
$ERR不仅可以用于错误处理,还可以用于确定当前环境。
在本例中,参数从robot程序和submit程序传递到子例程。子程序确定参数源自哪个解释器。根据结果,将执行另一个操作。
机器人程序:
DEF Main ()
...
my_prog (55)
...
END
提交Programm::
DEF my_sub ()
...
LOOP
my_prog (33)
...
ENDLOOP
...
END
Unter programm:
GLOBAL DEF my_prog (par:IN)
INT par
INI
SWITCH $ERR.interpreter
CASE #R_INT
$OUT[par] = TRUE
CASE #S_INT
sub_prog_s()
CASE #EXT_S_INT1
sub_prog_1()
CASE #EXT_S_INT2
sub_prog_2()
CASE #EXT_S_INT3
sub_prog_3()
...
ENDSWITCH
...
END
此示例显示,每个程序级别都有自己的$ERR重新表示。
1 DEF myMainProg ()
2 INT myVar, myVar2
3 INI
4 ON_ERROR_PROCEED
5 mySubProg (myVar)
第5行实际触发消息1422{$Variable}Invalid,因为myVar未初始化,因此无法传递给子程序。前一行中的ON_ERROR_PROCEED禁止显示该消息。
6 HALT
如果您从此处的变量显示中读取$ERR,则以下组件具有以下值:
$ERR.number===1422
$ERR.line_nr==15
$ERR.module[]===MYMAINPROG“
$ERR.up_name[]===MYMAINPROG“
7 myVar2 = 7
8 mySubProg (myVar2)
9 END
---------------------------------------
10 DEF mySubProg (myTest:IN)
11 INT myTest
12 HALT
如果从变量显示中读取$ERR,则以下组件具有以下值:
$ERR.number==0
$ERR.line_nr==0
$ERR.module[]===MYMAINPROG“
$ERR.up_name[]===MYSUBPROG“
这表明:$ERR总是具有来自当前级别的信息(此处来自子程序MySubProg)。另一方面,来自MyMainProg的信息是未知的。
13 END
ERR_RAISE:稍后输出抑制消息
ERR_RAISE随后可以输出用ON_ERROR_PROCEED抑制的消息。
ERR_RAISE只能处理$ERR或从$ERR派生的变量作为OUT参数。
ERR_RAISE ($ERR | out_var)
审核编辑:黄飞
全部0条评论
快来发表一下你的评论吧 !