PROC rProg31() MoveJ pStartPOS,v300,fine,T_Gripper1;//移动到启动位置 MoveJDO pWaitPick,v300,fine,T_Gripper1,DO112,1;//移动到等待位置 Pos_WaitLoad:=pWaitLoad.trans.y;//等待上料点Y轴坐标参数 Pos_OutLoad:=pOutLoad.trans.y;//离开上料点Y轴坐标参数 PosJudge; LableA: wobj_num:=GI1;//程序号 Ahead_Press:=GI4;//提前冲压距离 SetAO AO5,pLoad.trans.y;//机器人放料点Y坐标 !Pos_OutLoad:=pOutLoad.trans.y; GripLoad load0; MoveJDO pWaitPick,v3000,z200,T_Gripper1,DO112,1;//移动到等待抓料点 rSignal(1);//信号处理程序 Lable1: WaitUntil(DI32=1 AND DI38=1) OR DI26=1 OR DI29=1 OR DI7=1;//等待信号 IF DI26=1 THEN//整线清空 rMoveToHome;//回原点 rGripVacuum; EXIT; ENDIF IF DI29=1 OR DI7=1 THEN//开门和停止信号请求 rDoorOpen;//门打开程序 GOTO Lable1; ENDIF Reset DO69;//在其他装置外部 WaitUntil(DI32=1 AND DI38=1);//允许在其他装置取料和前一台机器人在干涉区域外部 BaseCoordCall;//视觉基础位置程序调用 CallByVar "Vision",wobj_num;//调用视觉程序 rGrip; MoveJ RelTool(pPick,-x1,y1,-180\Rz:=-a1),v4000,fine,toolVision;//移动到抓料点位置1正上方 PulseDO\PLength:=0.5,DO63;//输出DO63,给吸盘控制程序,控制阀岛打开一部分吸盘通道 MoveL RelTool(pPick,-x1,y1,48\Rz:=-a1),v500,fine,toolVision;//移动到抓料点 MoveJ RelTool(pPick,-x1,y1,-100\Rz:=-a1),v1000,z50,toolVision;//抓料后上升一定的位置 BaseCoordCall;//视觉基础位置程序调用 toolVision.tframe.trans.x:=toolVision.tframe.trans.x+OffsCoordX1; toolVision.tframe.trans.y:=toolVision.tframe.trans.y-OffsCoordY1; MoveJ RelTool(pPick,-x2,y2,-100\Rz:=-a2),v1000,fine,toolVision;//移动到抓料点位置2正上方 PulseDO\PLength:=0.1,DO61;//输出DO61,打开全部吸盘 MoveL RelTool(pPick,-x2,y2,48\Rz:=-a2),v500,fine,toolVision;//移动到抓料点2 MoveJ RelTool(pPick,-x2,y2,-100\Rz:=-a2),v1000,z50,toolVision;//抓料后上升一定的位置 Reset DO66;//复位DO66提前启动压机 LABLE3: WaitUntil DI00=1 AND DI01=1\MaxTime:=1\TimeFlag:=VacuumFault0;//等待真空信号满足DI00和DI01满足,否在报警停止 IF VacuumFault0=TRUE THEN PulseDO\PLength:=2,DO104; TPWrite "Unload Vacuum Fault,Please Check!"; Stop; GOTO LABLE3; ENDIF PulseDO\PLength:=0.5,DO62;//从其他装置取料完成 rSignal(2);//信号处理程序 BaseCoordCall;//视觉基础位置程序调用 !MoveL pAfterPick,v800,z150,T_Gripper1; MoveJDO pTransit,v2500,z200,T_Gripper1,DO69,1;//机器人抓料离开皮带机点,位于等待上料点前边 MoveJDO pWaitLoad,v3000,z200,T_Gripper1,DO118,1;//等待上料点,DO118到达上料等待点触发信号 rSignal(3);//信号处理程序 Lable2: WaitUntil(DI34=1 AND DI37=1) OR DI29=1 OR DI7=1; IF DI29=1 OR DI7=1 THEN rDoorOpen; GOTO Lable2; ENDIF lable4: WaitUntil DI00=1 AND DI01=1\MaxTime:=0.5\TimeFlag:=VacuumFault2; IF VacuumFault2=TRUE THEN PulseDO\PLength:=1,DO105; TPWrite "load Vacuum Fault,Please Check!"; Stop; GOTO lable4; ENDIF CONNECT Int_speed WITH SpeedChange; ISignalDI DI63,1,Int_Speed;//DI63降低上料机器人的速率 WaitDI DI40, 1;//模具内有料 TriggIO trig_OverLoad,0\Start\DOp:=DO119,1;//D0119上料等待点开始向下一个压机内移动 TriggL pOverLoad,v5000,trig_OverLoad,z50,T_Gripper1;//上料之前的点,在上料点的正上方 Reset DO118;//复位信号DO118到达上料等待点触发信号 MoveLSync pLoad,v800,fine,T_Gripper1,"rGripBlow";//上料点 MoveL pAfterLoad,v1000,z50,T_Gripper1;//上料之后的点,在上料点的正上方 IDelete Int_Speed; Speed100;//速度检测,100%才能开启提前量方式生产 TriggIO trig_OutLoad,Ahead_Press\DOp:=DO66,1;//提前启动压机 TriggL pOutLoad,v5000,trig_OutLoad,z100,T_Gripper1;//放料退出压机点? rSignal(4);//输出向后一台压机放料完成 GOTO LableA; ENDPROC//程序结束 |
|
来自: 昵称65413715 > 《待分类》