ABB机器人带参数的例行程序应该怎么去写
我们如果要创建abb机器人带参数的例行程序我们应该怎么去做。
ABB机器人任何数据都有存储类型,分为常量CONST,变量VAR和可变量PERS常量CONST,即程序内不能赋值
变量VAR和可变量PERS程序都能赋值,区别如下
变量:-有初值和当前值。在执行打开程序,移动指针到main,移动指针到routine时,变量的当前值会被初始化,即值变为初值。
可变量:只有当前值。即任何时候做了修改,其值就修改了。在执行打开程序,移动指针到main,移动指针到routine时,值就是当前值,不会发生变化。 MODULE Module1
VARnum NUM1:=0; !变量NUM1
PROCmain()
CRtoolNUM1; !调用带参数的例行程序
ENDPROC
PROCCRtool(INOUT num M) !INOUT模式
M := M + 1; !自变量M+1
ENDPROC
ENDMODULE
l 如果参数的模式为INOUT模式,当M改变时NUM1也会改变NUM1=M=1,
l 如果参数的模式为IN模式,当M改变时NUM1不会改变。
l 如果参数的模式为变量模式。当M改变时NUM1也会改变NUM1=M=1。但是num1必须为变量。
l 如果参数的模式为可变量模式,当M改变时NUM1也会改变NUM1=M=1。
但是num1必须为可变量。
可选参数的使用,如果在上面程序中已经创建了可选参数(默认可选参数不显示)如何添加可选参数,双击调用的可选参数。
点击可选变量选择要使用的可选变量点击使用确定给变量赋值可选参数设置完成 Present - 测试是否使用一个可选参数Present用于测试在调用一个程序时,是否已经使用一个可选参数。如果在调用程序时未作任何指定,则可能不会使用可选参数。该函数可用于测试是否已指定一个参数,从而防止出现错误。
以上程序。使用可选参数Present()返回TRUE,否则为FALSE,例如
PROC Open(Num ToolNumber \switch NoCheck)
TEST ToolNumber
Case 1 If Present(NoCheck) Then !使用可选参数情况
(输出气缸打开,不检测气缸到位信号)
Else !未使用可选参数情况
(输出气缸打开,检测到位信号)
EndIf
endtest
ENDPROC
PROC CHECHOPEN
Open 1/\NoCheck; ! 输出气缸打开,但不检测气缸是否打开到位
Open 1; !输出气缸打开,但检测气缸是否打开到位
ENDPROC
l 如何创建带返回值的功能程序
在RAPID中写入功能程序(示教器创建省略)
FUNCbool DryRunMode(mun X,mun Y)
!FUNC...ENDFUNC表示功能程序
!BOOL返回值布尔量型,功能程序必须要有返回值,一般通过return指令返回。返回值程序可具备(返回)任意值数据类型,有返回值程序无法具备维度,即,有返回值程序无法返回数组值。
!DryRunMode()功能成的名称
!mun X,mun 功能程序参数 num参数的数据类型 x,参数名称也可在
ENDFUNC 例如:计算任意输入三个数的乘积,程序如下:
MODULE Module1
VAR dnum regX:=0; VAR dnum regY:=0; VAR dnum regZ:=0;
PERS num RX:=5; PERS num RY:=8; PERS num RZ:=2;
PROC main()
TPErase;
TPReadDnum regX, "please inputregx";!在示教器上输入计算的第1个 数值
TPReadDnum regY, "please inputregY";!在示教器上输入计算的第2个 数值
TPReadDnum regZ, "please inputregZ";!在示教器上输入计算的第3个 数值
!图一所示,输入数值。确认
RX := DnumToNum(regX); !读取第1个数值赋值给RX
RY := DnumToNum(regY);!读取第2个数值赋值给RY
RZ := DnumToNum(regZ);!读取第3个数值赋值给RZ
TPWrite ValToStr(RX)+"*"+ ValToStr(RY)+ "*"+ ValToStr(RZ)+"="+ ValToStr(Modxyz(RX,RY,RZ)) ;
!读取功能程序返回值。假如三个数字依次是:2.3, 2.5, 5.2。则写屏
!
ENDPROC
FUNC num Modxyz(num X,num Y,num Z) !功能程序
RETURN X * Y * Z ; !返回三个数的乘积
ENDFUNC
ENDMODULE
更多机器人资讯请点击:abb机器人
联系电话:18616560100