15.4.22 中断指令
15.4.22.1 IRegister — 注册中断
说明: 注册中断,确定中断是否可以单次触发、是否可调试(单步、单步暂停下触发中断),以及中断号、触发信号、触发类型。一个触发源只能绑定一个中断函数。
定义:
IRegister([\SINGLE,][\DEBUG,][\LOGIC,] int_num, signal, trigger_type, trap_function);
//[]内为可选项
-
int_num:数据类型:中断号变量,用作中断的标识。 -
signal:寄存器信号/DI 信号。 -
trigger_type:触发方式。-
DI 信号触发方式:
-
\Posflank:上升沿触发 -
\Negflank:下降沿触发 -
\Highlevel:高电平触发 -
\Lowlevel:低电平触发 -
注意:高低电平触发会持续触发中断
-
寄存器(int\bool\bit\byte)触发方式:0 代表低电平,非 0 代表高电平。
-
-
trap_function:中断函数名。 -
\SINGLE:单次触发,可选项。 -
\DEBUG:可调试,可选项,添加此参数后可在单步、单步暂停状态触发中断。 -
\LOGIC:逻辑中断,可选项,添加此参数后,触发中断后不会打断机器人运动。
示例:
IRegister(\SINGLE, \DEBUG, intnum0, DI1_0, \Posflank, "trapfun1");
//注册中断,当DI 信号DI1_0 发生上升沿变化时,执行trapfun1 函数,触发一次后不再响应此中断;此中断可在单步和单步暂停状态触发;intnum0 为此中断的标识符,用于IEnable、IDisable、GetTrapData 指令
15.4.22.2 IVRegister — 注册变量中断
说明: 指定一个被监控变量并绑定中断,当变量变化或变化为指定值时,则触发中断。
定义:
IVRegister([\SINGLE,][\DEBUG,][\LOGIC,] int_num, varname, TrigMode, [specific_value], trap_function);
-
int_num:数据类型:中断号变量,用作中断的标识。 -
varname:变量名。 -
TrigMode:触发方式。-
\CHANGE:变量发生变化时触发。 -
\SPECIFICVALUE:变量变化为指定值时触发。
-
-
specific_value:比较值,需要与varname相同类型,可选项,跟随\SPECIFICVALUE使用。 -
trap_function:中断函数名。 -
\SINGLE:单次触发,可选项。 -
\DEBUG:可调试,可选项,添加此参数后可在单步模式未运行状态触发中断。 -
\LOGIC:逻辑中断,可选项,添加此参数后,触发中断后不会打断机器人运动。
变量可选范围:
-
需要是全局变量(变量列表中)。
-
bool、byte、double、int类型。
说明:
-
如果变量被快速修改,可能会丢失一些次数的中断;如果在执行中断程序读取变量数值时,无法确保读取的数值就是引起中断的数值。
示例:
IVRegister \SINGLE, \DEBUG, intnum1, global_var, \CHANGE, "trapfun2";
// 注册变量中断,当 global_var 发生变化时,执行 trapfun2 函数,触发一次后不再响应此中断;此中断可在单步模式未运行状态触发
15.4.22.3 ITRegister — 注册定时中断
说明: 给定一个周期时间 $t$,让程序周期性地触发中断。
定义:
ITRegister([\SINGLE,][\DEBUG,][\LOGIC,] int_num, time_gap, trap_function);
-
int_num:数据类型:中断号变量,用作中断的标识。 -
time_gap:时间间隔,int类型。 -
trap_function:中断函数名。 -
\SINGLE:单次触发,可选项。 -
\DEBUG:可调试,可选项,添加此参数后可在单步模式未运行状态触发中断。 -
\LOGIC:逻辑中断,可选项,添加此参数后,触发中断后不会打断机器人运动。
说明:
-
不能严格根据定时时间触发,会有延迟,延迟来自计时函数本身的误差和调用消耗。
示例:
ITRegister intnum0, 3, "trapfun1";
// 注册中断,每过三秒,执行 trapfun1 函数
15.4.22.4 IGRegister — 注册GI信号中断
说明: 注册 GI 信号触发中断,当 GI 信号发生变化时触发中断。
定义:
IGRegister([\SINGLE,][\DEBUG,][\LOGIC,] int_num, signal, trap_function);
-
int_num:数据类型:中断号变量,用作中断的标识。 -
signal:GI 信号。 -
trap_function:中断函数名。 -
\SINGLE:单次触发,可选项。 -
\DEBUG:可调试,可选项,添加此参数后可在单步、单步暂停状态触发中断。 -
\LOGIC:逻辑中断,可选项,添加此参数后,触发中断后不会打断机器人运动。
示例:
IGRegister intnum0, GI1, "trapfun1";
// 注册中断,当 GI 信号 GI1 发生变化时,执行 trapfun1 函数
15.4.22.5 IEnable — 激活中断
说明: 激活被 IDisable 禁用的中断,前瞻触发(IRegister 后默认是激活的)。
定义:
IEnable(int_num);
-
int_num:数据类型:中断号变量, 用作中断的标识
示例:
IEnable(intnum0);
// 激活 intnum0 对应的中断,激活后可被绑定的信源触发