程序跳转与指针复位指令
程序转移指令可用来实现程序的跳转功能,指令包括程序内部跳转和跨程序跳转(子程序调用)两类。本书第 2 章已对子程序调用、返回的基本指令及编程要求予以介绍,在此不再重复。
1.程序跳转指令与功能
RAPID 程序内部跳转指令及特殊的子程序变量调用指令的名称、编程格式见表 5.1-3,指令的编程要求和示例如下。
程序跳转指令 GOTO 可中止后续指令的执行、直接转移至跳转目标(Label)位置继续。跳转目标(Label)以字符的形式表示,它需要单独占一指令行,并以「:」结束;跳转目标既可位于 GOTO 指令之后(向下跳转),也可位于 GOTO 指令之前(向上跳转)。如果需要,GOTO 指令还可结合 IF、TEST、FOR、WHILE 等条件判断指令一起使用,以实现程序的条件跳转及分支等功能。
利用指令 GOTO 及 IF 实现程序跳转、重复执行、分支转移的编程示例如下。
GOTO next1 ; // 跳转至 next1 处继续(向下)
…… // 被跳过的指令
next1: // 跳转目标
……
!***************************************
reg1 := 1 ;
next2: // 跳转目标
…… // 重复执行 4 次
reg1 := reg1 + 1 ;
IF reg1<5 GOTO next2 ; // 条件跳转,至 next2 处重复
!***************************************
IF reg1>100 THEN
GOTO next3 ; // 如 reg1>100,跳转至 next3 分支
ELSE
GOTO next4 ; // 如 reg1≤100,跳转至 next4 分支
ENDIF
next3:
…… // next3 分支,reg1>100 时执行
GOTO ready ; // 分支结束
next4:
…… // next4 分支,reg1≤100 时执行
ready: // 分支合并
……
2.子程序的变量调用
变量调用指令 Call By Var 可用于名称为「字符 + 数字」的无参数普通子程序(PROC)调用,它可用变量替代数字,已达到调用不同子程序的目的。例如,对于名称为 proc1、proc2、proc3 的普通子程序,程序名由字符「proc」及数字(1~3)组成,此时,可用数值型数据变量(如 reg1)替代数字 1~3,这样,便可通过改变变量值来有选择地调用 proc1、proc2、proc3。
指令 Call By Var 的编程格式及程序数据要求如下。
Call By Var Name, Number ;
Name:子程序名称的文字部分,数据类型为 string。
Number:子程序名称的数字部分,数据类型为 num,正整数。
例如,利用变量调用指令 Call By Var 选择调用无参数普通子程序 proc1、proc2、proc3 的程序示例如下,程序中的 reg1 值可以为 1、2 或 3。
VAR num reg1 ; // 变量定义
……
Call By Var 「proc」, reg1 ; // 子程序变量调用
……
以上程序也可通过 TEST 指令实现,其程序如下。
TEST reg1
CASE 1:
proc1 ;
CASE 2:
proc2 ;
CASE 3:
proc3 ;
ENDTEST
3.指针复位与检查函数
程序指针就是用来选择程序编辑、程序重新启动位置的光标,它可以通过示教器的操作,改变位置;因此,在程序运行前一般需要将程序指针复位到起始位置。
ABB 机器人控制系统的控制面板上设置有图 5.1-1 所示的操作模式转换开关,利用该开关,可进行自动(程序运行)、手动测试(移动速度不超过 250mm/s)、手动高速(100% 速度)3 种操作模式的切换。系统当前的操作模式可以通过 RAPID 函数命令 OpMode 读取,自动模式的函数命令执行结果为 OP_AUTO、手动低速模式的命令执行结果为 OP_MAN_ TEST、手动高速模式的命令执行结果为 OP_MAN_PROG。
当系统由自动运行模式切换为手动(低速或高速)模式时,程序指针可以自动复位到应用程序的起始位置。但是,如操作者在手动操作模式下调整了程序指针的位置,再切换到程序自动运行时,需要通过指令 Reset PPMoved 复位程序指针,以保证应用程序能够从起始位置开始执行。
RAPID 程序指针复位与检查函数命令的功能、编程格式、程序数据与命令参数及添加项的要求见表 5.1-4。
函数命令 PPMovedInManMode 用来检查手动操作模式的程序指针移动状态,如果在手动操作模式移动了程序指针,则执行结果为 TRUE;IsStopStateEvent 命令用来检查当前任务的程序指针停止位置,如果在程序停止后,指针被移动,则执行结果为 TRUE。
RAPID 程序指针复位与检查函数命令的编程示例如下。
IF PPMoved In Man Mode() THEN // 指针检查
Reset PPMoved ; // 指针复位
Do Job ; // 程序调用
ELSE
Do Job ;
ENDIF
了解更多库卡机器人知识欢迎点击咨询:库卡机器人集成
- 下一篇:机器人系统的使用条件
- 上一篇:库卡机器人的程序停止指令