4.6 其他指令

定义“中断程序”指令——Def Act
(1)【功能】

本指令用于定义“中断程序”,定义执行中断程序的条件及中断程序名称。

(2)【指令格式】

Def Act<中断程序级别><条件><执行动作><类型>

(3)【术语解释】

①<中断程序级别>——设置中断程序的级别(优先)。设置范围:1~8。

②<条件>——是否执行“中断程序”的判断条件。

作为条件,按以下的格式记述:

a.<数值型数据><比较运算符><数值型数据>或

b.<数值型数据><逻辑运算符><数值型数据>

<数值型数据>是指以下的数值类型

<数值型常数>/<数值变量>/<数值数组>/<成分数据>

③<执行动作>——中断程序动作内容。

为了执行中断程序,必须以GoTo指令或GoSub指令调用子程序。

④<类型>——中断程序的执行时间点,即主程序的停止类型。

a.省略:停止类型1——以100%速度倍率正常停止。

b.S:停止类型2——以最短时间、最短距离减速停止。

c.L:停止类型3——执行完当前程序行后才停止。

(4)力觉停止

①“力觉停止”不按外部速度倍率,以最短时间/最短距离减速停止。力觉控制ON的时候,机器人的动作为:如果直线速度小于50mm/s或旋转速度小于50(°)/s时立即在该点停止。如图4-3所示。

图4-3 力觉控制的停止方式

②对应“力觉停止”,在自变量<类型>上标注“F”。

③力觉控制OFF的时候,停止方式与停止类型2(S)相同。

④对于附加伺服轴,不论力觉控制ON/OFF,停止方式与停止类型2(S)相同。

⑤“力觉停止”(F)时,如果力觉控制OFF(包含伺服OFF),设置“Act=0”,禁止中断,执行力觉控制的位置补偿,保持停止时的状态。

(5)【程序样例】

1 Def Act 1,M_In(17)=1 GoSub *L100 '——定义Act 1中断程序为:如果输入信号17=ON,则跳转到子程序*L100。

2 Def Act 2,MFG1 And MFG2 GoTo *L200 '——定义Act 2中断程序:如果“MFG1与MFG2”的“逻辑AND”运算=真,,则跳转到子程序*L200。

3 Def Act 3,M_Timer(1)>10500 GoSub *LBL '——定义Act 3中断程序为:如果计时器时间大于10500ms,则跳转到子程序*LBL。

10 *L100:M_Timer(1)=0 '——计时器M_Timer(1)设置=0。

11 Act 3=1 '——Act3中断区间起点。

12 Return 0 '——中断程序结束。

20 *L200:Mov P_Safe '——子程序*L200。

21 End'——结束。

30 *LBL '——子程序*LBL。

31 M_Timer(1)=0 '——设置计时器M_Timer(1)=0。

32 Act 3=0 '——Act3中断区间终点。

32 Return 0 '——中断程序结束。

(6)说明

①中断程序从“跳转起始行”到“Return”结束。

②中断程序级别以号码1~8表示,数字越小越优先,如Act 1优先于Act 2。

③执行中断程序时,主程序的停止类型有3种,如图4-4、图4-5所示。

a.停止类型1:停止过程中的行程相同。

b.停止类型2:以最短时间、最短距离减速停止。

c.停止类型3:执行完主程序当前行后,再执行中断程序。

图4-4 停止类型1

图4-5 停止类型2和停止类型3

④只能使用<式>等单纯的逻辑运算或比较运算。运算符号为1个,括号也无法使用。

⑤以通信插入(COM)优先级比任何一个Def Act指令定义的中断插入优先顺序高。

⑥在<式>中无法以(M1 And &H001)=1的逻辑运算的组合条件来表示。

⑦在执行圆或圆弧插补(Mvc,Mvr,Mvr2,Mvr3)时,执行中断插入,以Return0返回原单步控制时,机器人会返回到圆或圆弧的起点,再次执行圆、圆弧插补。

(7)【关联指令】

机器人执行移动指令的时候,如果需要中断插入以最短时间/最短距离将机器人停止,则应该将停止种类设定为“S”。