KUKA系统变量:$ERR汇总版V3.14

$ err
具有有关当前程序信息的结构
该变量可用于评估相对于提前运行的当前执行程序。例如,该变量可用于评估程序中的错误,以便能够使用适当的故障服务功能对其进行响应。
该变量具有写保护,只能被读取。
$err单独存在于robot和提交解释器。每个解释器只能访问自己的变量$命令解释器不存在err。
每个子程序级别都有自己的$err表示。这样,来自一个级别的信息不会覆盖来自不同级别的信息,并且可以同时从不同级别读取信息。
on_error_proceed隐式删除当前解释器和当前级别的$err中的信息。
$err=信息
信息类型:error_t
列出有关当前正在执行的程序的信息.
$err是结构类型为error_t的系统变量。error_t类型有一个表示当前解释器的组件。
在单次提交模式下,此组件只能使用值#r_int和#s_int。
对于多提交模式,可能的值范围已扩展到包括扩展的提交:
 #ext_s_int1  …  #ext_s_int7    变量结构:
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:提交解释器
多功能提交模式:  #r_int:机器人解释器  #s_int:系统提交解释器  #ext_s_int1:扩展型提交解释器 1  #ext_s_int2:扩展型提交解释器 2  
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 单独存在于机器人和提交解释器中。每个解释器只能访问自己的变量。命令解释器不存在 $err。
每个子程序级别都有自己的 $err 表示。这样,一个层次的信息不会覆盖不同层次的信息,可以同时读取不同层次的信息。
on_error_proceed 在当前解释器和当前级别隐式删除 $err 中的信息。
$err=information
information type: 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
on_error_proceed  错误继续
on_error_proceed 可用于抑制由以下程序行触发的运行时错误消息。机器人控制器跳过触发错误的语句,并用有关错误的信息填充系统变量 $err。
on_error_proceed 始终适用于以下行,即使这是一个空行!例外:如果以下行包含语句 continue,则 on_error_proceed 适用于后面的行。
如果 on_error_proceed 之后的行是子程序调用,则该语句引用调用本身,而不是子程序的第一行。
$err 和 err_raise() 是使用 on_error_proceed 时的重要工具。
函数 err_raise() 随后可以生成抑制的运行时错误消息。它只能将系统变量 $err 或从 $err 派生的变量作为 out 参数处理。
on_error_proceed 对运动语句没有影响:
样条/端线;ptp_spline/endspl ine;点对点;ptp_rel;
lin_rel; circ_rel; asyptp;停止;异步;异步取消;
move_emi
on_error_proceed 对以下控制结构没有影响:
为/endfor;去; if/else/endif;循环/endloop;重复/直到;
跳过/结束跳过;开关/外壳/默认/endswitch;同时/结束尽管
on_error_proceed with continue:
on_error_proceed
continue
$out[1]=true
continue
on_error_proceed
$out[1]=true
两个语句序列的效果是相同的。在这两个示例中,on_error_proceed 和 continue 作用于 $out[1]=true。
$err、on_error_proceed 和 err_raise() 的示例:
例1
如果您不想抑制所有可能的运行时错误消息,而只希望抑制特定的错误消息,则可以使用 switch ... endswitch 进行区分。在此示例中,仅抑制消息 1422。将显示任何其他运行时错误消息。
 1  def myprog ()
 2  decl e6pos mypos
 3  ini
 4  on_error_proceed
 5  mypos = $pos_int
 6  switch ($err.number)
 7    case 0
 8    case 1422
 9       ;如果需要,程序故障服务功能
         ...
10    default
11       err_raise ($err)
12  endswitch
    ...
13  end
4-5第 5 行触发消息 1422 {$variable} value invalid(除非程序被中断调用)。前一行中的 on_error_proceed 会抑制错误消息。
6 … 12取决于 $err.number 的差异化
7  如果第 5 行没有发生错误,$err.number==0。在这种情况下,不需要任何操作。
8, 9  如果消息 1422 已被触发,$err.number==1422。如果需要,可以对故障服务功能进行编程。
10, 11 如果触发了 1422 以外的消息,则现在(随后)通过 err_raise 生成此消息。
这个例子说明了每个程序级都有自己的$err表示。  1  def mymainprog ()  2  int myvar, myvar2  3  ini  4  on_error_proceed  5  mysubprog (myvar) 第5行触发消息1422{$variable}值无效,因为myvar未初始化,因此无法传输到子程序。
预编码行中的on_error_proceed将抑制错误消息。
5  mysubprog (myvar)  如果此处使用变量校正函数读取$err,则以下组件具有以下值:
$err。编号==1422
$err。line_nr==15
$err。模块[]==“mymainprog”
$err。up_name[]==“mymainprog”
6  halt  7  myvar2 = 7  8  mysubprog (myvar2)  9  end --------------------------------------- 10  def mysubprog (mytest:in) 11  int mytest 12  halt 13  end 如果在子程序中使用变量纠正函数读取$err,则以下组件具有以下值:
$err。数字==0
$err。line_nr==0
$err。模块[]==“mymainprog”
$err。up_name[]==“mysubprog”
这清楚地表明,$e rr始终具有来自当前级别的信息(在本例中来自子程序mysubprog)。另一方面,mymainprog的信息未知。
此示例还显示了每个程序级别都有自己的$err表示。该示例还显示了如何将$err信息传输到不同的级别。
 1  def mymainprog2 ()
 2  ini
 3  on_error_proceed
 4  $out[-10] = true
第4行触发消息1444阵列索引不可接受on_error_proceed,在前一行中抑制错误消息。
 5  myhandleerr ($err, $err)
$err的内容被传输到子程序两次:一次作为in参数,一次作为out参数。
 6  end
---------------------------------------
 7  def myhandleerr (inerr:in, outerr:out)
 8  decl error_t inerr, outerr
 9  on_error_proceed
10  $ov_pro=100/0
第10行触发消息1451除以0.on_error_proceed,在前一行中抑制错误消息。
11  err_raise($err)
err_raise($err)从第10行生成消息,而不是从第4行生成消息。$err始终具有当前级别的信息。在本例中,从子程序myhandleerr。
12  err_raise(outerr)
err_raise(outerr)从主程序的第4行生成消息,因为outerr是对主程序中$err的引用。
13  err_raise(inerr)
err_raise(inerr)不允许,因此触发消息1451{(变量名)}无效参数。err_raise只能处理$err或从$err派生的out变量。     ...
14  end
$err不仅可用于错误处理,还可用于确定当前环境。 在本例中,参数从机器人程序和提交程序转换为子程序。在子程序中,系统确定参数来自哪个解释器。执行的操作取决于结果。 机器人程序:
  def main ()
  ...
  mysub (55)
  ...
  end
提交程序:   def sps ()   ...   loop      mysub (33)      ...   endloop   ...   end   子程序:   global def mysub (par:in)   int par   ini   if ($err.interpreter==#r_int) then      $out_c[par] = true      else      $out[par] = true   endif   ...   end
与$err故障变量相关联的函数
清除与$err相关的过程故障信息:
err_clear (error_t perr :out )
产生与$err相关的过程故障信息:
err_raise (error_t perr :out )
-----------------------end---------------------


亚马逊宣布推出正式版的基于WebX的Sumerian工具,可以让所有人轻松创作出ARVR内容
工业机器人“关节”为何有如何高的精度,真相大揭秘
CASAIM沙盘模型3D打印的优势和应用
太阳系内发现太空 “高速公路”网络,可大大缩短太空旅行的时间
苹果 | iOS 13允许用户从更新列表中删除应用程序!
KUKA系统变量:$ERR汇总版V3.14
5G安防机器人助力防疫工作
三星又一次稳坐全球彩电市场第一宝座
全新小型PLC让大型独立机器不再复杂
华为史上最贵的手机 华为Mate9/9Pro渲染图曝光
从操作系统层面解读可穿戴设备
Arm与中国联通合作,将打造全新物联网平台
毫米波雷达传感器在机器人系统中的应用分析
车载音响自动检测播放电路
区块链监管靠其本身完成可能吗
红外点阵温度传感器校准应用
深度图像的获取方法主要有哪些
怎样轻松克隆SD卡以实现无故障的树莓派计算
NB-IoT的应用分类有哪些,它的技术特点是什么
东风科技汽车技术中心领导一行莅临中科创达