Epson 爱普生工业机器人 机械手贴标机
项目背景: 3C行业贴标签 精度0.01 需要通讯客户端MES 在线切换型号 (4个吸标头,8组飞达) ---------------------------------------------------------走少有人走的路--------------------------------------------------------作者:meteor 转载请注明出处
- 程序大概流程理解:等待产品到位 》》 扫码枪扫码 》》 上位机上传条码到MES系统 》》 MES反馈产品信息 》》 获取产品机种》》获取标签数量、获取标签种类 》》机械手取标 》》CCD拍照 标签 标签OK/》》取标NG重新吸取》》 等待产品到位》》CCD拍照 产品 》》机械手接受上位机发送过来的相对偏移量》》机械手执行贴附动作》》动作结束
- 程序流程: main程序 主函数
-
CDshell 主流程 整体逻辑框架 GetLabelOne 取标子程序 GetLabelOne 取标子程序 GetLabelOne 取标子程序 GetLabelOne 取标子程序 Initialize 复位子程序 NetWorldconnect 上位机通讯robot子程序 PLCnetTcp PLC通讯robot子程序 speed_High 速度子程序 speed_Low 速度子程序 speed_Reset 速度子程序
Function CDShell
BAG:
L0 = False
L1 = False
L2 = False
photo1 = False ''拍照标签 OK NG 标志
photo2 = False ''拍照标签标志
photo3 = False ''拍照标签标志
photo4 = False ''拍照标签标志
flag = False ''产品NG OK 标志
If mark = False Then ''如果不拍照 强制赋值robot坐标 防止撞机
P303 = P203 ''右1贴标位
P302 = P202 ''右2贴标位
P301 = P201 ''右3贴标位
P300 = P200 ''右4贴标位
EndIf
GetLabel(1) = 0 '' 随机标头 取随机飞达
GetLabel(2) = 0
GetLabel(3) = 0
GetLabel(4) = 0
If huiliutf = True Then ''使用 回流复检
''CZ(P999) = SafetyHeight
CZ(P999) = CZ(P4)
Move P999
Move P4
Wait Sw(3) = On ''等待产品到位
If mark = True Then ''回流复检判断
P999 = RealPos ''提升安全高度
''回到回流复检点
Rs232Sign = 1
ML$ = "C7"
Wait Rs232Sign = 0
EndIf
If L0 = True Then ''无标签,正常贴
P999 = RealPos ''提升安全高度
''CZ(P999) = SafetyHeight
CZ(P999) = CZ(P2)
Move P999
Move P2 ''回到取料过度点
If mark = True Then ''上位机发送型号 切换对于型号的 拍照位置 贴标位置 上位机发送信息 获取 标头对应得飞达
Rs232Sign = 1
ML$ = "C6"
Wait Rs232Sign = 0
EndIf
ElseIf L1 = True Then ''标签正确,过站
P999 = RealPos ''提升安全高度
''CZ(P999) = SafetyHeight
CZ(P999) = CZ(P2)
Move P999
Move P2 ''回到取料过度点
On 5 ''完成本件
Wait 0.2
Off 5 ''完成本件
GoTo BAG
ElseIf L2 = True Then ''标签错误,报警过站
P999 = RealPos ''提升安全高度
''CZ(P999) = SafetyHeight
CZ(P999) = CZ(P2)
Move P999
Move P2 ''回到取料过度点
On 5 ''完成本件
On 4 ''报警
Wait 0.2
Off 5 ''完成本件
Wait 0.2
Off 4 ''报警
GoTo BAG
EndIf
EndIf
If huiliutf = False Then ''不使用 回流复检
Jump P98 ''取料过度点
''回到取料过度点
If mark = True Then ''上位机发送型号 切换对于型号的 拍照位置 贴标位置 上位机发送信息 获取 标头对应得飞达
Rs232Sign = 1
ML$ = "C6"
Wait Rs232Sign = 0
EndIf
EndIf
GetLabel(1) = Val(GetLabel$) ''强制取标头 取飞达 选择number
GetLabel(2) = 4 ''强制取标选 取飞达 择number
GetLabel(3) = 5 ''强制取标选 取飞达 择number
GetLabel(4) = 1 ''请勿改动 取打印机 没得选择取打印机 没得选择取打印机 没得选择
If Val(Getxuanze1$) = 1 Then
xuanze1 = True
Else
xuanze1 = False
EndIf
If Val(Getxuanze2$) = 1 Then
xuanze2 = True
Else
xuanze2 = False
EndIf
If Val(Getxuanze3$) = 1 Then
xuanze3 = True
Else
xuanze3 = False
EndIf
If Val(Getxuanze4$) = 1 Then
xuanze4 = True
Else
xuanze4 = False
EndIf
SafetyHeight = -80
If xuanze1 = True Then
Call GetLabelOne ''右4取料位判断
PICKNG1 = 0
EndIf
If xuanze2 = True Then
Call GetLabelTwo ''右3取料位判断
PICKNG2 = 0
EndIf
If xuanze3 = True Then
Call GetLabelThree ''右2取料位判断
PICKNG3 = 0
EndIf
SafetyHeight = -50 ''取 打印机 高度抬起来
If xuanze4 = True Then
Call GetLabelFour ''右1取料位判断
PICKNG4 = 0
EndIf
''''''''''''''''''''''''''''''''下相机取料拍照4次 4个标头
''''''''''''''''''''''''''''''''下相机取料拍照4次 4个标头
'''''''''''''''''''''''''''''''''
'' 如果标签拍照NG 吐料 重新吸取
NGqubiao4: ''右1
P999 = RealPos
CZ(P999) = SafetyHeight
Move P999
If xuanze4 = True Then
P999 = P10
CZ(P999) = SafetyHeight
Arc P150, P999
Move P10
If mark = True Then
Rs232Sign = 1
ML$ = "C1"
Wait Rs232Sign = 0
Print "down mark 1 end"
If photo1 = False Then
Jump P1
Off 13 ''打开标头4真空
Wait 0.4
On 9 ''打开标头4气缸
Wait 0.4
Off 9
''Call GetLabelFour ''吸打印机标签NG 后 取消重吸动作 直接吐标 把产品 流下去
''GoTo NGqubiao4
Off 10 ''真空1
Off 11 ''真空2
Off 12 ''真空3
Off 13 ''真空4
On 6 ''气缸1动作
On 7 ''气缸2动作
On 8 ''气缸3动作
On 9 ''气缸4动作
Wait 0.4
Off 6 ''气缸1动作
Off 7 ''气缸2动作
Off 8 ''气缸3动作
Off 9 ''气缸4动作
''等待产品到位 流下去
Print "打印机标签拍照NG等待产品到位流下去"
Wait Sw(3) = On ''等待产品到位
GoTo hhhhhhh
EndIf
EndIf
EndIf
NGqubiao3: ''右2
If xuanze3 = True Then
Move P11 ''下相机拍照2 标头2 右2
If mark = True Then
Rs232Sign = 1
ML$ = "C2"
Wait Rs232Sign = 0
Print "down mark 2 end"
If photo2 = False Then
Jump P1
Off 12 ''打开标头3真空
Wait 0.4
On 8 ''打开标头3气缸
Wait 0.4
Off 8
Call GetLabelThree
GoTo NGqubiao3
EndIf
EndIf
EndIf
NGqubiao2: ''右3
If xuanze2 = True Then
Move P12 ''下相机拍照3 标头3 右3
If mark = True Then
Rs232Sign = 1
ML$ = "C3"
Wait Rs232Sign = 0
Print "down mark 3 end"
If photo3 = False Then
Jump P1
Off 11 ''打开标头2真空
Wait 0.4
On 7 ''打开标头2气缸
Wait 0.4
Off 7
Call GetLabelTwo
GoTo NGqubiao2
EndIf
EndIf
EndIf
NGqubiao1: ''右4
If xuanze1 = True Then
Move P13 ''下相机拍照4 标头4 右4
If mark = True Then
Rs232Sign = 1
ML$ = "C4"
Wait Rs232Sign = 0
If photo4 = False Then
Jump P1
Off 10 ''打开标头1真空
Wait 0.4
On 6 ''打开标头1气缸
Wait 0.4
Off 6
Call GetLabelOne
GoTo NGqubiao1
EndIf
EndIf
Print "down mark 4 end"
EndIf
Jump P5
chanpinNG:
Print "等待产品到位"
Wait Sw(3) = On ''等待产品到位
Print "PLC通知产品已到位"
Wait 0.3
Print "up mark 1 end" ''拍 产品NG
If mark = True Then
Rs232Sign = 1
ML$ = "CP22"
Wait Rs232Sign = 0
EndIf
If flag = False Then
On 5 ''完成本件
Wait Sw(3) = Off ''等待产品到位
Wait 0.3
Off 5 ''完成本件
Wait 0.3
P999 = RealPos
CZ(P999) = SafetyHeight
Move P999
GoTo chanpinNG
EndIf
If xuanze4 = True Then
Print "贴附 右1 start"
Jump P303
On 1
'Wait 0.5
On 9 ''气缸
Call speed_mid
Wait 0.6
Go P303
Move P303 -Y(60)
Call speed_high123
Off 13 ''关真空
Wait 0.6
Off 1 ''气缸
Off 9 ''气缸
Print "贴附 右1 end"
EndIf
If xuanze3 = True Then
Print "贴附 右2 start"
''P999 = RealPos ''提升安全高度
CZ(P999) = SafetyHeight
Move P999
P999 = P302 ''运动取料点上方安全高度
CZ(P999) = SafetyHeight
Move P999
On 8 ''气缸
Jump P302 LimZ -40
Wait 0.6
Off 12 ''关真空
Wait 0.6
Off 8 ''气缸
Print "贴附 右2 end"
EndIf
If xuanze2 = True Then
Print "贴附 右3 start"
On 7 ''气缸
Jump P301 LimZ -40
Wait 0.6
Off 11 ''关真空
Wait 0.6
Off 7 ''气缸
Print "贴附 右3 end"
EndIf
If xuanze1 = True Then
Print "贴附 右4 start"
On 6 ''气缸
Jump P300 LimZ -40
Wait 0.6
Off 10 ''关真空
Wait 0.6
Off 6 ''气缸
Print "贴附 右4 end"
EndIf
hhhhhhh:
On 5 ''完成本件
Call speed_high
P999 = RealPos ''提升安全高度
''CZ(P999) = SafetyHeight
CZ(P999) = CZ(P2)
Move P999
Move P2 ''回到取料过度点
Wait Sw(3) = Off ''等待产品到位
Off 5 ''完成本件
Fend