ABB机器人调用例行程序方法

Posted xyb617

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ABB机器人调用例行程序方法相关的知识,希望对你有一定的参考价值。

方法一:直接使用例行程序名调用例行程序

太过简单,不加以描述

方法二:%调用

%“proc name”%调用例行程序

技术图片

 

 代码演示:

MODULE CommonMain
    PROC main()
        VAR num pathnum:=0;
        VAR num targetnum:=0;
        VAR num targettest:=10;
        
        %"MoveRail"% 0,0;         !例行程序普通参数测试
        %"MoveRail"% 0exact,0;   !例行程序带开关参数测试  
        %"MoveRail"% 0,0	arget:=targettest;   !例行程序带可选参数测试 
        %"Rob1_Side"+NumToStr(pathnum,0)+"_"+NumToStr(targetnum,0)%;  !常见路径样式调用测试
    ENDPROC
    
    PROC MoveRail(num movedistanceswitch exact,num transdisswitch Rhomevar num target)
        IF Present(exact) THEN
            TPWrite"2,exact";
        ELSE
            IF Present(target) THEN
                TPWrite"3,target:="Num:=target;
            ELSE
                TPWrite"1,no exact";
            ENDIF
        ENDIF
    ENDPROC
    
    PROC Rob1_Side0_0()
       TPWrite"Rob1_Side0_0";
    ENDPROC
ENDMODULE

错误处理,可能存在加载错误

ERROR
    TEST ERRNO
    case ERR_LOADED;
        !报错处理
    default!正常    

方法三:CallByVar指令

技术图片

 

 技术图片

 

 代码演示:

PROC CallPath(num TrackDistance, string PathNameswitch home)
        VAR num NumLen:=0;
        VAR string ProcName;
        VAR string NumName;
        VAR num CGrdSpd:=0;
        VAR bool Check:=FALSE;
        VAR num MinTrack:=0;

        IF StrMatch(PathName,1,"Up")<(StrLen(PathName)+1) THEN
            MinTrack:=MinTrack_up;
        ELSEIF StrMatch(PathName,1,"Mid")<(StrLen(PathName)+1) THEN
            MinTrack:=MinTrack_mid;
        ELSEIF StrMatch(PathName,1,"Down")<(StrLen(PathName)+1) THEN
            MinTrack:=MinTrack_down;
        ENDIF

        NumLen:=StrLen(PathName)-DivideLen;
        ProcName:=StrPart(PathName, 1, DivideLen);
        NumName:=StrPart(PathName,DivideLen+1,NumLen);
        Check:=StrToVal(NumName, ProcNumber);

        IF TrackDistance+wobj_x_displace<MinTrack THEN
            rHome;
        ELSE
        IF Present(home)=TRUE THEN
            MoveRail TrackDistance, RailSpeed, wobj_x_displaceRhome;
        ELSE
            MoveRail TrackDistance, RailSpeed, wobj_x_displace;
        ENDIF
            bladeWobj.uframe.trans.x:=(CarriagePositionActualCom/100-wobj_x_displace);
            CallByVar ProcName, ProcNumber;
        ENDIF
    ENDPROC

以上是关于ABB机器人调用例行程序方法的主要内容,如果未能解决你的问题,请参考以下文章

ABB机器人功能程序(FUNC)

ABB安全区域(全局区域)的指令解析

abb机器人num数据怎么取整

abb机器人未知系统输入类型报错

三种例行程序(procdures,function,traps)的使用

20160929-例行报告