PLC和机械手协作,如何编程?常规2种方式?你更钟情于哪一种?

现在项目中,机械手出现的概率越来越多,我们电气该如何和机械手配合呢?常规有两种方式:1机械手当轴使用,另外一种方式作为独立单元交互控制

如果有专门的机械手工程师对接,可以用交互对接,这样可以提高效率。如果都是电气工程师编写可以把机械手当成模组编写。下面分享第一种方式,把机械手当成模组控制。

PLC编程

  • 交互地址

规划好和机械手对应的地址,便于程序的编写。

  • PLC程序

在相应的地址写入对应的值,等待机械手执行完定位后,反馈已经到达相应的位置。


机械手程序

机械手程序不断循环判断PLC发过来的指令,并且做好互锁,执行相应的定位。

//PLC位置命令判断
Case 1: #自动模式
        Auto_Running=100;
        While True#进入主题循环
            L[0]:              
            #---------------#产品判断------------------------------
            If Production1_Action_Num<>0 And Production2_Action_Num==0 And Production3_Action_Num==0 And Production4_Action_Num==0 And Production1_Action_Num<>Robot_P1_CurretPos
                Take_photos1.F_Tack_Photo(Production1_Action_Num);
            ElseIf Production2_Action_Num<>0 And Production1_Action_Num==0 And Production3_Action_Num==0 And Production4_Action_Num==0 And Production2_Action_Num<>Robot_P2_CurretPos
                Take_photos2.F_Tack_Photo(Production2_Action_Num);
              ElseIf Production3_Action_Num<>0 And Production2_Action_Num==0 And Production1_Action_Num==0  And Production4_Action_Num==0 And Production3_Action_Num<>Robot_P3_CurretPos
                  Take_photos3.F_Tack_Photo(Production3_Action_Num);
                ElseIf Production4_Action_Num<>0 And Production2_Action_Num==0 And Production1_Action_Num==0 And Production3_Action_Num==0 And Production4_Action_Num<>Robot_P4_CurretPos
                    Take_photos4.F_Tack_Photo(Production4_Action_Num);
                   ElseIf Plc_Home_ActionPos<>0 And Production4_Action_Num==0 And Production2_Action_Num==0 And Production1_Action_Num==0 And Production3_Action_Num==0 And Production4_Action_Num<>Robot_P4_CurretPos
                      Motion.Go_HomePos();#回待机位
                    Else
                      Goto L[0];
            EndIf;
        EndWhile;
        Break;
//位置选择
Func F_Tack_Photo(Int PhotoPosNum)#拍照位置编号
    Switch PhotoPosNum
    Case 1:
        Jump P1_CTack_PhtoPos_1,V[Run_Speed],Fine,Tool[0],LH[100],MH[Running_High_MH],RH[100];#产品拍照1位置
        Robot_P1_CurretPos=1;#当前位置号
        Robot_P2_CurretPos=0;
        Robot_P3_CurretPos=0;
        Robot_P4_CurretPos=0;
        Robot_Home_CurretPos=0;
        Break;
    Case 2:
        Jump P1_CTack_PhtoPos_2,V[Run_Speed],Fine,Tool[0],LH[100],MH[Running_High_MH],RH[100];#产品拍照2位置
        Robot_P1_CurretPos=2;#当前位置号
        Robot_P2_CurretPos=0;
        Robot_P3_CurretPos=0;
        Robot_P4_CurretPos=0; 
        Robot_Home_CurretPos=0;
        Break;
    Case 3:
        Jump P1_CTack_PhtoPos_3,V[Run_Speed],Fine,Tool[0],LH[100],MH[Running_High_MH],RH[100];#产品拍照3位置
        Robot_P1_CurretPos=3;#当前位置号
        Robot_P2_CurretPos=0;
        Robot_P3_CurretPos=0;
        Robot_P4_CurretPos=0;
        Robot_Home_CurretPos=0;
        Break;
    Case 4:
        Jump P1_CTack_PhtoPos_4,V[Run_Speed],Fine,Tool[0],LH[100],MH[Running_High_MH],RH[100];#产品拍照4位置
        Robot_P1_CurretPos=4;#当前位置号
        Robot_P2_CurretPos=0;
        Robot_P3_CurretPos=0;
        Robot_P4_CurretPos=0;
        Robot_Home_CurretPos=0;
        Break;
    Case 5:
        Jump P1_CTack_PhtoPos_5,V[Run_Speed],Fine,Tool[0],LH[100],MH[Running_High_MH],RH[100];#产品拍照5位置
        Robot_P1_CurretPos=5;#当前位置号
        Robot_P2_CurretPos=0;
        Robot_P3_CurretPos=0;
        Robot_P4_CurretPos=0;
        Robot_Home_CurretPos=0;
        Break;
    Case 6:
        Jump P1_CTack_PhtoPos_6,V[Run_Speed],Fine,Tool[0],LH[100],MH[Running_High_MH],RH[100];#产品拍照5位置
        Robot_P1_CurretPos=6;#当前位置号
        Robot_P2_CurretPos=0;
        Robot_P3_CurretPos=0;
        Robot_P4_CurretPos=0;
        Robot_Home_CurretPos=0;
        Break;    
    Case 7:
        Jump P1_CTack_PhtoPos_7,V[Run_Speed],Fine,Tool[0],LH[100],MH[Running_High_MH],RH[100];#产品拍照5位置
        Robot_P1_CurretPos=7;#当前位置号
        Robot_P2_CurretPos=0;
        Robot_P3_CurretPos=0;
        Robot_P4_CurretPos=0; 
        Robot_Home_CurretPos=0;
        Break; 
    Case 8:
        Jump P1_CTack_PhtoPos_8,V[Run_Speed],Fine,Tool[0],LH[100],MH[Running_High_MH],RH[100];#产品拍照5位置
        Robot_P1_CurretPos=8;#当前位置号
        Robot_P2_CurretPos=0;
        Robot_P3_CurretPos=0;
        Robot_P4_CurretPos=0;
        Robot_Home_CurretPos=0;
        Break;     
    Case 9:
        Jump P1_CTack_PhtoPos_9,V[Run_Speed],Fine,Tool[0],LH[100],MH[Running_High_MH],RH[100];#产品拍照5位置
        Robot_P1_CurretPos=9;#当前位置号
        Robot_P2_CurretPos=0;
        Robot_P3_CurretPos=0;
        Robot_P4_CurretPos=0; 
        Robot_Home_CurretPos=0;     
        Break; 
    Case 10:
        Jump P1_CTack_PhtoPos_10,V[Run_Speed],Fine,Tool[0],LH[100],MH[Running_High_MH],RH[100];#产品拍照5位置
        Robot_P1_CurretPos=10;#当前位置号
        Robot_P2_CurretPos=0;
        Robot_P3_CurretPos=0;
        Robot_P4_CurretPos=0;  
        Robot_Home_CurretPos=0;   
        Break;      
    EndSwitch;
EndFunc;#____

总结:两种和机械手交互的编程方式都比较常见,但对于PLC和机械手一个调试的时候还是比较倾向于把机械手当成一个模组。欢迎大家留言讨论!

欢迎大家关注涵景在苏州分享交流工控技术!

涵景电气,电气技术追梦人。

电气项目专业设计与开发调试。

电气项目设计调试经验分享

原文链接:,转发请注明来源!