找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 540|回复: 2

B6齿轮连杆上料及装配工站

[复制链接]

351

主题

341

回帖

2433

积分

管理员

积分
2433
发表于 2025-3-11 10:00:26 来自手机 | 显示全部楼层 |阅读模式
B6齿轮连杆上料及装配工站
回复

使用道具 举报

351

主题

341

回帖

2433

积分

管理员

积分
2433
 楼主| 发表于 2025-5-22 03:28:19 | 显示全部楼层
B6.xlsx (19.47 KB, 下载次数: 0)

DLP_CCD.txt (2.18 KB, 下载次数: 0)

MAIN.txt (56.95 KB, 下载次数: 0)

回复

使用道具 举报

351

主题

341

回帖

2433

积分

管理员

积分
2433
 楼主| 发表于 2025-5-22 03:28:39 | 显示全部楼层
'/////////////////////////////////////////////////////////////
'*/项目:XYO-B06 齿轮1&2组装上料                            /*
'*/项目工程师: zhou               Tel:136****7606         /*
'*/项目启动时间:2024/3/10                                  /*
'/////////////////////////////////////////////////////////////
'*/机械手系统IP:192.168.61.102.1102(系统指令&编程)         /*
'*/机械手通讯IP:192.168.61.102.2102(PLC通讯)               /*
'*/机械手通讯IP:192.168.61.56.8500(相机通讯)               /*
'/////////////////////////////////////////////////////////////
'
'***************************SO输出信号说明****************************
'SO2(0):取料完成1                   SO3(0):初始化正常结束
'SO2(1):取料完成2                   SO3(1):初始化异常结束
'SO2(2):取料完成3                   SO3(2):
'SO2(3):取料完成4                   SO3(3):
'SO2(4):放料完成1                   SO3(4):
'SO2(5):放料完成2                   SO3(5):
'SO2(6):放料完成3                   SO3(6): 抖料盘触发
'SO2(7):放料完成4                   SO3(7):
'
'SO4(0):快换盘阀去基本位            SO5(0):取料3阀去基本位
'SO4(1):快换盘阀去工作位            SO5(1):取料3阀去工作位
'SO4(2):旋转气缸去基本位            SO5(2):取料4阀去基本位
'SO4(3):旋转气缸去工作位            SO5(3):取料4阀去工作位
'SO4(4):取料1阀去基本位             SO5(4):吸真空1去基本位
'SO4(5):取料1阀去工作位             SO5(5):吸真空1去工作位
'SO4(6):取料2阀去基本位             SO5(6):吸真空2去基本位
'SO4(7):取料2阀去工作位             SO5(7):吸真空2去工作位
'
'SO6(0):油脂1阀输出                 SO7(0):快换盘异常报警
'SO6(1):油脂2阀输出                 SO7(1):连续取料失败提示(上升沿接收黄灯提示不停机)
'SO6(2):油脂3阀输出                 SO7(2):连续NG报警输出(上升沿接收红灯报警提示需复位)
'SO6(3):旋转气缸去工作位            SO7(3):
'SO6(4):毛刷转动输出                SO7(4):
'SO6(5):扫码请求                    SO7(5):
'SO6(6):                            SO7(6):
'SO6(7):                            SO7(7):
'
'SO10():发料号(编号)
'SO11():快换盘放完(编号)
'SO12():快换盘取完(编号)
'SO13():预留数字输出
'***************************SI输入信号说明****************************
'SI2(0):允许取料1                   SI3(0):物料感应1(抓手1)
'SI2(1):允许取料2                   SI3(1):物料感应2(抓手2)
'SI2(2):允许取料3                   SI3(2):物料感应3(抓手3)
'SI2(3):允许取料4                   SI3(3): 中转感应器1
'SI2(4):流线允许放1                 SI3(4): 中转感应器2
'SI2(5):流线允许放2                 SI3(5): 中转感应器3
'SI2(6):流线允许放3                 SI3(6): 抖料盘已就绪
'SI2(7):流线允许放4                 SI3(7):
'
'SI4(0):快换盘阀在基本位            SI5(0):取料3阀在基本位
'SI4(1):快换盘阀在工作位            SI5(1):取料3阀在工作位
'SI4(2):旋转气缸在基本位            SI5(2):取料4阀在基本位
'SI4(3):旋转气缸在工作位            SI5(3):取料4阀在工作位
'SI4(4):取料1阀在基本位             SI5(4):吸真空1在基本位
'SI4(5):取料1阀在工作位             SI5(5):吸真空1在工作位
'SI4(6):取料2阀在基本位             SI5(6):吸真空2在基本位
'SI4(7):取料2阀在工作位             SI5(7):吸真空2在工作位
'
'SI6(0):                            SI7(0):
'SI6(1):                            SI7(1):
'SI6(2):                            SI7(2):连续NG接收复位
'SI6(3):                            SI7(3):
'SI6(4):                            SI7(4):
'SI6(5):                            SI7(5):
'SI6(6):                            SI7(6):
'SI6(7):                            SI7(7):
'
'SI10():收料号(编号)
'SI11():收换盘放完(编号)
'SI12():收换盘取完(编号)
'SI13():预留数字输入                  
'########################## 点位说明 #############################
'P0:HOME
'P1: 预留
'P2: 取料侧过渡点(正常手系)
'P3: 放料侧过渡点(正常手系)
'P4: 取料侧过渡点(相反手系)
'P5: 放料侧过渡点(相反手系)
'P6: 预留
'P7: 计算占用1
'P8: 计算占用2
'P9: 计算占用3
'P10~P14: 快换盘放1~5位
'P15~P19: 快换盘取1~5位
'P20~P24: 快换盘外侧1~5位(取快换盘后向外偏移)
'P25: 快换盘放总过渡(去放快换盘时外侧总过渡点)
'P26: 快换盘取总过渡(去取快换盘时外侧总过渡点)
'P30~P34: NG排料位置1~5位
'P40~P49: 刮油路径
'
'料号1----取放点位
'P100--P103:取码垛A1(4点码垛占用_-物料1)
'P104--P105:取抖料盘1&2(两个抖料盘点)
'P106--P107:取中转1&2(中转启用时中转取料点)
'P110--P111:放中转1&2(中转启用时中转放料点)
'P112--P114:放流线1&2&3(放入流线时点位)
'P115--P116:放流线1&2&3辅助(放入流线时点位辅助)
'P120--P139:涂油点位(涂油轨迹占用)
'P140--P145:刮油点位(清理毛刷)
'P150--P153:取码垛B1(4点码垛占用_-物料2)
'
'料号2----取放点位
'P200--P203:取码垛A2(4点码垛占用_-物料1)
'P204--P205:取抖料盘1&2(两个抖料盘点)
'P206--P207:取中转1&2(中转启用时中转取料点)
'P210--P211:放中转1&2(中转启用时中转放料点)
'P212--P214:放流线1&2&3(放入流线时点位)
'P215--P216:放流线1&2&3辅助(放入流线时点位辅助)
'P220--P239:涂油点位(涂油轨迹占用)
'P240--P245:刮油点位(清理毛刷)
'P250--P253:取码垛B2(4点码垛占用_-物料2)
'
'料号3----取放点位
'P300--P303:取码垛A3(4点码垛占用_-物料1)
'P304--P305:取抖料盘1&2(两个抖料盘点)
'P306--P307:取中转1&2(中转启用时中转取料点)
'P310--P311:放中转1&2(中转启用时中转放料点)
'P312--P314:放流线1&2&3(放入流线时点位)
'P315--P316:放流线1&2&3辅助(放入流线时点位辅助)
'P320--P339:涂油点位(涂油轨迹占用)
'P340--P345:刮油点位(清理毛刷)
'P350--P353:取码垛B3(4点码垛占用_-物料2)
'
'###########################  建立通讯  #############################
*GOHOME:
  START <CCD_ONLINE>,T2,T33                  '启动相机连接子任务,T2=任务号,T33=任务等级                     
  WAIT GEPSTS(0)>0                           '等待和相机建立连接     
  START <CCD>,T3,T34                         '启动相机通讯子任务                                                  
  START <DLP_CCD>,T4,T35                     '启动抖料盘1控制子程序                       
'*********************初始化参数****************************
ASPEED 5                                     '初始化速度(自动速度在MAIN第一步设置)
ACCEL 90                                     '加速率
DECEL 90                                     '减速度
DO2()=0                                      '复位所有输出信号
DO3()=0                                      '复位所有输出信号
SO2()=0                                      '复位所有输出信号
SO3()=0                                      '复位所有输出信号
SO4()=0                                      '复位所有输出信号
SO5()=0                                      '复位所有输出信号
SO6()=0                                      '复位所有输出信号
SO7()=0                                      '报警输出=0
SO10()=0                                     '发料号=0
SO11()=0                                     '快换盘放料号=0
SO12()=0                                     '快换盘取料号=0
HIGH%=100                                    '高速率
LOW%=80                                      '低速率
MIN%=50                                      '最低速率
Z!=0.00                                      '门型移动时Z安全高度
Z1!=40.00                                    '抬升高度
SGI1=0                                       '取料1连续NG计数清零
SGI2=0                                       '取料2连续NG计数清零
SGI3=0                                       '取料3连续NG计数清零
SGI4=0                                       '取料1连续NG计数清零
SGI5=0                                       '取料2连续NG计数清零
SGI6=0                                       '取料3连续NG计数清零
LOC3(P0)=Z!                                  '第三轴的值改为Z!
LOC3(P2)=Z!                                  '第三轴的值改为Z!
LOC3(P3)=Z!                                  '第三轴的值改为Z!
LOC3(P4)=Z!                                  '第三轴的值改为Z!
LOC3(P5)=Z!                                  '第三轴的值改为Z!
MOTOR ON                                     '电机马达ON
'
DRIVE(3,Z!),CONT,S=HIGH%                     '第三轴移动到Z!
'旋转气缸复位/上下1
SO5(1,0)=&B01                                '上下气缸1去基本位
SO5(3,2)=&B01                                '上下气缸2去基本位
'WAIT SI5(0)=1                                '等待上下气缸1在基本位
'WAIT SI5(2)=1                                '等待上下气缸2在基本位
'*********************初始化判断****************************
*PANDUAN:
''获取机器人当前位置
P5000=WHRXY                                   '开机运行,将当前点坐标强制写入P5000
X!=LOC1(P5000)                                'X!等于P5000内X轴坐标值
Y!=LOC2(P5000)                                'Y!等于P5000内Y轴坐标值
R!=LOC4(P5000)                                'U!等于P5000内U轴坐标值
''左右手系判断
A%=ARMCND                                     'ARMCND为0=右手系统,1=左手系统,
IF A%=1 THEN
GOTO *R1                                     '去右手系统状态的位置判断
ELSE
GOTO *L1                                     '去左手系统状态的位置判断
ENDIF
'
''''根据机器人当前位置区不同的过渡点
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
*L1:
LEFTY                                         '左手臂姿态
IF X!<-250.00 THEN                            '机械手在取料侧
DRIVE(3,Z!),S=HIGH%                           '第三轴移动到Z!
MOVE L,P4,CONT                                '到取料过渡点反手
MOVE P,P2,CONT                                '到取料过渡点正手
MOVE P,P0                                     '到HOME点
ELSEIF X!>=250.00 AND X!<=630.00 THEN         '判断机器人区域
DRIVE(3,Z!),S=HIGH%
MOVE P,P5,CONT                                '到放料过渡点右手
MOVE P,P3,CONT                                '到放料过渡点正手
MOVE L,P2,CONT                                '到取料过渡点正手
MOVE P,P0                                     '到HOME点
ELSEIF X!>630.00 THEN                         '判断机器人区域(刚好在装配位置)
DRIVE(3,Z!),S=HIGH%
P8=WHRXY                                      '当前位置赋给P8
LOC1(P8)=630                                  '第三轴的值改为Z!
MOVE L,P8                                     '到取料过渡点左手
MOVE P,P5,CONT                                '到放料过渡点右手
MOVE P,P3,CONT                                '到放料过渡点正手
MOVE L,P2,CONT                                '到取料过渡点正手
MOVE P,P0                                     '到HOME点
ELSEIF X!>=-250.00 AND X!<=250.00 THEN        '判断机器人区域
DRIVE(3,Z!),S=HIGH%
P8=WHRXY                                      '当前位置赋给P8
LOC2(P8)=600                                  '第三轴的值改为Z!
MOVE L,P8                                     'Y轴到安全距离
MOVE L,P5,CONT                                '到放料过渡点右手
MOVE P,P3,CONT                                '到放料过渡点正手
MOVE L,P2,CONT                                '到取料过渡点正手
MOVE P,P0                                     '到HOME点
ENDIF
GOTO *QIGANGFUWEI
''''根据机器人当前位置区不同的过渡点
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
*R1:
RIGHTY                                        '右手臂姿态
IF X!<-250.00 THEN                            '机械手在取料侧
DRIVE(3,Z!),S=HIGH%                           '第三轴移动到Z!
MOVE P,P2,CONT                                '到取料过渡点正手
MOVE P,P0                                     '到HOME点
ELSEIF X!>=250.00 AND X!<=630.00 THEN         '判断机器人区域
DRIVE(3,Z!),S=HIGH%
MOVE P,P3,CONT                                '到放料过渡点正手
MOVE L,P2,CONT                                '到取料过渡点正手
MOVE P,P0                                     '到HOME点
ELSEIF X!>630.00 THEN                         '判断机器人区域(刚好在装配位置)
DRIVE(3,Z!),S=HIGH%
P8=WHRXY                                      '当前位置赋给P8
LOC1(P8)=630                                  '第三轴的值改为Z!
MOVE L,P8                                     '到取料过渡点左手
MOVE P,P3,CONT                                '到放料过渡点正手
MOVE L,P2,CONT                                '到取料过渡点正手
MOVE P,P0                                     '到HOME点
ELSEIF X!>=-250.00 AND X!<=250.00 THEN        '判断机器人区域
DRIVE(3,Z!),S=HIGH%
P8=WHRXY                                      '当前位置赋给P8
LOC2(P8)=600                                  '第三轴的值改为Z!
MOVE L,P8                                     'Y轴到安全距离
MOVE L,P2,CONT                                '到取料过渡点正手
MOVE P,P0                                     '到HOME点
ENDIF
GOTO *QIGANGFUWEI
'
'
''''气缸按需复位
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
*QIGANGFUWEI:
'快换盘阀门复位
SO4(1,0)=&B10                               '快换盘基本位
'WAIT SI4(0)=1                                 '等待快换盘到基本位
IF SI11()=0 AND SI12()<>0 THEN                  '如果机械手上无抓手
    GOSUB *KUAIHUAN
    ENDIF
IF SI10()=0 OR SI10()=1 THEN                    '获取PLC料号
   MOVE P,P30,Z=Z!,S=HIGH%                     '到NG1排料位  
ELSEIF  SI10()=2  THEN                         '获取PLC料号
   MOVE P,P31,Z=Z!,S=HIGH%                     '到NG2排料位
ELSEIF  SI10()=3  THEN                         '获取PLC料号
   MOVE P,P32,Z=Z!,S=HIGH%                     '到NG3排料位     
ELSEIF  SI10()=4  THEN                         '获取PLC料号
   MOVE P,P33,Z=Z!,S=HIGH%                     '到NG4排料位      
ENDIF
WAIT ARM
'旋转气缸置位
IF SI4(5)=1 THEN                              '如果夹爪气缸不在基本位
   SO4(3,2)=&B10                            '旋转气缸去工作位
   WAIT SI4(3)=1                              '等待快旋转气缸到工作位
   DELAY 300  
   ENDIF
'取料1气缸复位
SO4(5,4)=&B01                               '取料1气缸基本位
WAIT SI4(4)=1                                 '等待取料1气缸到基本位
'取料2气缸复位
SO4(7,6)=&B01                               '取料2气缸基本位
WAIT SI4(6)=1                                 '等待取料2气缸到基本位
'取料3气缸复位
SO5(1,0)=&B01                               '取料3气缸基本位
WAIT SI5(0)=1                                 '等待取料3气缸到基本位
'取料4气缸复位
SO5(3,2)=&B01                               '取料4气缸基本位
WAIT SI5(2)=1                                 '等待取料4气缸到基本位
'真空发生器1复位
SO5(5,4)=&B01                               '真空吸取1基本位
WAIT SI5(4)=1                                 '真空吸取1基本位到基本位
'真空发生器2复位
SO5(7,6)=&B01                               '真空吸取2基本位
WAIT SI5(6)=1                                 '真空吸取2基本位到基本位
'旋转气缸复位
SO4(3,2)=&B01                                '旋转气缸基本位
WAIT SI4(2)=1                                  '等待快旋转气缸到基本位  
'
DELAY 300
MOVE P,P0                                      '到HOME点                              
GOTO *KUAIHUAN
'
'****************************快换盘处理***************************
'****************************快换盘处理***************************
'****************************快换盘处理***************************
*KUAIHUAN:
GOTO *KUAIHUAN1                             '暂时屏蔽快换功能,需要时本行删除
IF SI11()<>1 AND SI11()<>2 AND SI11()<>3 OR SI12()=0 THEN    '允许放都不对和允许取为0
    SO7(0)=1                                   '快换识别异常ON
    WAIT SI7(0)=1                            '等待清除快换识别异常
    SO7(0)=0                                   '快换识别异常OFF
    WAIT SI7(0)=0                              '等待清除快换识别异常
    GOTO *KUAIHUAN
ELSEIF SI11()<>0 AND SI12()<>0 THEN        '必须有地方放和有地方取
    GOSUB *KUAI_HUAN_FANG
    GOSUB *KUAI_HUAN_QU   
ENDIF
*KUAIHUAN1:
SO3(0) =1                                     '任务完成开(初始化完成)
DELAY 1000                                    '等待PLC 1秒
SO3(0) =0                                     '任务完成关(初始化完成)
GOTO *MAIN
'****************************快换盘放***************************
*KUAI_HUAN_FANG:
IF SI11()=1 THEN
DRIVE(3,Z!),CONT,S=HIGH%                     'Z到安全高度
P9=P20                                       '放快换盘过渡点1
P8=P10                                       '放快换盘1位  
LOC3(P9)=Z!                                  '第三轴的值改为Z!
LOC3(P8)=Z!                                  '第三轴的值改为Z!
LOC3(P25)=Z!                                 '第三轴的值改为Z!
MOVE L,P25,S=HIGH%                           '到快换进入位
MOVE L,P9,S=HIGH%                            '到过渡点上方
MOVE L,P8,S=LOW%                             '到放盘上方
MOVE L,P10,S=MIN%                            '到放盘释放位1
WAIT ARM
SO4(0)=0                                      '快换盘基本位
SO4(1)=1                                      '快换盘工作位
DELAY 300
WAIT SI4(1)=1                                 '等待到位
DRIVE(3,Z!),CONT,S=HIGH%                                   '第三轴移动到Z!
SO11()=1                                      '回复PLC放完编号
WAIT SI11()=0                                 '等待PLC清除放请求
SO11()=0                                      '回复PLC放完编号
'
ELSEIF SI11()=2 THEN
DRIVE(3,Z!),CONT,S=HIGH%                                  'Z到安全高度
P9=P21                                       '放快换盘过渡点2
P8=P11                                       '放快换盘2位  
LOC3(P9)=Z!                                  '第三轴的值改为Z!
LOC3(P8)=Z!                                  '第三轴的值改为Z!
LOC3(P25)=Z!                                 '第三轴的值改为Z!
MOVE L,P25,S=HIGH%                           '到快换进入位
MOVE L,P9,S=HIGH%                            '到过渡点上方
MOVE L,P8,S=LOW%                             '到放盘上方
MOVE L,P11,S=MIN%                            '到放盘释放位2
WAIT ARM
SO4(0)=0                                      '快换盘基本位
SO4(1)=1                                      '快换盘工作位
DELAY 300
WAIT SI4(1)=1                                 '等待到位
DRIVE(3,Z!),CONT,S=HIGH%                                   '第三轴移动到Z!
SO11()=2                                      '回复PLC放完编号
WAIT SI11()=0                                 '等待PLC清除放请求
SO11()=0                                      '回复PLC放完编号
'
ELSEIF SI11()=3 THEN
DRIVE(3,Z!),CONT,S=HIGH%                                  'Z到安全高度
P9=P22                                       '放快换盘过渡点3
P8=P12                                       '放快换盘3位  
LOC3(P9)=Z!                                  '第三轴的值改为Z!
LOC3(P8)=Z!                                  '第三轴的值改为Z!
LOC3(P25)=Z!                                 '第三轴的值改为Z!
MOVE L,P25,S=HIGH%                           '到快换进入位
MOVE L,P9,S=HIGH%                            '到过渡点上方
MOVE L,P8,S=LOW%                             '到放盘上方
MOVE L,P12,S=MIN%                            '到放盘释放位3
WAIT ARM
SO4(0)=0                                      '快换盘基本位
SO4(1)=1                                      '快换盘工作位
DELAY 300
WAIT SI4(1)=1                                 '等待到位
DRIVE(3,Z!),CONT,S=HIGH%                                   '第三轴移动到Z!
SO11()=3                                      '回复PLC放完编号
WAIT SI11()=0                                 '等待PLC清除放请求
SO11()=0                                      '回复PLC放完编号
'
ELSEIF SI11()=4 THEN
DRIVE(3,Z!),CONT,S=HIGH%                                  'Z到安全高度
P9=P23                                       '放快换盘过渡点4
P8=P13                                       '放快换盘4位  
LOC3(P9)=Z!                                  '第三轴的值改为Z!
LOC3(P8)=Z!                                  '第三轴的值改为Z!
LOC3(P25)=Z!                                 '第三轴的值改为Z!
MOVE L,P25,S=HIGH%                           '到快换进入位
MOVE L,P9,S=HIGH%                            '到过渡点上方
MOVE L,P8,S=LOW%                             '到放盘上方
MOVE L,P13,S=MIN%                            '到放盘释放位4
WAIT ARM
SO4(0)=0                                      '快换盘基本位
SO4(1)=1                                      '快换盘工作位
DELAY 300
WAIT SI4(1)=1                                 '等待到位
DRIVE(3,Z!),CONT,S=HIGH%                                   '第三轴移动到Z!
SO11()=4                                      '回复PLC放完编号
WAIT SI11()=0                                 '等待PLC清除放请求
SO11()=0                                      '回复PLC放完编号
'
ELSEIF SI11()=5 THEN
DRIVE(3,Z!),CONT,S=HIGH%                                  'Z到安全高度
P9=P24                                       '放快换盘过渡点5
P8=P14                                       '放快换盘5位  
LOC3(P9)=Z!                                  '第三轴的值改为Z!
LOC3(P8)=Z!                                  '第三轴的值改为Z!
LOC3(P25)=Z!                                 '第三轴的值改为Z!
MOVE L,P25,S=HIGH%                           '到快换进入位
MOVE L,P9,S=HIGH%                            '到过渡点上方
MOVE L,P8,S=LOW%                             '到放盘上方
MOVE L,P14,S=MIN%                            '到放盘释放位5
WAIT ARM
SO4(0)=0                                     '快换盘基本位
SO4(1)=1                                     '快换盘工作位
DELAY 300
WAIT SI4(1)=1                                 '等待到位
DRIVE(3,Z!),CONT,S=HIGH%                                   '第三轴移动到Z!
SO11()=5                                      '回复PLC放完编号
WAIT SI11()=0                                 '等待PLC清除放请求
SO11()=0                                      '回复PLC放完编号
'
ENDIF
RETURN
'************************拾取快换盘**************************************
*KUAI_HUAN_QU:
SO4(0)=0                                      '快换盘基本位
SO4(1)=1                                      '快换盘工作位
DELAY 300
WAIT SI4(1)=1                                 '等待到位
IF SI12()=1 THEN
MOVE P,P15,Z=Z!,S=LOW%                        '到取快换盘1位  
WAIT ARM
SO4(0)=1                                      '快换盘基本位
SO4(1)=0                                      '快换盘工作位
DELAY 300
WAIT SI4(0)=1                                 '等待到位
DRIVE(3,Z!),CONT,S=HIGH%                                   '第三轴移动到Z!
P9=P20                                        '放快换盘过渡点1
P8=P25                                        '快换进出位(共用)
LOC3(P9)=Z!                                   '第三轴的值改为Z!
LOC3(P8)=Z!                                   '第三轴的值改为Z!
MOVE L,P9,S=LOW%                              '到取放位外侧(外侧)
MOVE L,P8,S=LOW%                              '到快换盘离开区域(外侧旁边)
SO12()=1                                      '回复PLC放完编号'
WAIT SI12()=0                                 '等待PLC清除取请求
SO12()=0                                      '回复PLC放完编号
'
ELSEIF SI12()=2 THEN
MOVE P,P16,Z=Z!,S=LOW%                        '到取快换盘2位  
WAIT ARM
SO4(0)=1                                      '快换盘基本位
SO4(1)=0                                      '快换盘工作位
DELAY 300
WAIT SI4(0)=1                                 '等待到位
DRIVE(3,Z!),CONT,S=HIGH%                                   '第三轴移动到Z!
P9=P21                                        '放快换盘过渡点2
P8=P25                                        '快换进出位(共用)
LOC3(P9)=Z!                                   '第三轴的值改为Z!
LOC3(P8)=Z!                                   '第三轴的值改为Z!
MOVE L,P9,S=LOW%                              '到取放位外侧(外侧)
MOVE L,P8,S=LOW%                              '到快换盘离开区域(外侧旁边)
SO12()=2                                      '回复PLC放完编号'
WAIT SI12()=0                                 '等待PLC清除取请求
SO12()=0                                      '回复PLC放完编号
'
ELSEIF SI12()=3 THEN
MOVE P,P17,Z=Z!,S=LOW%                        '到取快换盘3位  
WAIT ARM
SO4(0)=1                                      '快换盘基本位
SO4(1)=0                                      '快换盘工作位
DELAY 300
WAIT SI4(0)=1                                 '等待到位
DRIVE(3,Z!),CONT,S=HIGH%                                   '第三轴移动到Z!
P9=P22                                        '放快换盘过渡点3
P8=P25                                        '快换进出位(共用)
LOC3(P9)=Z!                                   '第三轴的值改为Z!
LOC3(P8)=Z!                                   '第三轴的值改为Z!
MOVE L,P9,S=LOW%                              '到取放位外侧(外侧)
MOVE L,P8,S=LOW%                              '到快换盘离开区域(外侧旁边)
SO12()=3                                      '回复PLC放完编号'
WAIT SI12()=0                                 '等待PLC清除取请求
SO12()=0                                      '回复PLC放完编号
'
ELSEIF SI12()=4 THEN
MOVE P,P18,Z=Z!,S=LOW%                        '到取快换盘4位  
WAIT ARM
SO4(0)=1                                      '快换盘基本位
SO4(1)=0                                      '快换盘工作位
DELAY 300
WAIT SI4(0)=1                                 '等待到位
DRIVE(3,Z!),CONT,S=HIGH%                                   '第三轴移动到Z!
P9=P23                                        '放快换盘过渡点4
P8=P25                                        '快换进出位(共用)
LOC3(P9)=Z!                                   '第三轴的值改为Z!
LOC3(P8)=Z!                                   '第三轴的值改为Z!
MOVE L,P9,S=LOW%                              '到取放位外侧(外侧)
MOVE L,P8,S=LOW%                              '到快换盘离开区域(外侧旁边)
SO12()=4                                      '回复PLC放完编号'
WAIT SI12()=0                                 '等待PLC清除取请求
SO12()=0                                      '回复PLC放完编号
'
ELSEIF SI12()=5 THEN
MOVE P,P19,Z=Z!,S=LOW%                        '到取快换盘5位  
WAIT ARM
SO4(0)=1                                      '快换盘基本位
SO4(1)=0                                      '快换盘工作位
DELAY 300
WAIT SI4(0)=1                                 '等待到位
DRIVE(3,Z!),CONT,S=HIGH%                                   '第三轴移动到Z!
P9=P24                                        '放快换盘过渡点5
P8=P25                                        '快换进出位(共用)
LOC3(P9)=Z!                                   '第三轴的值改为Z!
LOC3(P8)=Z!                                   '第三轴的值改为Z!
MOVE L,P9,S=LOW%                              '到取放位外侧(外侧)
MOVE L,P8,S=LOW%                              '到快换盘离开区域(外侧旁边)
SO12()=5                                      '回复PLC放完编号'
WAIT SI12()=0                                 '等待PLC清除取请求
SO12()=0                                      '回复PLC放完编号
ENDIF
RETURN
'
'****************************主程序***************************
'****************************主程序***************************
'****************************主程序***************************
*MAIN:
ASPEED SI14()                                        '自动速度
IF SI10()=1  THEN                               '待增加获取PLC料号
    'SEND "PW,1,1" TO GP0                          '相机模版切换
    DELAY 3000                                  '等相机切换模版反应时间
  SO10()=1                                      '回复PLC料号(左舵IP-RH)
  B%=0                                          '1=放1个料,2=放2个料
  C%=0                                          '夹爪上有料标志
  GOTO *LIAOHAO1                                '去料号1程序
ELSEIF  SI10()=2  THEN                          '待增加获取PLC料号
    'SEND "PW,1,2" TO GP0                          '相机模版切换
    DELAY 3000                                  '等相机反应时间
  SO10()=2                                      '回复PLC料号(左舵IP-LH)
  B%=1                                          '1=放1个料,2=放2个料
  C%=1                                          '1=无旋转中转,2=有旋转中转
  'GOTO *LIAOHAO2                                '去料号2程序
ELSEIF  SI10()=3  THEN                          '待增加获取PLC料号
  IF SI7(7)=1 THEN                              '如果使用相机模版切换功能
    'SEND "PW,1,3" TO GP0                          '相机模版切换
    DELAY 3000                                  '等相机反应时间
   ENDIF
  SO10()=3                                      '回复PLC料号(TC)
  ASPEED 70                                     '速度
  SGI0=1                                        '1=放1个料,2=放2个料   
  B%=1                                          '1=放1个料,2=放2个料
  C%=1                                          '1=无旋转中转,2=有旋转中转
  'GOTO *LIAOHAO3                               '去料号3程序
ELSEIF  SI10()=4  THEN                          '待增加获取PLC料号
  IF SI7(7)=1 THEN                              '如果使用相机模版切换功能
    'SEND "PW,1,4" TO GP0                          '相机模版切换
    DELAY 3000                                  '等相机反应时间
    ENDIF
  SO10()=4                                      '回复PLC料号(右舵IP-RH)
  B%=1                                          '1=放1个料,2=放2个料
  C%=1                                          '1=无旋转中转,2=有旋转中转
  'GOTO *LIAOHAO4                               '去料号4程序
ELSEIF  SI10()=5  THEN                          '待增加获取PLC料号
  IF SI7(7)=1 THEN                              '如果使用相机模版切换功能
    'SEND "PW,1,5" TO GP0                          '相机模版切换
    DELAY 3000                                  '等相机反应时间
    ENDIF
  SO6()=5                                       '回复PLC料号(右舵IP-LH)
  B%=1                                          '1=放1个料,2=放2个料
  C%=1                                          '1=无旋转中转,2=有旋转中转
  'GOTO *LIAOHAO5                               '去料号5程序
ELSEIF  SI10()=6  THEN                          '待增加获取PLC料号
  IF SI7(7)=1 THEN                              '如果使用相机模版切换功能
     'SEND "PW,1,6" TO GP0                         '相机模版切换
    DELAY 3000                                  '等相机反应时间
     ENDIF
  SO10()=6                                      '回复PLC料号
  B%=1                                          '1=放1个料,2=放2个料
  C%=1                                          '1=无旋转中转,2=有旋转中转
  'GOTO *LIAOHAO6                               '去料号6程序
ELSEIF  SI10()=7  THEN                          '待增加获取PLC料号
  IF SI7(7)=1 THEN                              '如果使用相机模版切换功能
     'SEND "PW,1,7" TO GP0                         '相机模版切换
    DELAY 3000                                  '等相机反应时间
     ENDIF
  SO10()=7                                      '回复PLC料号
  B%=1                                          '1=放1个料,2=放2个料
  C%=1                                          '1=无旋转中转,2=有旋转中转
  'GOTO *LIAOHAO7                               '去料号7程序
ELSEIF  SI10()=0  THEN                          '待增加获取PLC料号
  SO10()=0                                      '回复PLC料号
  ENDIF
  WAIT 100
GOTO *MAIN
'
'************************取料程序(料号1-TC侧)***********************************
'************************取料程序(料号1-TC侧)***********************************
'************************取料程序(料号1-TC侧)***********************************
*LIAOHAO1:
IF C%=1 AND SI3(4)=1 THEN                     '如果只剩下料1,且2有料
    GOSUB *QUZhongzhuan11                     '调用取中转2
    DRIVE(3,Z!),CONT,S=HIGH%                  '第三轴移动到Z!
    GOTO *JIANCE1                             '跳至检测(仅直接取中转时调用JIANCE1)
ELSEIF C%=2 AND SI3(3)=1 THEN                '如果只剩下料2,且1有料
    GOSUB *QUZhongzhuan1                      '调用取中转1
    DRIVE(3,Z!),CONT,S=HIGH%                  '第三轴移动到Z!
    GOTO *JIANCE1                             '跳至检测(仅直接取中转时调用JIANCE1)
    ENDIF
'以上为判断夹爪上有个别料,且中转上有料;以下是   
IF C%=0 AND SI3(3)=1 AND SI3(4)=1 THEN        '如果两个中转位都有料,且夹爪为空,则直接取料
    GOSUB *QUZhongzhuan1                      '调用取中转1
    GOSUB *QUZhongzhuan11                     '调用取中转2
    DRIVE(3,Z!),CONT,S=HIGH%                  '第三轴移动到Z!      
ELSEIF SI3(3)=0 AND SI3(4)=0 THEN             '如果两个料都没有
    GOSUB *QUDOULIAO11                        '调用取抖料1
    GOSUB *FANGhouQU11                        '调用放2后取2
    GOSUB *FANGhouQU1                         '调用放1后取1
    DRIVE(3,Z!),CONT,S=HIGH%                  '第三轴移动到Z!      
ELSEIF SI3(3)=0 AND SI3(4)=1 THEN             '如果只有中转2有料,取1放1,再取2
    GOSUB *QUDOULIAO11                        '调用取抖料1
    MOVE L,P2,S=HIGH%                         '到取料过渡点
    GOSUB *FANGhouQU1                         '调用放1后取1
    GOSUB *QUZhongzhuan11                     '调用取中转2
    DRIVE(3,Z!),CONT,S=HIGH%                  '第三轴移动到Z!        
ELSEIF SI3(3)=1 AND SI3(4)=0 THEN             '如果只有中转1有料,取2放2,再取1     
    GOSUB *QUDOULIAO11                        '调用取抖料2
    GOSUB *FANGhouQU11                        '调用放中转2
    GOSUB *QUZhongzhuan1                      '调用取中转1  
    DRIVE(3,Z!),CONT,S=HIGH%                  '第三轴移动到Z!  
ENDIF
'有任意一个都扔掉
*JIANCE11:                                    '放后取检测(正常取放时顺序执行检测11)
IF SGI4=1 OR SGI5=1 THEN                      '如果放后取1&2任意标记NG,则丢弃重新取
    GOSUB *NG1                                '调用NG1排料
    GOSUB *NG11                               '调用NG11排料
    SGI4=0
    SGI5=0
    SGI1=SGI1+1                               '连续NG计数+1
    MOVE P,P2,Z=Z!,CONT,S=HIGH%               '到取料过渡点   
    GOTO *LIAOHAO1                            '到取中转程序
    ENDIF
'一切正常,对夹爪状态再次判断   
IF SI4(5)=0 AND SI4(7)=0 THEN                 '如果夹爪1和2都未夹住,则丢弃重新取
    GOSUB *NG1                                '调用NG1排料
    GOSUB *NG11                               '调用NG11排料
    MOVE P,P2,Z=Z!,CONT,S=HIGH%               '到取料过渡点   
    C%=0                                      '夹爪上无料标记
    GOTO *LIAOHAO1                            '到取中转程序         
ELSEIF SI4(5)=0 AND SI4(7)=1  THEN            '如果夹爪1未夹住,则丢弃重新取
    GOSUB *NG1                                '调用NG1排料
    MOVE P,P2,Z=Z!,CONT,S=HIGH%               '到取料过渡点
    C%=2                                      '夹爪上剩余料2
    GOTO *LIAOHAO1                            '到取中转程序        
ELSEIF SI4(5)=1 AND SI4(7)=0  THEN            '如果夹爪2未夹住,则丢弃重新取
    GOSUB *NG11                               '调用NG11排料
    MOVE P,P2,Z=Z!,CONT,S=HIGH%               '到取料过渡点
    C%=1                                      '夹爪上剩余料1   
    GOTO *LIAOHAO1                            '到取中转程序
ENDIF
    C%=0                                      '夹爪上无料标记(执行放时设置为0)
GOTO *PUT_1                                  '无异常到放料程序(开启取后残留检测时取消此跳转)
'
'
'
'
*JIANCE1:                                     '(仅直接取中转时调用JIANCE1)
   SGI4=0                                     '消除1#残留标记(有取后转的逻辑时才用该标记)
   SGI5=0                                     '消除2#残留标记(有取后转的逻辑时才用该标记)
IF SI3(3)=1 OR SI3(4)=1 THEN                 '(判断残留时延迟重新判断)  
   DELAY 200
   ENDIF  
IF SI3(3)=1 AND SI3(4)=1 THEN                 '如果取之后1&2还有残留,则丢弃重新取
    GOSUB *NG1                                '调用NG1排料
    GOSUB *NG11                               '调用NG11排料
    MOVE P,P2,Z=Z!,CONT,S=HIGH%               '到取料过渡点   
    C%=0                                      '夹爪上无料标记
    GOTO *LIAOHAO1                            '到取中转程序      
ELSEIF SI3(3)=1 AND SI3(4)=0  THEN            '如果取之后1还有残留,则丢弃重新取
    GOSUB *NG1                                '调用NG1排料
    MOVE P,P2,Z=Z!,CONT,S=HIGH%               '到取料过渡点
    C%=2                                      '夹爪上剩余料2
    GOTO *LIAOHAO1                            '到取中转程序        
ELSEIF SI3(3)=0 AND  SI3(4)=1 THEN            '如果取之后2还有残留,则丢弃重新取
    GOSUB *NG11                               '调用NG11排料
    MOVE P,P2,Z=Z!,CONT,S=HIGH%               '到取料过渡点
    C%=1                                      '夹爪上剩余料1   
    GOTO *LIAOHAO1                            '到取中转程序
ELSEIF SI4(5)=0 AND SI4(7)=0 THEN             '如果夹爪1和2都未夹住,则丢弃重新取
    GOSUB *NG1                                '调用NG1排料
    GOSUB *NG11                               '调用NG11排料
    MOVE P,P2,Z=Z!,CONT,S=HIGH%               '到取料过渡点   
    C%=0                                      '夹爪上无料标记
    GOTO *LIAOHAO1                            '到取中转程序         
ELSEIF SI4(5)=0 AND SI4(7)=1  THEN            '如果夹爪1未夹住,则丢弃重新取
    GOSUB *NG1                                '调用NG1排料
    MOVE P,P2,Z=Z!,CONT,S=HIGH%               '到取料过渡点
    C%=2                                      '夹爪上剩余料2
    GOTO *LIAOHAO1                            '到取中转程序        
ELSEIF SI4(5)=1 AND SI4(7)=0  THEN            '如果夹爪2未夹住,则丢弃重新取
    GOSUB *NG11                               '调用NG11排料
    MOVE P,P2,Z=Z!,CONT,S=HIGH%               '到取料过渡点
    C%=1                                      '夹爪上剩余料1   
    GOTO *LIAOHAO1                            '到取中转程序
ENDIF
    C%=0                                      '夹爪上无料标记(执行放时设置为0)
GOTO *PUT_1                                  '到放料程序
'************************取料3(拍一次取2个)
*QUDOULIAO11:
WAIT MO20(3)=0 AND MO20(2)=1 AND MO20(0)=O AND SI2(0)=1      '等待空闲拍照程序未在执行中+物料已OK+允许取料 ;M020(0)=拍照中,M020(1)=取料中,M020(2)=已OK,M020(3)=抖料拍照中
MO20(2)=0                                                    '机器人取料前重新触发拍照
WAIT MO20(3)=0 AND MO20(2)=1 AND MO20(0)=O AND SI2(0)=1      '等待空闲拍照程序未在执行中+物料已OK+允许取料 ;M020(0)=拍照中,M020(1)=取料中,M020(2)=已OK,M020(3)=抖料拍照中
MO20(1)=1                                                    '机器人正在取料中ON
'判断是否有OK料
IF CCD_0!=0.000 AND CCD_1!=0.000 THEN         '如果拍照结果为NG(物料1无料)
  MO20(2)=0                                   '物料已OK清除  
  DELAY 100
  MO20(1)=0                                   '机器人取料中
  GOTO *QUDOULIAO11                           '拍照NG时跳回
ENDIF
IF CCD_3!=0.000 AND CCD_4!=0.000 THEN         '如果拍照结果为NG(物料2无料
  MO20(2)=0                                   '物料已OK清除  
  DELAY 100
  MO20(1)=0                                   '机器人取料中
  GOTO *QUDOULIAO11                           '拍照NG时跳回
ENDIF
IF CCD_2!<85.000 OR CCD_2!>310.000 THEN      '如果R轴超极限
  MO20(2)=0                                   '物料已OK清除  
  DELAY 100
  MO20(1)=0                                   '机器人取料中
  GOTO *QUDOULIAO11                           '拍照NG时跳回
ENDIF
IF CCD_5!<80.000 OR CCD_5!>360.000 THEN       '如果R轴超极限
  MO20(2)=0                                   '物料已OK清除  
  DELAY 100
  MO20(1)=0                                   '机器人取料中
  GOTO *QUDOULIAO11                           '拍照NG时跳回
ENDIF
'************************取料1(根据需要)取料1(根据需要)取料1(根据需要)
IF SI3(3)=0 THEN                                 '中转槽里没有料1时才执行
   SO5(1,0)=&B10                                 '取料上下1气缸ON
   SO5(3,2)=&B01                                 '取料上下2气缸OFF
   LOC1(P104)=CCD_0!                             '将相机给的X轴赋值给P104点的X轴
   LOC2(P104)=CCD_1!
   LOC4(P104)=CCD_2!
   P9=P104
   P8=P104
   LOC3(P9)=Z1!                                  '第三轴的值改为Z1!
   DRIVE(3,Z!),CONT,S=HIGH%                      '第三轴移动到Z!
   MOVE L,P9,CONT,S=HIGH%                        '到取料点上方
   MOVE L,P9,S=HIGH%                             '快速到取料点上方
   WAIT SI5(1)=1 AND SI5(2)=1                    '等取料上下1&2气缸到位   
   MOVE L,P8,S=LOW%                              '到取料点
   WAIT ARM
   SO4(5,4)=&B10                                 '夹爪气缸1 ON
   WAIT SI4(5)=1                                 '等夹爪气缸1到达工作位
   DELAY 50
   SO5(1,0)=&B01                                 '取料上下1气缸OFF
   DRIVE(3,Z1!),CONT,S=HIGH%                      '第三轴移动到Z1!
ENDIF
'************************取料2(根据需要)取料2(根据需要)取料2(根据需要)
IF SI3(4)=0 THEN                                 '中转槽里没有料2时才执行
   SO5(1,0)=&B01                                 '取料上下1气缸OFF
   SO5(3,2)=&B10                                 '取料上下2气缸ON
   DRIVE(3,Z1!),CONT,S=HIGH%                     '第三轴移动到Z1!
   LOC1(P105)=CCD_3!                             '将相机给的X轴赋值给P104点的X轴
   LOC2(P105)=CCD_4!
   LOC4(P105)=CCD_5!
   P9=P105
   P8=P105
   LOC3(P9)=Z1!                                  '第三轴的值改为Z!
   MOVE L,P9,CONT,S=HIGH%                        '到取料点上方
   MOVE L,P9,S=HIGH%                             '快速到取料点上方
   WAIT SI5(0)=1 AND SI5(3)=1                    '等取料上下1到基本位&2气缸到工作位
   MOVE L,P8,S=LOW%                              '到取料点
   WAIT ARM
   SO4(7,6)=&B10                                 '夹爪气缸2 ON
   WAIT SI4(7)=1                                 '等夹爪气缸2到达工作位
   DELAY 50
ENDIF
'----------取完出来,状态复位
SO5(1,0)=&B01                                    '取料上下1气缸OFF
SO5(3,2)=&B01                                    '取料上下2气缸OFF
DRIVE(3,Z!),CONT,S=HIGH%                         '第三轴移动到Z!
WAIT SI5(0)=1 AND SI5(2)=1                       '等取料上下1&2气缸到基本位
MOVE L,P2,CONT,S=HIGH%                           '到取料过渡点
WAIT ARM
MO20(1)=0                                        '机器人正在取料中OFF
MO20(2)=0                                        '物料已OK清除
RETURN
'
'*************************取料1后放入中转再取起来
*FANGhouQU1:
P9=P110                                      '放中转点1
P8=P110                                      '放中转点1
P7=P106                                      '取中转点1
LOC3(P9)=Z!                                  '第三轴的值改为Z!  
MOVE L,P9,CONT,S=HIGH%                       '到放中转点上方
WAIT ARM
SO5(1,0)=&B10                                '取料上下1气缸ON
SO5(3,2)=&B01                                '取料上下2气缸OFF
MOVE L,P8,S=LOW%                             '到放中转点
WAIT SI5(1)=1 AND SI5(2)=1                   '等取料上下1&2气缸到位
WAIT ARM                                    
SO4(5,4)=&B01                                '夹爪气缸1 OFF
WAIT SI4(4)=1                                '等待夹爪1至基本位
MOVE L,P7,S=LOW%                             '到取中转点
WAIT ARM
IF SI3(3)=0 THEN                              '放后取完检测到无料
  DELAY 200                                   '异常时延迟再判断
ENDIF
IF SI3(3)=0 THEN                              '放后取完检测到无料
   SGI4=1                                     '标记1#放后取无物料NG
   ELSE
   SGI4=0                                     'SGI4=0无异常,SGI4=1已异常
   ENDIF                                    
SO4(5,4)=&B10                                '夹爪气缸1 ON
WAIT SI4(5)=1                                '等待夹爪1夹住至基本位
SO5(1,0)=&B01                                '取料上下1气缸OFF
SO5(3,2)=&B01                                '取料上下2气缸OFF
DRIVE(3,Z!),CONT,S=HIGH%                     '第三轴移动到Z!
WAIT SI5(0)=1 AND SI5(2)=1                   '等取料上下1&2气缸都到基本位
IF SI3(3)=1 THEN
    DELAY 200                                 '异常时多判断一次
ENDIF
IF SI3(3)=1 THEN
   SGI4=1                                     '标记1#放后取后有残留NG
   ENDIF
RETURN
'
'*************************取料2后放入中转再取起来
*FANGhouQU11:
P9=P111                                      '放中转点2
P8=P111                                      '放中转点2
P7=P107                                      '取中转点2  
LOC3(P9)=Z!                                  '第三轴的值改为Z!  
MOVE L,P9,CONT,S=HIGH%                       '到放中转点上方
WAIT ARM
SO5(1,0)=&B01                                '取料上下1气缸OFF
SO5(3,2)=&B10                                '取料上下2气缸ON
MOVE L,P8,S=LOW%                             '到放中转点
WAIT SI5(0)=1 AND SI5(3)=1                   '等取料上下1到基本位&2气缸到工作位
WAIT ARM
SO4(7,6)=&B01                                '夹爪气缸2 OFF                                    
WAIT SI4(6)=1                                '等待夹爪2至基本位
MOVE L,P7,S=LOW%                             '到放中转点
WAIT ARM
IF SI3(4)=0 THEN                              '放后取完仍然有料
    DELAY 200                                 '异常时多判断一次
ENDIF  
IF SI3(4)=0 THEN                              '放后取完仍然有料      
   SGI5=1                                     '标记2#放后取无物料NG
   ELSE
   SGI5=0                                     'SGI5=0无异常,SIW3=1已异常
   ENDIF
SO4(7,6)=&B10                                '夹爪气缸2 ON   
WAIT SI4(7)=1                                '等待夹爪2至工作位
SO5(1,0)=&B01                                '取料上下1气缸OFF
SO5(3,2)=&B01                                '取料上下2气缸OFF
DRIVE(3,Z!),CONT,S=HIGH%                     '第三轴移动到Z!
WAIT SI5(0)=1 AND SI5(2)=1                   '等取料上下1&2气缸都到基本位
IF SI3(4)=1 THEN
DELAY 200                                    '异常时多判断一次
ENDIF
IF SI3(4)=1 THEN
   SGI5=1                                     '标记2#放后取后有残留NG
   ENDIF
RETURN
'
'************************从中转台1上取料
*QUZhongzhuan1:
P9=P106                                      '取中转点1
P8=P106                                      '取中转点1
P7=P106                                      '取中转点1
LOC3(P9)=Z!                                  '第三轴的值改为Z!  
MOVE L,P9,CONT,S=HIGH%                       '到放中转点上方
WAIT ARM
SO5(1,0)=&B10                                '取料上下1气缸ON
SO5(3,2)=&B01                                '取料上下2气缸OFF
WAIT SI5(1)=1 AND SI5(2)=1                   '等取料上下1&2气缸到位
MOVE L,P8,S=LOW%                             '到放中转点
WAIT ARM
SO4(5,4)=&B10                                '夹爪气缸1 ON                                   
WAIT SI4(5)=1                                '等待夹爪1打开至基本位
DRIVE(3,Z!),CONT,S=HIGH%                     '第三轴移动到Z!
SO5(1,0)=&B01                                '取料上下1气缸OFF
SO5(3,2)=&B01                                '取料上下2气缸OFF
WAIT SI5(0)=1 AND SI5(2)=1                   '等取料上下1&2气缸都到基本位
IF SI3(3)=1 THEN
    DELAY 200                                 '异常时多判断一次
ENDIF  
IF SI3(3)=1 THEN
   SGI4=1                                     '标记1#放后取后有残留NG
   ENDIF   
RETURN
'
'************************从中转台2上取料
*QUZhongzhuan11:
P9=P107                                      '取中转点2
P8=P107                                      '取中转点2
P7=P107                                      '取中转点2
LOC3(P9)=Z!                                  '第三轴的值改为Z!  
MOVE L,P9,CONT,S=HIGH%                       '到放中转点上方
WAIT ARM
SO5(1,0)=&B01                                '取料上下1气缸OFF
SO5(3,2)=&B10                                '取料上下2气缸ON
WAIT SI5(0)=1 AND SI5(3)=1                   '等取料上下1到基本位&2气缸到工作位
MOVE L,P8,S=LOW%                             '到放中转点
WAIT ARM
SO4(7,6)=&B10                                '夹爪气缸2 ON   
WAIT SI4(7)=1                                '等待夹爪2至工作位
DRIVE(3,Z!),CONT,S=HIGH%                     '第三轴移动到Z!
SO5(1,0)=&B01                                '取料上下1气缸OFF
SO5(3,2)=&B01                                '取料上下2气缸OFF
WAIT SI5(0)=1 AND SI5(2)=1                   '等取料上下1&2气缸都到基本位
IF SI3(4)=1 THEN
    DELAY 200                                 '异常时多判断一次
ENDIF
IF SI3(4)=1 THEN
   SGI5=1                                     '标记2#放后取后有残留NG
   ENDIF   
RETURN
'
'************************去放料位1
*PUT_1:
DRIVE(3,Z!),CONT,S=HIGH%                     '第三轴移动到Z!
SO5(1,0)=&B01                                '取料上下1气缸OFF
SO5(3,2)=&B01                                '取料上下2气缸OFF
WAIT SI5(0)=1 AND SI5(2)=1                   '等取料上下1&2气缸都到基本位
MOVE L,P3,CONT,S=HIGH%                       '到放料过渡点(正手)
MOVE P,P5,CONT,S=HIGH%                       '到放料过渡点(反手)
WAIT SI2(4)=1                                '流线允许放1
P9=P112                                      '放流线1位
P8=P112                                      '放流线1位
LOC3(P9)=Z!                                  'Z轴的值改为0
'到上方,上下到位
MOVE L,P9,CONT,S=HIGH%                       '到放流线位上方
WAIT ARM
SO5(1,0)=&B10                                '取料上下1气缸ON
SO5(3,2)=&B01                                '取料上下2气缸OFF
MOVE L,P8,S=MIN%                             '门型移动到放流线位  
WAIT SI5(1)=1 AND SI5(2)=1                   '等取料上下1&2气缸到位  
'到下方,到装入位
WAIT ARM
DELAY 200
SO4(5,4)=&B01                                '取料1阀 OFF
WAIT SI4(4)=1                                '等待取料1到基本位
'组装完气缸上升,Z轴上升;
SO5(1,0)=&B01                                '取料上下1气缸OFF
SO5(3,2)=&B01                                '取料上下2气缸OFF
DRIVE(3,Z!),CONT,S=HIGH%                     '第三轴移动到Z!
WAIT SI5(0)=1 AND SI5(2)=1                   '等取料上下1&2气缸都到基本位
'直接到装2程序
'************************去放料位2
*PUT_11:
DRIVE(3,Z!),CONT,S=HIGH%                     '第三轴移动到Z!
SO5(1,0)=&B01                                '取料上下1气缸OFF
SO5(3,2)=&B01                                '取料上下2气缸OFF
WAIT SI5(0)=1 AND SI5(2)=1                   '等取料上下1&2气缸都到基本位
WAIT SI2(4)=1                                '流线允许放2
P9=P113                                      '放流线1位
P8=P113                                      '放流线1位
LOC3(P9)=Z!                                  'Z轴的值改为0
'到上方,上下到位
MOVE L,P9,CONT,S=HIGH%                       '到放流线位上方
WAIT ARM
SO5(1,0)=&B01                                '取料上下1气缸OFF
SO5(3,2)=&B10                                '取料上下2气缸ON
MOVE L,P8,S=MIN%                             '门型移动到放流线位  
WAIT SI5(0)=1 AND SI5(3)=1                   '等取料上下1&2气缸到位  
'到下方,到装入位  
WAIT ARM
DELAY 200
SO4(7,6)=&B01                                '取料2阀OFF
WAIT SI4(6)=1                                '等待取料2到基本位
'组装完气缸上升,Z轴上升;
SO5(1,0)=&B01                                '取料上下1气缸OFF
SO5(3,2)=&B01                                '取料上下2气缸OFF
DRIVE(3,Z!),CONT,S=HIGH%                     '第三轴移动到Z!
WAIT SI5(0)=1 AND SI5(2)=1                   '等取料上下1&2气缸都到基本位
'任务完成并返回
SO2(4)=1                                     '任务完成1开
WAIT SI2(4)=0                                '等待流线允许放1关
SO2(4)=0                                     '任务完成1关
MOVE L,P5,CONT,S=HIGH%                       '到放料过渡点(反手)
MOVE P,P3,CONT,S=HIGH%                       '到放料过渡点(正手)
MOVE L,P2,S=HIGH%                            '到取料过渡点
GOTO *LIAOHAO1
'托盘和NG段本程序不用。
'************************NG排除1
*NG1:
MOVE P,P30,Z=Z!,CONT,S=HIGH%                  '到NG1排料位
WAIT ARM
SO4(5,4)=&B01                                 '取料1阀OFF                                 
WAIT SI4(4)=1                                 '等待取料1到基本位
RETURN
'************************NG排除11
*NG11:
MOVE P,P30,Z=Z!,CONT,S=HIGH%                  '到NG1排料位
WAIT ARM
SO4(7,6)=&B01                                 '取料2阀OFF                                       
WAIT SI4(6)=1                                 '等待取料2到基本位
RETURN
'托盘和NG段本程序不用。
'托盘和NG段本程序不用。
'托盘和NG段本程序不用。
'
'
'
'
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|笔记

GMT+8, 2025-7-7 06:03 , Processed in 0.049281 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表