普通程序的调用
由于 RAPID 普通程序只需要在程序行编写程序名称,便可实现程序的调用功能,因此,可直接通过无条件执行、重复执行、条件执行指令来实现子程序的无条件调用、重复调用、条件调用功能。
无条件、重复、条件调用普通子程序的编程方法如下。
1.无条件调用
无条件调用的普通子程序可省略调用指令 Proc Call,直接在程序行编写子程序名称,当系统执行至该程序行时,便可跳转至指定的子程序继续执行。例如:
r Check Home Pos ; // 无条件调用子程序 r Check Home Pos
……
r Welding; // 无条件调用子程序 r Welding
2.重复调用
普通子程序的重复调用,可通过重复执行指令 FOR 来实现,子程序调用指令(子程序名称)可编写在程序行 FOR 至 ENDFOR 间。FOR 指令的编程格式如下,其中的计数增量选项 STEP 可根据需要省略或添加。
FOR 计数器FROM 计数起始值TO计数结束值[STEP 计数增量] DO
子程序调用 // 重复执行指令
……
ENDFOR // 重复执行指令结束
省略 STEP 选项时,如计数结束值 TO 大于计数起始值 FROM,系统默认 STEP 值为 1,即每执行一次 FOR 至 ENDFOR 之间的重复指令,计数值将自动加 1;如计数结束值 TO 小于计数起始值 FROM,系统默认 STEP 值为 ?1,即每执行一次重复指令,计数值将自动减 1;如计数器初始值不在起始值 FROM 和结束值 TO 的范围内,将跳过 FOR 至 ENDFOR 之间的重复指令。
例如,对于以下程序,如计数器i的初始值为 1,子程序 r Welding 可连续调用 10 次,完成后执行指令 Reset do1;如计数器i的初始值为 5,则子程序 r Welding 可连续调用 5 次,完成后执行指令 Reset do1;如计数器i的初始值小于 1 或大于 10,则跳过子程序 r Welding,直接执行指令 Reset do1。
FOR i FROM 1 TO 10 DO
r Welding; // 子程序 r Welding 重复调用
ENDFOR
Reset do1 ;
……
当指令使用 STEP 选项(整数,可为负)时,如计数器初始值处于 FROM 和 TO 之间,则每执行一次重复执行指令,计数值自动增加 1 个增量值;同样,如计数器初始值不在起始值 FROM 和结束值 TO 范围内,则直接跳过重复执行指令。
例如,对于以下程序,因计数增量 STEP 值为 ?2,子程序调用指令 r Welding 每执行一次,计数器i将减 2。因此,当计数器i初始值 FOR 为 10、结束值 TO 为 0 时,子程序 r Welding 可重复执行 5 次,完成后执行指令 Reset do1;如计数器i的初始值小于 0 或大于 10,将跳过子程序 r Welding,直接执行指令 Reset do1。程序中的指令「a{i}:= a{i?1}」用于计数器初始值调整,当初始值为奇数 1、3、5、7、9 时,系统可自动将其设定为 2、4、6、8、10。
FOR i FROM 10 TO 0 STEP -2 DO
a{i}:= a{i?1}
r Welding;
ENDFOR
Reset do1 ;
……
3.IF 条件调用
普通子程序的 IF 条件调用,可通过 RAPID 条件执行指令 IF 实现。IF 指令可采用「IF-THEN」「IF-THEN-ELSE」「IF-THEN-ELSEIF-THEN-ELSE」等多种形式编程,其作用如下。
(1)IF-THEN 调用
使用「IF-THEN」指令条件调用时,子程序调用指令(子程序名称)可编写在程序行 IF 与 ENDIF 间,如系统满足 IF 条件,子程序将调用;否则,子程序将被跳过。
例如,对于以下程序,如果寄存器 reg1 的值小于 5,系统可调用子程序 work1,work1 执行完成后,执行指令 Reset do1;否则,将跳过子程序 work1,直接执行 Reset do1 指令。
IF reg1<5 THEN
work1 ;
ENDIF
Reset do1 ;
……
(2)IF-THEN-ELSE 调用
使用「IF-THEN-ELSE」指令条件调用时,可根据需要,将子程序调用指令(子程序名称)编写在程序行 IF 与 ELSE 或 ELSE 与 ENDIF 间。如 IF 条件满足,IF 与 ELSE 间的子程序可被调用,而 ELSE 与 ENDIF 间的子程序将被跳过;否则,IF 与 ELSE 间的子程序被跳过、ELSE 与 ENDIF 间的子程序被调用。
例如,对于以下程序,如寄存器 reg1 的值小于 5,系统将调用子程序 work1,work1 执行完成后,跳转至指令 Reset do1;否则,系统将调用子程序 work2,work2 执行完成后,再执行指令 Reset do1。
IF reg1<5 THEN
work1 ;
ELSE
work2 ;
ENDIF
Reset do1 ;
……
(3)IF-THEN-ELSEIF-THEN-ELSE 调用
「IF-THEN-ELSEIF-THEN-ELSE」可设定多重执行条件,子程序调用指令(子程序名称)可编写在所需的位置。
例如,对于以下程序,如果寄存器 reg1<4,系统将调用子程序 work1,work1 执行完成后,跳转至指令 Reset do1;如果 reg1=4 或 5,系统将调用子程序 work2,work2 执行完成后,跳转至指令 Reset do1;如果 5
更多ABB机器人配件资讯欢迎点击咨询:ABB机器人售后技术服务