MODULE Module1
CONST robtarget pHome:=[[522.01,0.00,848.10],[0.5,0,0.866025,0],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
TASK PERS tooldata tool_XiPan:=[TRUE,[[0,0,0],[1,0,0,0]],[1,[0,0,0],[1,0,0,0],0,0,0]];
TASK PERS wobjdata wobj_Table:=[FALSE,TRUE,"",[[0,0,0],[1,0,0,0]],[[0,0,0],[1,0,0,0]]];
VAR intnum intno1:=0;
VAR intnum intno2:=0;
CONST robtarget p100:=[[522.01,0.00,848.10],[0.5,0,0.866025,0],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
CONST robtarget p110:=[[522.01,0.00,848.10],[0.5,0,0.866025,0],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
CONST robtarget p120:=[[522.01,0.00,848.10],[0.5,0,0.866025,0],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
CONST robtarget p130:=[[522.01,0.00,848.10],[0.5,0,0.866025,0],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];

CONST robtarget pPick1:=[[522.01,0.00,848.10],[0.5,0,0.866025,0],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
CONST robtarget pZuoDaiWei:=[[522.01,0.00,848.10],[0.5,0,0.866025,0],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
CONST robtarget pYouDaiWei:=[[522.01,0.00,848.10],[0.5,0,0.866025,0],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];

CONST robtarget p10:=[[522.01,0.00,848.10],[0.5,0,0.866025,0],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
CONST robtarget p20:=[[522.01,0.00,848.10],[0.5,0,0.866025,0],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
CONST robtarget p30:=[[522.01,0.00,848.10],[0.5,0,0.866025,0],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
CONST robtarget p40:=[[522.01,0.00,848.10],[0.5,0,0.866025,0],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
CONST robtarget p50:=[[522.01,0.00,848.10],[0.5,0,0.866025,0],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
VAR bool Zuo:=FALSE;
VAR bool ZuoFangLiao:=FALSE;
VAR bool YouFangLiao:=FALSE;
VAR num reg6:=0;
VAR num Zuo_Z:=0;
VAR num Zuo_n:=0;
VAR num You_Z:=0;
VAR num You_n:=0;
CONST robtarget p60:=[[522.01,0.00,848.10],[0.5,0,0.866025,0],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
VAR robtarget pYou{5,3}:=[[[[522.01,0.00,848.10],[0.5,0,0.866025,0],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],[[522.01,0.00,848.10],[0.5,0,0.866025,0],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],[[522.01,0.00,848.10],[0.5,0,0.866025,0],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]]],[[[522.01,0.00,848.10],[0.5,0,0.866025,0],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],[[522.01,0.00,848.10],[0.5,0,0.866025,0],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],[[522.01,0.00,848.10],[0.5,0,0.866025,0],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]]],[[[522.01,0.00,848.10],[0.5,0,0.866025,0],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],[[522.01,0.00,848.10],[0.5,0,0.866025,0],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],[[522.01,0.00,848.10],[0.5,0,0.866025,0],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]]],[[[522.01,0.00,848.10],[0.5,0,0.866025,0],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],[[522.01,0.00,848.10],[0.5,0,0.866025,0],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],[[522.01,0.00,848.10],[0.5,0,0.866025,0],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]]],[[[522.01,0.00,848.10],[0.5,0,0.866025,0],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],[[522.01,0.00,848.10],[0.5,0,0.866025,0],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],[[522.01,0.00,848.10],[0.5,0,0.866025,0],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]]]];
VAR robtarget pZuo{5,3}:=[[[[522.01,0.00,848.10],[0.5,0,0.866025,0],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],[[522.01,0.00,848.10],[0.5,0,0.866025,0],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],[[522.01,0.00,848.10],[0.5,0,0.866025,0],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]]],[[[522.01,0.00,848.10],[0.5,0,0.866025,0],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],[[522.01,0.00,848.10],[0.5,0,0.866025,0],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],[[522.01,0.00,848.10],[0.5,0,0.866025,0],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]]],[[[522.01,0.00,848.10],[0.5,0,0.866025,0],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],[[522.01,0.00,848.10],[0.5,0,0.866025,0],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],[[522.01,0.00,848.10],[0.5,0,0.866025,0],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]]],[[[522.01,0.00,848.10],[0.5,0,0.866025,0],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],[[522.01,0.00,848.10],[0.5,0,0.866025,0],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],[[522.01,0.00,848.10],[0.5,0,0.866025,0],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]]],[[[522.01,0.00,848.10],[0.5,0,0.866025,0],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],[[522.01,0.00,848.10],[0.5,0,0.866025,0],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],[[522.01,0.00,848.10],[0.5,0,0.866025,0],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]]]];
!***********************************************************
!
! Module: Module1
!
! Description:
! <Insert description here>
!
! Author: tianz
!
! Version: 1.0
!
!***********************************************************
!***********************************************************
!
! Procedure main
!
! This is the entry point of your program
!
!***********************************************************
PROC main() !主程序
rReset; !复位程序,用于复位信号变量,中断初始化,数据存储
rHome; !回到原点后再进行运行
WHILE TRUE DO
rPick; !抓料程序
rTiaoZheng; !调整程序
rPlace; !放料程序
ENDWHILE
ENDPROC
PROC rHome()
MoveJ pHome,v300,fine,tool_XiPan\WObj:=wobj_Table;
ENDPROC
PROC rReset()
Reset Do01_XiPan; !复位相关信号
Reset Do02_ZuoTuiLiao;
Reset Do03_YouTuiLiao;
Reset Do04_FangLiao;
Zuo_n:=1; !初始化相关变量
Zuo_Z:=1;
You_n:=1;
You_Z:=1;
reg6:=1;
rPoint; !放料点位的计算存储
IDelete intno1; !中断程序,用于左输送带出料
CONNECT intno1 WITH rZuoTuiLiao;
ISignalDI Di01_ZuoDaoWei,0,intno1; !当左到位信号断开时,触发中断,推出新的产品
IDelete intno2; !中断程序,用于右输送带出料
CONNECT intno2 WITH rYouTuiLiao;
ISignalDI Di02_YouDaoWei,0,intno2; !当右到位信号断开时,触发中断,推出新的产品
PulseDO\PLength:=2,Do02_ZuoTuiLiao; !第一次运行,推出一次产品
PulseDO\PLength:=2,Do03_YouTuiLiao;
ENDPROC
TRAP rZuoTuiLiao !中断程序
PulseDO\PLength:=2,Do02_ZuoTuiLiao; !左输送带的气缸推出2秒
ENDTRAP
TRAP rYouTuiLiao !中断程序
PulseDO\PLength:=2,Do03_YouTuiLiao; !右输送带的气缸推出2秒
ENDTRAP
PROC rPick() !抓料程序
WaitUntil Di01_ZuoDaoWei=1 OR Di02_YouDaoWei=1; !等待左右到位信号
IF Di01_ZuoDaoWei=1 THEN !当左到位时,机器人抓取左输送带的产品
MoveJ Offs(pZuoDaiWei,0,0,50),v500,z40,tool_XiPan\WObj:=wobj_Table;
MoveL pZuoDaiWei,v200,fine,tool_XiPan\WObj:=wobj_Table;
Set Do01_XiPan;
WaitTime 0.3;
MoveJ Offs(pZuoDaiWei,0,0,50),v500,z40,tool_XiPan\WObj:=wobj_Table;
ENDIF
IF Di02_YouDaoWei=1 THEN !当右到位时,机器人抓取右输送带的产品
MoveJ Offs(pYouDaiWei,0,0,50),v500,z40,tool_XiPan\WObj:=wobj_Table;
MoveL pYouDaiWei,v200,fine,tool_XiPan\WObj:=wobj_Table;
Set Do01_XiPan;
WaitTime 0.3;
MoveJ Offs(pYouDaiWei,0,0,50),v500,z40,tool_XiPan\WObj:=wobj_Table;
ENDIF
ENDPROC
PROC rTiaoZheng() !产品抓取后,进行位置调整
MoveJ p10,v800,z50,tool_XiPan\WObj:=wobj_Table;
MoveJ p20,v300,fine,tool_XiPan\WObj:=wobj_Table;
Reset Do01_XiPan;
WaitTime 0.3;
MoveJ p30,v800,z20,tool_XiPan\WObj:=wobj_Table;
MoveL p40,v300,fine,tool_XiPan\WObj:=wobj_Table;
Set Do01_XiPan;
WaitTime 0.3;
MoveL p50,v800,z20,tool_XiPan\WObj:=wobj_Table;
ENDPROC
PROC rPoint() !点位存储
FOR z FROM 1 TO 3 DO !通过For循环进行数据存储,存入到对应的数组中
FOR n FROM 1 TO 5 DO
IF n<=3 THEN ! 点位:P100,位置参考图片
pZuo{n,z}:=Offs(p100,(n-1)*30,0,(z-1)*8);
ELSEIF n>3 THEN !点位:P110,位置参考图片
pZuo{n,z}:=Offs(p110,(n-4)*60,0,(z-1)*8);
ENDIF
ENDFOR
ENDFOR
FOR z FROM 1 TO 3 DO
FOR n FROM 1 TO 5 DO
IF n<=3 THEN ! 点位:P120,位置参考图片
pYou{n,z}:=Offs(p120,(n-1)*30,0,(z-1)*8);
ELSEIF n>3 THEN ! 点位:P130,位置参考图片
pYou{n,z}:=Offs(p130,(n-4)*60,0,(z-1)*8);
ENDIF
ENDFOR
ENDFOR
ENDPROC
PROC rPlace() !放料程序
TEST reg6
CASE 1:
rFangLiao pZuo{Zuo_n,Zuo_Z}; !进行放料动作
CASE 2:
rFangLiao pYou{You_n,You_Z};
DEFAULT:
Stop;
ENDTEST
IF reg6=1 THEN !放料后,进行数据的计算更改
Zuo_n:=Zuo_n+1;
IF Zuo_n>5 THEN
Zuo_Z:=Zuo_Z+1;
Zuo_n:=1;
ENDIF
IF Zuo_Z>3 THEN
reg6:=2;
Zuo_n:=1;
Zuo_Z:=1;
ENDIF
ENDIF
elseIF reg6=2 THEN
You_n:=You_n+1;
IF You_n>5 THEN
You_Z:=You_Z+1;
You_n:=1;
ENDIF
IF You_Z>3 THEN
reg6:=1;
You_n:=1;
You_Z:=1;
ENDIF
ENDIF
ENDPROC
PROC rFangLiao(robtarget Point) !带参数的例行程序
MoveJ Offs(Point,0,0,30),v800,z20,tool_XiPan\WObj:=wobj_Table;
MoveL Point,v300,fine,tool_XiPan\WObj:=wobj_Table;
Reset Do01_XiPan;
WaitTime 0.3;
MoveL Offs(Point,0,0,80),v800,z20,tool_XiPan\WObj:=wobj_Table;
ENDPROC
ENDMODULE

