大数跨境

ABB机器人双工位码跺程序

ABB机器人双工位码跺程序 东莞机器人之家
2021-04-26
1
导读:ABB机器人双工位码跺程序

MODULE Module1

    CONST robtarget pHome:=[[522.01,0.00,848.10],[0.5,0,0.866025,0],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];

    TASK PERS tooldata tool_XiPan:=[TRUE,[[0,0,0],[1,0,0,0]],[1,[0,0,0],[1,0,0,0],0,0,0]];

    TASK PERS wobjdata wobj_Table:=[FALSE,TRUE,"",[[0,0,0],[1,0,0,0]],[[0,0,0],[1,0,0,0]]];

    VAR intnum intno1:=0;

    VAR intnum intno2:=0;

    CONST robtarget p100:=[[522.01,0.00,848.10],[0.5,0,0.866025,0],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];

    CONST robtarget p110:=[[522.01,0.00,848.10],[0.5,0,0.866025,0],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];

    CONST robtarget p120:=[[522.01,0.00,848.10],[0.5,0,0.866025,0],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];

    CONST robtarget p130:=[[522.01,0.00,848.10],[0.5,0,0.866025,0],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];

    CONST robtarget pPick1:=[[522.01,0.00,848.10],[0.5,0,0.866025,0],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];

    CONST robtarget pZuoDaiWei:=[[522.01,0.00,848.10],[0.5,0,0.866025,0],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];

    CONST robtarget pYouDaiWei:=[[522.01,0.00,848.10],[0.5,0,0.866025,0],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];

    CONST robtarget p10:=[[522.01,0.00,848.10],[0.5,0,0.866025,0],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];

    CONST robtarget p20:=[[522.01,0.00,848.10],[0.5,0,0.866025,0],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];

    CONST robtarget p30:=[[522.01,0.00,848.10],[0.5,0,0.866025,0],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];

    CONST robtarget p40:=[[522.01,0.00,848.10],[0.5,0,0.866025,0],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];

    CONST robtarget p50:=[[522.01,0.00,848.10],[0.5,0,0.866025,0],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];

    VAR bool Zuo:=FALSE;

    VAR bool ZuoFangLiao:=FALSE;

    VAR bool YouFangLiao:=FALSE;

    VAR num reg6:=0;

    VAR num Zuo_Z:=0;

    VAR num Zuo_n:=0;

    VAR num You_Z:=0;

    VAR num You_n:=0;

    CONST robtarget p60:=[[522.01,0.00,848.10],[0.5,0,0.866025,0],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];

    VAR robtarget pYou{5,3}:=[[[[522.01,0.00,848.10],[0.5,0,0.866025,0],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],[[522.01,0.00,848.10],[0.5,0,0.866025,0],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],[[522.01,0.00,848.10],[0.5,0,0.866025,0],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]]],[[[522.01,0.00,848.10],[0.5,0,0.866025,0],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],[[522.01,0.00,848.10],[0.5,0,0.866025,0],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],[[522.01,0.00,848.10],[0.5,0,0.866025,0],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]]],[[[522.01,0.00,848.10],[0.5,0,0.866025,0],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],[[522.01,0.00,848.10],[0.5,0,0.866025,0],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],[[522.01,0.00,848.10],[0.5,0,0.866025,0],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]]],[[[522.01,0.00,848.10],[0.5,0,0.866025,0],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],[[522.01,0.00,848.10],[0.5,0,0.866025,0],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],[[522.01,0.00,848.10],[0.5,0,0.866025,0],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]]],[[[522.01,0.00,848.10],[0.5,0,0.866025,0],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],[[522.01,0.00,848.10],[0.5,0,0.866025,0],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],[[522.01,0.00,848.10],[0.5,0,0.866025,0],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]]]];

    VAR robtarget pZuo{5,3}:=[[[[522.01,0.00,848.10],[0.5,0,0.866025,0],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],[[522.01,0.00,848.10],[0.5,0,0.866025,0],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],[[522.01,0.00,848.10],[0.5,0,0.866025,0],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]]],[[[522.01,0.00,848.10],[0.5,0,0.866025,0],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],[[522.01,0.00,848.10],[0.5,0,0.866025,0],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],[[522.01,0.00,848.10],[0.5,0,0.866025,0],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]]],[[[522.01,0.00,848.10],[0.5,0,0.866025,0],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],[[522.01,0.00,848.10],[0.5,0,0.866025,0],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],[[522.01,0.00,848.10],[0.5,0,0.866025,0],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]]],[[[522.01,0.00,848.10],[0.5,0,0.866025,0],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],[[522.01,0.00,848.10],[0.5,0,0.866025,0],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],[[522.01,0.00,848.10],[0.5,0,0.866025,0],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]]],[[[522.01,0.00,848.10],[0.5,0,0.866025,0],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],[[522.01,0.00,848.10],[0.5,0,0.866025,0],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],[[522.01,0.00,848.10],[0.5,0,0.866025,0],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]]]];

    !***********************************************************

    !

    ! Module:  Module1

    !

    ! Description:

    !   <Insert description here>

    !

    ! Author: tianz

    !

    ! Version: 1.0

    !

    !***********************************************************



    !***********************************************************

    !

    ! Procedure main

    !

    !   This is the entry point of your program

    !

    !***********************************************************

    PROC main()  !主程序

        rReset;     !复位程序,用于复位信号变量,中断初始化,数据存储

        rHome;      !回到原点后再进行运行

        WHILE TRUE DO

            rPick;       !抓料程序

            rTiaoZheng;  !调整程序

            rPlace;      !放料程序

        ENDWHILE

    ENDPROC


    PROC rHome()

        MoveJ pHome,v300,fine,tool_XiPan\WObj:=wobj_Table;

    ENDPROC


    PROC rReset()

        Reset Do01_XiPan;      !复位相关信号

        Reset Do02_ZuoTuiLiao;

        Reset Do03_YouTuiLiao;

        Reset Do04_FangLiao;

        Zuo_n:=1;      !初始化相关变量

        Zuo_Z:=1;

        You_n:=1;

        You_Z:=1;

        reg6:=1;

        rPoint;     !放料点位的计算存储

        IDelete intno1;        !中断程序,用于左输送带出料

        CONNECT intno1 WITH rZuoTuiLiao;

        ISignalDI Di01_ZuoDaoWei,0,intno1;    !当左到位信号断开时,触发中断,推出新的产品

        IDelete intno2;        !中断程序,用于右输送带出料

        CONNECT intno2 WITH rYouTuiLiao; 

        ISignalDI Di02_YouDaoWei,0,intno2;    !当右到位信号断开时,触发中断,推出新的产品

        PulseDO\PLength:=2,Do02_ZuoTuiLiao;     !第一次运行,推出一次产品

        PulseDO\PLength:=2,Do03_YouTuiLiao;

    ENDPROC


    TRAP rZuoTuiLiao         !中断程序

        PulseDO\PLength:=2,Do02_ZuoTuiLiao;    !左输送带的气缸推出2秒

    ENDTRAP


    TRAP rYouTuiLiao         !中断程序

        PulseDO\PLength:=2,Do03_YouTuiLiao;   !右输送带的气缸推出2秒

    ENDTRAP


    PROC rPick()         !抓料程序

        WaitUntil Di01_ZuoDaoWei=1 OR Di02_YouDaoWei=1;    !等待左右到位信号

        IF Di01_ZuoDaoWei=1 THEN      !当左到位时,机器人抓取左输送带的产品

            MoveJ Offs(pZuoDaiWei,0,0,50),v500,z40,tool_XiPan\WObj:=wobj_Table;

            MoveL pZuoDaiWei,v200,fine,tool_XiPan\WObj:=wobj_Table;

            Set Do01_XiPan;

            WaitTime 0.3;

            MoveJ Offs(pZuoDaiWei,0,0,50),v500,z40,tool_XiPan\WObj:=wobj_Table;

        ENDIF

        IF Di02_YouDaoWei=1 THEN      !当右到位时,机器人抓取右输送带的产品

            MoveJ Offs(pYouDaiWei,0,0,50),v500,z40,tool_XiPan\WObj:=wobj_Table;

            MoveL pYouDaiWei,v200,fine,tool_XiPan\WObj:=wobj_Table;

            Set Do01_XiPan;

            WaitTime 0.3;

            MoveJ Offs(pYouDaiWei,0,0,50),v500,z40,tool_XiPan\WObj:=wobj_Table;

        ENDIF

    ENDPROC


    PROC rTiaoZheng()    !产品抓取后,进行位置调整

        MoveJ p10,v800,z50,tool_XiPan\WObj:=wobj_Table;

        MoveJ p20,v300,fine,tool_XiPan\WObj:=wobj_Table;

        Reset Do01_XiPan;

        WaitTime 0.3;

        MoveJ p30,v800,z20,tool_XiPan\WObj:=wobj_Table;

        MoveL p40,v300,fine,tool_XiPan\WObj:=wobj_Table;

        Set Do01_XiPan;

        WaitTime 0.3;

        MoveL p50,v800,z20,tool_XiPan\WObj:=wobj_Table;

    ENDPROC


    PROC rPoint()    !点位存储

        FOR z FROM 1 TO 3 DO     !通过For循环进行数据存储,存入到对应的数组中

            FOR n FROM 1 TO 5 DO

                IF n<=3 THEN   ! 点位:P100,位置参考图片

                    pZuo{n,z}:=Offs(p100,(n-1)*30,0,(z-1)*8);   

                ELSEIF n>3 THEN    !点位:P110,位置参考图片

                    pZuo{n,z}:=Offs(p110,(n-4)*60,0,(z-1)*8);

                ENDIF

            ENDFOR

        ENDFOR

        FOR z FROM 1 TO 3 DO     

            FOR n FROM 1 TO 5 DO

                IF n<=3 THEN        ! 点位:P120,位置参考图片

                    pYou{n,z}:=Offs(p120,(n-1)*30,0,(z-1)*8);

                ELSEIF n>3 THEN     ! 点位:P130,位置参考图片

                    pYou{n,z}:=Offs(p130,(n-4)*60,0,(z-1)*8);

                ENDIF

            ENDFOR

        ENDFOR

    ENDPROC


    PROC rPlace()   !放料程序

        TEST reg6

        CASE 1:

            rFangLiao pZuo{Zuo_n,Zuo_Z};     !进行放料动作

        CASE 2:

            rFangLiao pYou{You_n,You_Z};     

        DEFAULT:

            Stop;

        ENDTEST

        IF reg6=1 THEN      !放料后,进行数据的计算更改

            Zuo_n:=Zuo_n+1;

            IF Zuo_n>5 THEN

                Zuo_Z:=Zuo_Z+1;

                Zuo_n:=1;

            ENDIF

            IF Zuo_Z>3 THEN

                reg6:=2;

                Zuo_n:=1;

                Zuo_Z:=1;

            ENDIF

        ENDIF

        elseIF reg6=2 THEN    

            You_n:=You_n+1;

            IF You_n>5 THEN

                You_Z:=You_Z+1;

                You_n:=1;

            ENDIF

            IF You_Z>3 THEN

                reg6:=1;

                You_n:=1;

                You_Z:=1;

            ENDIF

        ENDIF

    ENDPROC


    PROC rFangLiao(robtarget Point)     !带参数的例行程序

        MoveJ Offs(Point,0,0,30),v800,z20,tool_XiPan\WObj:=wobj_Table;

        MoveL Point,v300,fine,tool_XiPan\WObj:=wobj_Table;

        Reset Do01_XiPan;

        WaitTime 0.3;

        MoveL Offs(Point,0,0,80),v800,z20,tool_XiPan\WObj:=wobj_Table;

    ENDPROC

ENDMODULE


【声明】内容源于网络
0
0
东莞机器人之家
内容 495
粉丝 0
东莞机器人之家
总阅读129
粉丝0
内容495