现在项目中,机械手出现的概率越来越多,我们电气该如何和机械手配合呢?常规有两种方式: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和机械手一个调试的时候还是比较倾向于把机械手当成一个模组。欢迎大家留言讨论!
欢迎大家关注涵景在苏州分享交流工控技术!
涵景电气,电气技术追梦人。
电气项目专业设计与开发调试。
电气项目设计调试经验分享
