Fanuc机器人常用程序代码片段

[复制链接]
查看147 | 回复0 | 2022-3-10 18:13:44 | 显示全部楼层 |阅读模式
机器人品牌
厂商: FANUC
从原点去维修点程序代码
  1. 1:  OVERRIDE=20%           
  2. 2:  UTOOL_NUM=1                            //工具坐标系
  3. 3:  UFRAME_NUM=0                           //用户坐标系
  4. 4:J  PR[1:Home_pos.] 20% FINE              //关节位置PR[1:Home_pos.] 即原点
  5. 5:J  P[1] 20% FINE                         //关节位置P[1]
  6. 6:J  P[2] 20% FINE                         //关节位置P[2]
  7. 7:J  P[3] 20% FINE                         //关节位置P[3]
  8. 8:  
  9. 9:  PAUSE                                  //暂停
  10. 10:J  P[3] 20% FINE                         //关节位置P[3]
  11. 11:J  P[2] 20% FINE                         //关节位置P[2]
  12. 12:J  P[1] 20% FINE                         //关节位置P[1]
  13. 13:J  PR[1:Home_pos.] 20% FINE              //关节位置PR[1:Home_pos.] 即原点
  14. [End]                                       //结束
复制代码

复位交讯信号程序代码
  1. 1:  DO[6:QuPianZhong]=OFF                        //关闭输出信号"QuPianZhong"
  2. 2:  DO[7:QuPianWanChen]=OFF                      //关闭输出信号"QuPianWanChen"
  3. 3:  DO[8:ZiDongSiMoQU]=OFF                       //关闭输出信号"ZiDongSiMoQU"
  4. 4:  DO[9:ZiDongSiMoDaoWei]=OFF                   //关闭输出信号"ZiDongSiMoDaoWei"
  5. 5:  DO[10:ZiDongSiMoQingXieDaoWei]=
  6.   :  OFF                                          //关闭输出信号"ZiDongSiMoQingXieDaoWei"
  7. 6:  DO[11:ShouDongSiMoQU]=OFF                    //关闭输出信号"ShouDongSiMoQU"
  8. 7:  DO[12:ShouDongSiMoDaoWei]=OFF                //关闭输出信号"ShouDongSiMoDaoWei"
  9. 8:  DO[13:KaHeZhong_R]=OFF                       //关闭输出信号"KaHeZhong_R"
  10. 9:  DO[14:KaHeWanChen_R]=OFF                     //关闭输出信号"KaHeWanChen_R"
  11. 10:  DO[15:PaiZhaoShiBai_R]=OFF                   //关闭输出信号"PaiZhaoShiBai_R"
  12. 11:  DO[17:Sifu_DaKai]=OFF                        //关闭输出信号"Sifu_DaKai"
  13. 12:  DO[18:Sifu_ZheQi]=OFF                        //关闭输出信号"Sifu_ZheQi"
  14. [End]                                             //结束
复制代码

机器人治具程序代码
  1. 1:  WAIT DI[18:Sifu_ZheQi]=ON                  //等待输入信号[18:Sifu_ZheQi]变成ON
  2. 2:  DO[17:Sifu_DaKai]=ON                       //输出信号[17:Sifu_DaKai]变成OFF
  3. 3:  WAIT DI[17:Sifu_DaKai]=ON                  //等待输入信号[17:Sifu_DaKai]变成ON
  4.   :  TIMEOUT,LBL[1]                             //时间到跳转到标签LBL[1]
  5. 4:  END                                        //结束
  6. 5:
  7. 6:  LBL[1]                                     //标签[1]
  8. 7:  UALM[2]                                    //
  9. 8:  ABROT                                      //
  10. [End]
复制代码

卡合程序代码
  1. 1:  UTOOL_NUM=1                                        //工具坐标系
  2. 2:  UFRAME_NUM=0                                       //用户坐标系
  3. 3: WAIT DI[11:YunXuPaiZhao_R]=ON                       //等待输入信号"允许拍照"变成ON
  4. 4: DO[13:KaHeZhong_R]=ON                               //输出信号"卡合中"变成ON
  5. 5:J  P[1] 100% CNT100                                  //关节位置P[1]
  6. 6:L  P[2] 2000mm/sec FINE                              //直线位置P[2]
  7. 7:
  8. 8:
  9. 9:
  10. 10:  LBL[1]                                             //标签LBL[1]                                             
  11. 11:  UTOOL_NUM=8                                        //工具坐标系
  12. 12:  UFRAME_NUM=8                                       //用户坐标系
  13. 13:  R[21:V_no.]=R[21:V_no.]+1                          //信号21累加计算
  14. 14:  IF R[21:V_no.]>=10,JMP LBL[99]                     //如果21信号大于等于10次,程序跳转到标签LBL[99]
  15. 15:  VISION RUN_FIND                                    //调用视觉程序 'A02_HD580K3U01_S0_PM'
  16.   :  'A02_HD580K3U01_S0_PM'                             
  17. 16:  VISION GET_OFFSET                                  //计算偏移量
  18.   :  'A02_HD580K3U01_S0_PM' VR[1]
  19.   :  JMP LBL[1]                                         //跳转到标签LBL[1]
  20. 17:  R[21:V_no.]=0                                      //信号21计数变成0
  21. 18:
  22. 19:  LBL[2]                                             //标签LBL[2]  
  23. 20:  UTOOL_NUM=8                                        //工具坐标系
  24. 21:  UFRAME_NUM=8                                       //用户坐标系
  25. 22:
  26. 23:
  27. 24:L  P[4] 1500mm/sec CNT80                             //直线位置P[4]
  28. 25:L  P[3] 800mm/sec FINE                               //直线位置P[3] (此位置为平面产品抛片位置)
  29.   :  VOFFSET,VR[1]                                      //计算偏移量
  30.   :  Offset,PR[2:VIS_oft.]
  31. 26:  WAIT  .30(sec)                                     //等待0.3秒
  32. 27:  CALL VOID_FP_PM                                    //调用平面放片程序"VOID_FP_PM"
  33. 28:
  34. 29:
  35. 30:  UTOOL_NUM=1                                        //工具坐标系
  36. 31:  UFRAME_NUM=0                                       //用户坐标系
  37. 32:L  P[2] 1000mm/sec CNT50                             //直线位置P[2]
  38. 33:J  P[1] 100% CNT80                                   //直线位置P[1]
  39. 34:  DO[14:KaHeWanChen_R]=                              //输出卡合完成信号"[14:KaHeWanChen_R]"并暂停2秒
  40.   :  PULSE,2.0sec
  41. 35:  DO[13:KaHeZhong_R]=OFF                             //关闭输出信号卡合中"[13:KaHeZhong_R]"
  42. 36:  END                                                //结束
  43. 37:
  44. 38:  LBL[99]                                            //标签LBL[99]     
  45. 39:  R[21:V_no.]=0                                      //信号21计数变成0
  46. 40:  DO[15:PaiZhaoShiBai_R]=                            //输出拍照失败信号"[15:PaiZhaoShiBai_R]"并暂停2秒
  47.   :  PLUSE,2.0sec
  48. 41:
  49. 42:  LBL[3]                                             //标签LBL[3]
  50. 43:  IF DI[12:ZaiPaiZhao_R]=ON,                         //如果重新拍照信号"DI[12:ZaiPaiZhao_R]"变成ON
  51.   :  JMP LBL[1]                                         //跳转到标签LBL[1]
  52. 44:  IF DI[13:qiangzhifangpian_R]=ON,                   //如果强制放片信号"DI[13:qiangzhifangpian_R]"变成ON
  53.   :  JMP LBL[2]                                         //跳转到标签LBL[2]  
  54. 45:  JMP LBL[3]                                         //跳转到标签LBL[3]
  55. 46:
  56. End                                                     //结束
复制代码

偏移量程序代码
  1. 1:  PR[2,1:VIS_oft.]=R[11:VIS_X]/10           //机器人X/Y方向及角度偏移量计算
  2.   :
  3. 2:  PR[2,2:VIS_oft.]=R[12:VIS_Y]/10
  4.   :
  5. 3:  PR[2,3:VIS_oft.]=0
  6. 4:  PR[2,4:VIS_oft.]=0
  7. 5:  PR[2,5:VIS_oft.]=0
  8. 6:  PR[2,6:VIS_oft.]=R[13:VIS_R]/
  9.   :  1000
  10. [End]
复制代码

平面放片程序代码
  1. 1:  DO[25:Xi_zj]=OFF                                //输出信号"[25:Xi_zj]"(吸真空中间)变成OFF       
  2. 2:  DO[26:Xi_lb]=OFF                                //输出信号"[26:Xi_lb]"(吸真空两边)变成OFF
  3. 3:  DO[27:Xi_PCB]=OFF                               //输出信号"[27:Xi_PCB]"(吸真空PCB)变成OFF
  4. 4:  DO[28:Po_ZJ]=ON                                 //输出信号"[28:Po_ZJ]"(破真空中间)变成ON
  5. 5:  DO[29:Po_lb]=ON                                 //输出信号"[29:Po_lb]"(破真空两边)变成ON
  6. 6:  DO[30:Po_pcb]=ON                                //输出信号"[30:Po_pcb]"(破真空PCB)变成ON
  7. 7:
  8. 8:  WAIT DI[25:ZJ1]=OFF AND                         //等待输入信号"[25:ZJ1]""[26:ZJ2]""[27:LB]""[28:PCB]""[31:ZJ3]"变成OFF
  9.   :  DI[26:ZJ2]=OFF AND DI[27:LB]=OFF
  10.   :  AND DI[28:PCB]=OFF AND
  11.   :  DI[31:ZJ3]=OFF
  12. 9:  WAIT   .20(sec)                                 //等待0.2秒
  13. 10:  DO[28:Po_ZJ]=OFF                                //输出信号"[28:Po_ZJ]"(破真空中间)变成OFF
  14. 11:  DO[29:Po_lb]=OFF                                //输出信号"[29:Po_lb]"(破真空两边)变成OFF
  15. 12:  DO[30:Po_pcb]=OFF                               //输出信号"[30:Po_pcb]"(破真空PCB)变成OFF
  16. 13:  WAIT   .50(sec)                                 //等待0.5秒
  17. 14:  END                                             //结束
  18. 15:
  19. 16:  LBL[1]                                          //标签 LBL[1]
  20. 17:  UAALM[6]
  21. 18:  ABORT
  22. [End]
复制代码

曲面放片程序代码
  1. 1:
  2. 2: DO[27:Xi_PCB]=OFF                            //输出信号"[27:Xi_PCB]"(吸真空PCB)变成OFF
  3. 3:  DO[25:Xi_zj]=OFF                             //输出信号"[25:Xi_zj]"(吸真空中间)变成OFF
  4. 4:  DO[28:Po_ZJ]=ON                              //输出信号"[30:Po_pcb]"(破真空中间)变成ON
  5. 5:  DO[30:Po_pcb]=ON                             //输出信号"[30:Po_pcb]"(破真空PCB)变成ON
  6. 6:
  7. 7:  WAIT DI[25:ZJ1]=OFF AND                      //等待输入信号"[25:ZJ1]""[26:ZJ2]""[28:PCB]""[31:ZJ3]"变成OFF
  8.   :  DI[26:ZJ2]=OFF AND DI[28:PCB]=
  9.   :  OFF  AND DI[31:ZJ3]=OFF
  10. 8:  WAIT   .30(sec)                              //等待0.3秒
  11. 9:  DO[28:Po_ZJ]=OFF                             //输出信号"[28:Po_ZJ]"(破真空中间)变成OFF
  12. 10:  DO[30:Po_pcb]=OFF                            //输出信号"[30:Po_pcb]"(破真空PCB)变成OFF
  13. 11:  
  14. 12:  DO[18:Sifu_ZheQi]=ON                         //输出信号"[18:Sifu_ZheQi]"(伺服折起)变成ON
  15. 13:  WAIT DI[18:Sifu_ZheQi]=ON                    //等待输入信号"[18:Sifu_ZheQi]"(伺服折起)变成ON
  16. 14:  DO[18:Sifu_ZheQi]=OFF                        //输出信号"[18:Sifu_ZheQi]"(伺服折起)变成OFF
  17. 15:  CALL VOID_FP_PM                              //调用平面放片程序"VOID_FP_PM "
  18. 16:  
  19. 17:
  20. 18:
  21. 19:  END                                          //结束
复制代码

取片程序代码
  1. 1:  UTOOL_NUM=1                               //工具坐标系
  2. 2:  UFRAME_NUM=0                              //用户坐标系
  3. 3:
  4. 4:  DO[6:QuPianZhong]=ON                      //输出信号"[6:QuPianZhong]"(取片中)变成ON
  5. 5:  DO[31:Dingchu]=OFF                        //输出信号"[31:Dingchu]"(撕膜点气缸顶出)变成OFF
  6. 6:  DO[32:SuoHui]=ON                          //输出信号"[32:SuoHui]"(伺服缩回)变成ON
  7. 7:  DO[18:Sifu_ZheQi]=OFF                     //输出信号"[18:Sifu_ZheQi]"(伺服折起)变成OFF
  8. 8:  DO[17:Sifu_DaKai]=ON                      //输出信号"[17:Sifu_DaKai]"(伺服打开)变成ON
  9. 9:  WAIT DI[30:HuiDaiWei]=ON AND              //等待输入信号"[30:HuiDaiWei]""[17:Sifu_DaKai]"变成ON
  10.   :  DI[17:Sifu_DaKai]=ON
  11. 10:  DO[17:Sifu_DaKai]=OFF                     //输出信号"[17:Sifu_DaKai]"(伺服打开)变成OFF
  12. 11:
  13. 12:J  P[1] 100% CNT80                          //关节位置P[1]
  14. 13:J  P[4] 100% CNT80                          //关节位置P[4]
  15. 14:
  16. 15:L  P[3] 2000mm/sec CNT30                    //直线位置P[3]
  17.   :  Tool_Offset,PR[18:QP_oft1]
  18. 16:
  19. 17:L  P[3] 2000mm/sec FINE                     //直线位置P[3]                  
  20. 18:
  21. 19:  CALL VOID_XIPIAN                          //调用吸片程序"VOID_XIPIAN  "
  22. 20:L  P[3] 100mm/sec CNT100                    //直线位置P[3]
  23.   :  Tool_Offset,PR[19:QP_oft2]
  24. 21:L  P[3] 300mm/sec CNT50                     //直线位置P[3]
  25.   :  Tool_Offset,PR[20:QP_oft3]
  26. 22:J  P[2] 100% CNT100                         //关节位置P[2]
  27. 23:J  PR[1:Home_pos.] 100% CNT50               //关节位置PR[1:Home_pos.] 即原点
  28. 24:  DO[7:QuPianWanChen]=PLUSE,2.0sec          //输出信号"[7:QuPianWanChen]"(取片完成)并暂停2秒
  29. 25:  DO[6:QuPianZhong]=OFF                     //输出信号"[6:QuPianZhong]"(取片中)变成OFF
  30. [End]                                          //结束
复制代码

人工撕膜程序代码
  1. 1:  UTOOL_NUM=1                                 //工具坐标系
  2. 2:  UFRAME_NUM=0                                //用户坐标系
  3. 3:  DO[11:ShouDongSiMoQU]=ON                    //输出信号"[11:ShouDongSiMoQU]"(手动撕膜去)变成ON
  4. 4:J  P[1] 100% CNT100                           //关节位置P[1]
  5. 5:J  P[2] 100% CNT100                           //关节位置P[2]
  6. 6:J  P[3] 100% CNT100                           //关节位置P[3]
  7. 7:L  P[5] 2500mm/sec CNT100                     //直线位置P[5]
  8. 8:L  P[4] 1500mm/sec FINE                       //直线位置P[4]
  9. 9:  DO[12:ShouDongSiMoDaiWei]=ON                //输出信号"[12:ShouDongSiMoDaiWei]"(手动撕膜到位)变成ON
  10. 10:  WAIT DI[10:ShouDongSiMoWanChen]=            //等待输入信号"[10:ShouDongSiMoWanChen]"(手动撕膜完成)变成ON
  11.   :  ON
  12. 11:  DO[12:ShouDongSiMoDaiWei]=OFF               //输出"[12:ShouDongSiMoDaiWei]"(手动撕膜完成)变成OFF
  13. 12:L  P[5] 1500mm/sec CNT100 ACC80               //直线位置P[5]
  14. 13:L  P[3] 2500mm/sec CNT50                      //直线位置P[3]
  15. 14:  DO[11:ShouDongSiMoQU]=OFF                   //输出信号"[11:ShouDongSiMoQU]"(手动撕膜去)变成OFF
  16. 15:J  P[2] 100% CNT100                           //关节位置P[2]
  17. 16:J  P[1] 100% CNT100                           //关节位置P[1]
  18. [End]                                            //结束
复制代码

吸片程序代码
  1. 1:  DO[28:Po_ZJ]=OFF                            //输出信号"[28:Po_ZJ]"(破真空中间)变成OFF
  2. 2:  DO[29:Po_lb]=OFF                            //输出信号"[29:Po_lb]"(破真空两边)变成OFF
  3. 3:  DO[30:Po_pcb]=OFF                           //输出信号"[30:Po_pcb]"(破真空PCB)变成OFF
  4. 4:  DO[25:Xi_zj]=ON                             //输出信号"[25:Xi_zj]"(吸真空中间)变成ON
  5. 5:  D0[26:Xi_lb]=ON                             //输出信号"[26:Xi_lb]"(吸真空两边)变成ON
  6. 6:  DO[27:Xi_PCB]=ON                            //输出信号"[27:Xi_PCB]"(吸真空PCB)变成ON
  7. 7:
  8. 8:  WAIT DI[25:ZJ1]=ON AND DI[27:LB]            //等待输入信号"[25:ZJ1]""[27:LB]""[28:PCB]""[26:ZJ2]""[31:ZJ3]"变成ON
  9.   :  =ON AND DI[28:PCB]=ON AND
  10.   :  DI[26:ZJ2]==ON AND DI[31:ZJ3]=ON
  11.   :
  12. 9:  WAIT    .30(sec)                            //等待0.3秒
  13. 10:  END                                         //结束
  14. 11:
  15. 12:  LBL[1]                                      
  16. 13:  UALM[3]
  17. 14:  ABROT
  18. [End]
复制代码

主程序代码
  1. 1:  DO[28:Po_ZJ]=OFF                            //输出信号"[28:Po_ZJ]"(破真空中间)变成OFF
  2. 2:  DO[29:Po_lb]=OFF                            //输出信号"[29:Po_lb]"(破真空两边)变成OFF
  3. 3:  DO[30:Po_pcb]=OFF                           //输出信号"[30:Po_pcb]"(破真空PCB)变成OFF
  4. 4:  DO[25:Xi_zj]=ON                             //输出信号"[25:Xi_zj]"(吸真空中间)变成ON
  5. 5:  D0[26:Xi_lb]=ON                             //输出信号"[26:Xi_lb]"(吸真空两边)变成ON
  6. 6:  DO[27:Xi_PCB]=ON                            //输出信号"[27:Xi_PCB]"(吸真空PCB)变成ON
  7. 7:
  8. 8:  WAIT DI[25:ZJ1]=ON AND DI[27:LB]            //等待输入信号"[25:ZJ1]""[27:LB]""[28:PCB]""[26:ZJ2]""[31:ZJ3]"变成ON
  9.   :  =ON AND DI[28:PCB]=ON AND
  10.   :  DI[26:ZJ2]==ON AND DI[31:ZJ3]=ON
  11.   :
  12. 9:  WAIT    .30(sec)                            //等待0.3秒
  13. 10:  END                                         //结束
  14. 11:
  15. 12:  LBL[1]                                      
  16. 13:  UALM[3]
  17. 14:  ABROT
  18. [End]
复制代码

自动撕膜程序代码
  1. 1:  UTOOL_NUM=1                                   //工具坐标系
  2. 2:  UFRAME_NUM=0                                  //用户坐标系
  3. 3:
  4. 4:  DO[8:ZiDongSiMoQU]=ON                         //输出信号"[8:ZiDongSiMoQU]"(自动撕膜去)变成ON
  5. 5:  DO[32:Suohui]=OFF                             //输出信号"[32:Suohui]"(气缸缩回)变成OFF
  6. 6:J  P[1] 100% CNT100 TA   0.00sec,               //关节位置P[1]  
  7.   :  DO[31:Dingchu]=ON                             //输出信号"[31:Dingchu]"(气缸顶出)变成ON
  8. 7:J  P[2] 100% CNT100                             //关节位置P[2]
  9. 8:L  P[4] 800mm/sec FINE                          //直线位置P[4]
  10. 9:  WAIT    .10(sec)                              //等待0.1秒
  11. 10:  WAIT DI[29:DingDaoWei]=ON                     //等待输入信号[29:DingDaoWei](顶到位)变成ON
  12. 11:  DO[9:ZiDongSiMoWei]=                          //输出信号"[9:ZiDongSiMoWei]"(自动撕膜位)脉冲动作并等待2秒
  13.   :  PLUSE,2.0sec
  14. 12:  WAIT DI[5:ZiDongSiMoQingXie]=ON               //等待输入信号"[5:ZiDongSiMoQingXie]"(自动撕膜倾斜)变成ON
  15.   :
  16. 13:L  P[5] 400mm/sec FINE                          //直线位置P[5]
  17. 14:  DO[10:ZiDongSiMoQingXieDaoWei]=               //输出信号"[10:ZiDongSiMoQingXieDaoWei]"(自动撕膜倾斜到位)变成ON
  18.   :  ON
  19. 15:  DO[31:Dingchu]=OFF                            //输出信号"[31:Dingchu]"(气缸顶出)变成OFF
  20. 16:  DO[32:Suohui]=ON                              //输出信号"[32:Suohui]"(气缸缩回)变成ON
  21. 17:  
  22. 18:  WAIT DI[6:ZiDongSiMoWanChen]=ON               //等待输入信号"[6:ZiDongSiMoWanChen]""[7:ZiDongSiMoShiBai]"变成ON
  23.   :  OR DI[7:ZiDongSiMoShiBai]=ON
  24. 19:  DO[10:ZiDongSiMoQingXieDaoWei]=               //输出信号"[10:ZiDongSiMoQingXieDaoWei]"变成OFF
  25.   :  OFF
  26. 20:
  27. 21:  IF DI[6:ZiDongSiMoWanChen]=ON                 //如果输入信号"[6:ZiDongSiMoWanChen]"(自动撕膜完成)变成ON
  28.   :  JMP LBL[1]                                    //跳转到标签LBL[1]
  29. 22:  IF DI[7:ZiDongSiMoShiBai]=ON,                 //如果输入信号"[7:ZiDongSiMoShiBai]"(自动撕膜失败)变成ON
  30.   :  JMP LBL[2]                                    //跳转到标签LBL[2]
  31. 23:  UALM[1]
  32. 24:
  33. 25:  LBL[1]                                        //标签 LBL[1]
  34. 26:J  P[10] 100% CNT100                            //关节位置P[10]
  35. 27:J  P[1] 100% CNT100                             //关节位置P[1]
  36. 28:  DO[8:ZiDongSiMoQu]=OFF                        //输出信号"[8:ZiDongSiMoQu]"变成OFF
  37. 29:  END                                           //结束
  38. 30:  
  39. 31:  LBL[2]                                        //标签 LBL[2]  
  40. 32:J  P[10] 100% CNT100                            //关节位置 P[10]
  41. 33:J  P[1] 100% CNT100                             //关节位置 P[1]
  42. 34:  DO[8:ZiDongSiMoQU]=OFF                        //输出信号"[8:ZiDongSiMoQU]"(自动撕膜去)变成OFF
  43. 35:  CALL R_MANUAL                                 //调用人工撕膜程序"R_MANUAL"
  44. [End]                                              //结束
复制代码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则