最后一个程序是其他人的程序;
main:
#变量命名
int i;
int j;
label lab0:#主循环
SetNO(noPrgNum,1,100); #请求执行开始命令
i=GetNI(niPrgNum);#读取执行开始命令
case i
value 10:
rInital();#初始化
break;
value 20:
#rMaPan();#码盘取料
break;
value 30:
rfang(); #拍照+载具放料
break;
value 40:
rQingLiao(); #清料
break;
value 50:
rBD_shang_you();#左侧上光源标定
break;
value 60:
rBD_shang_zuo();#右侧上光源标定
break;
value 70:
rBD_xia();#下光源标定
break;
value 80:
rQu_CCD_you();#左侧柔震取料
break;
value 90:
rQu_CCD_zuo();#右侧柔震取料
break;
anyvalue:
Delay(0.1);
goto lab0;
break;
endcs;
j=i*10;
SetNO(noPrgNum,j,100); #请求执行结束命令
i=GetNI(niPrgNum);#读取执行结束命令
while j != i :
i=GetNI(niPrgNum);
Delay(0.1);
endwl;
goto lab0;
end;
#初始化
def void rInital():
struct POSE pCurPose;
#注意: 所有机器人通用-30和140这两个数据;
pCurPose=GetPose(Base,TOOL_0);
pCurPose.pose.z = -30; #Z轴提高到-30的高度;
MoveL(pCurPose,Fine,V10);
if pCurPose.pose.x < 140 && pCurPose.pose.y < 0 then #左后方区域回原
MoveL(pGuoDu_zuo,PL0,V20);
elseif pCurPose.pose.x < 140 && pCurPose.pose.y > 0 then #右后方区域回原
MoveL(pGuoDu_you,PL0,V20);
endif;
MoveJ(pHome,Fine,V20); #回原动作完成;
SetNO(noCcdTrigger,0,100.0);#复位CCD触发信号
SetNO(noX,0,100.0);
SetNO(noY,0,100.0);
SetNO(noR,0,100.0);
#SetDO(doDianCiFa01,0,100);#吸盘off
#SetDO(doDianCiFa02,0,100);#吸盘off
# PauseAll();#暂停所有线程
Print("初始化完成!");
return;
end;
#取料子程序
def void rQu_CCD_zuo():
int iX;
int iY;
int iR;
double fX;
double fY;
double fZ;
double fR;
struct POSE pPose0;
struct POSE pPose1;
struct POSE pPose_stemp;
rGripperOff(); #夹爪松开
label lab0:
#获取取料点位置
iX = GetNI(niCcdOffsetX);
iY = GetNI(niCcdOffsetY);
iR = GetNI(niCcdOffsetR);
fX =pCCD_shang_zuo.pose.x+iX/1000.0;
fY =pCCD_shang_zuo.pose.y+iY/1000.0;
fZ =pCCD_shang_zuo.pose.z;
fR =pCCD_shang_zuo.pose.yaw+iR/1000.0;
while iX/1000>125.0 || iX/1000<-125.0 || iY/1000>100 || iY/1000<-100 || iR/1000+pCCD_shang_zuo.pose.yaw>180 || iR/1000-pCCD_shang_zuo.pose.yaw<-180 :
SetNO(noAlarmNum,40002,100.0); #报警代码: 左柔震视觉反馈数据超限;
Delay(0.1);
goto lab0;
endwl;
pPose0 = PoseOffsetCS(pPose_stemp,fX,fY,fZ+40.0,fR); #取料点上方赋值
pPose1 = PoseOffsetCS(pPose_stemp,fX,fY,fZ,fR); #取料点赋值
MoveJ(pGuoDu_zuo,PL0,V50);
MoveL(pPose0,PL0,V50);
MoveL(pPose1,Fine,V10);
Delay(0.5);
rGripperOn();
MoveL(pPose0,PL0,V50);
MoveL(pGuoDu_zuo,PL0,V50);
rCCD();
return;
end;
#放料子程序
def void rfang():
int i;
int iX;
int iY;
int iOffZ;
int iR;
double fX;
double fY;
double fR;
double fOffZ;
struct POSE pPose0;
struct POSE pPose1;
label lab0:
#放料高度偏移值 (PLC→ROB)
iOffZ=GetNI(niOffsetZ_fang);
fOffZ=iOffZ/1000.0;
#放料位置偏移值 (CCD→ROB)
iX = GetNI(niCcdOffsetX);
iY = GetNI(niCcdOffsetY);
iR = GetNI(niCcdOffsetR);
fX =iX/1000.0;
fY =iY/1000.0;
fR =iR/1000.0;
while fX>5.0 || fX<-5.0 || fY>5.0 || fY<-5.0 || fR>5.0 || fR<-5.0 :
SetNO(noAlarmNum,40003,100.0);
Delay(0.1);
goto lab0;
endwl;
while fOffZ>5.0 || fOffZ<-5.0 :
SetNO(noAlarmNum,40011,100.0);
Delay(0.1);
goto lab0;
endwl;
#放料上方点赋值
pPose0 = PoseOffsetCS(pZaiJu,fX,fY,0,fR);
pPose0.pose.z=pCCD_xia.pose.z;
#放料点赋值
pPose1 = PoseOffsetCS(pZaiJu,fX,fY,fOffZ,fR);
MoveJ(pPose0,PL0,V50);
MoveL(pPose1,Fine,V10);
Delay(0.5);
rGripperOff();
MoveL(pPose0,PL10,V50);
return;
end;
#取料子程序
def void rQu_CCD_you():
int iX;
int iY;
int iR;
double fX;
double fY;
double fZ;
double fR;
struct POSE pPose0;
struct POSE pPose1;
struct POSE pPose_stemp;
rGripperOff();#夹爪松开
label lab0:
#获取取料点位置
iX = GetNI(niCcdOffsetX);
iY = GetNI(niCcdOffsetY);
iR = GetNI(niCcdOffsetR);
fX =pCCD_shang_you.pose.x+iX/1000.0;
fY =pCCD_shang_you.pose.y+iY/1000.0;
fZ =pCCD_shang_you.pose.z;
fR =pCCD_shang_you.pose.yaw+iR/1000.0;
while iX/1000>125.0 || iX/1000<-125.0 || iY/1000>100 || iY/1000<-100 || iR/1000+pCCD_shang_zuo.pose.yaw>180 || iR/1000-pCCD_shang_zuo.pose.yaw<-180 :
SetNO(noAlarmNum,40002,100.0); #报警代码: 左柔震视觉反馈数据超限;
Delay(0.1);
goto lab0;
endwl;
pPose0 = PoseOffsetCS(pPose_stemp,fX,fY,fZ+40,fR); #取料点上方赋值
pPose1 = PoseOffsetCS(pPose_stemp,fX,fY,fZ,fR); #取料点赋值
MoveJ(pGuoDu_you,PL0,V50);
MoveL(pPose0,PL0,V50);
MoveL(pPose1,Fine,V10);
Delay(0.5);
rGripperOn();
MoveL(pPose0,PL0,V50);
MoveL(pGuoDu_you,PL0,V50);
rCCD();
return;
end;
def void rBD_xia():
int i;
int iX;
int iY;
int iR;
int iOK_NG;
int index;
struct POSE PS[13];
struct POSE pPose0;
rConveyGet() ;#从载具中取起来
# 标定上方点
pPose0 = PoseOffsetCS(pCCD_xia,0,0,10,0);
MoveL(pPose0,Fine,V50);
Delay(0.5);
label lab0:
# 所有标定点赋值
PS[0] = PoseOffsetCS(pCCD_xia,-5,5,0,0);
PS[1] = PoseOffsetCS(pCCD_xia,-5,0,0,0);
PS[2] = PoseOffsetCS(pCCD_xia,-5,-5,0,0);
PS[3] = PoseOffsetCS(pCCD_xia,0,-5,0,0);
PS[4] = PoseOffsetCS(pCCD_xia,0,0,0,0);#5
PS[5] = PoseOffsetCS(pCCD_xia,0,5,0,0);
PS[6] = PoseOffsetCS(pCCD_xia,5,5,0,0);
PS[7] = PoseOffsetCS(pCCD_xia,5,0,0,0);
PS[8] = PoseOffsetCS(pCCD_xia,5,-5,0,0);
PS[9] = PoseOffsetCS(pCCD_xia,0,0,0,0);#5
PS[10] = PoseOffsetCS(pCCD_xia,0,0,0,10);
PS[11] = PoseOffsetCS(pCCD_xia,0,0,0,20);
PS[12] = PoseOffsetCS(pCCD_xia,0,0,0,0);#5
SetNO(noCcdTrigger,0,100.0);#复位CCD触发信号
if index>=13 then #标定完成
rInital(); #回原
rConveyPut(); #放回载具中
Print("壳体3视觉标定完成!");
return;
endif;
MoveL(PS[index],Fine,V20);# 标定点
#将标定点坐标信息发送给CCD;
iX=DoubleToInt(PS[index].pose.x*1000.0);
iY=DoubleToInt(PS[index].pose.y*1000.0);
iR=DoubleToInt(PS[index].pose.yaw*1000.0);
SetNO(noX,iX,100.0);
SetNO(noY,iY,100.0);
SetNO(noR,iR,100.0);
#打印坐标信息
Print(index);
Print(iX);
Print(iY);
Print(iR);
if index<12 then
SetNO(noCcdTrigger,2,100.0);#置位CCD触发信号
else
SetNO(noCcdTrigger,1,100.0);#置位CCD触发信号
endif;
Delay(0.2);
i=0;
iOK_NG=GetNI(niCcdOkNg);
while iOK_NG != 0 : #等待CCD反馈数据为0
iOK_NG=GetNI(niCcdOkNg);
Delay(0.1);
i++;
if i>10 then SetNO(noAlarmNum,40009,100.0); endif; #报警代码: 壳体3视觉反馈不为0;
endwl;
i=0;
iOK_NG=GetNI(niCcdOkNg);
while iOK_NG != 1 : #等待CCD反馈为1
iOK_NG=GetNI(niCcdOkNg);
Delay(0.1);
i++;
if i>10 then SetNO(noAlarmNum,40010,100.0); endif; #报警代码: 壳体3视觉反馈不为1;
endwl;
index++;#标定索引+1
Delay(2.0);
goto lab0;
return;
end;
def void rBD_shang_zuo():
int i;
int iX;
int iY;
int iR;
int iOK_NG;
int index;
struct POSE PS[13];
struct POSE pPose0;
struct POSE pPose1;
label lab0:#
SetNO(noCcdTrigger,0,100.0);#复位CCD触发信号
if index>=13 then #标定完成, 结束标定子程序;
Print("壳体2视觉标定完成!");
return;
endif;
rConveyGet();#从载具位取起来;
MoveJ(pGuoDu_zuo,PL0,V50);
#标定点赋值
PS[0] = PoseOffsetCS(pCCD_shang_zuo,20,-20,0,0);
PS[1] = PoseOffsetCS(pCCD_shang_zuo,0,-20,0,0);
PS[2] = PoseOffsetCS(pCCD_shang_zuo,-20,-20,0,0);
PS[3] = PoseOffsetCS(pCCD_shang_zuo,-20,0,0,0);
PS[4] = PoseOffsetCS(pCCD_shang_zuo,0,0,0,0);#5
PS[5] = PoseOffsetCS(pCCD_shang_zuo,20,0,0,0);
PS[6] = PoseOffsetCS(pCCD_shang_zuo,20,20,0,0);
PS[7] = PoseOffsetCS(pCCD_shang_zuo,0,20,0,0);
PS[8] = PoseOffsetCS(pCCD_shang_zuo,-20,20,0,0);
PS[9] = PoseOffsetCS(pCCD_shang_zuo,0,0,0,-30);#5
PS[10] = PoseOffsetCS(pCCD_shang_zuo,0,0,0,0);
PS[11] = PoseOffsetCS(pCCD_shang_zuo,0,0,0,30);
PS[12] = PoseOffsetCS(pCCD_shang_zuo,0,0,0,0);#5
#标定点上方
pPose0 = PoseOffsetCS(PS[index],0,0,30,0);
MoveL(pPose0,PL0,V50);
#标定点
MoveL(PS[index],Fine,V20);
Delay(0.5);
rGripperOff();#夹爪松开
MoveL(pPose0,PL0,V10);
MoveL(pGuoDu_zuo,PL0,V50);
#将标定点坐标数据发给CCD;
iX=DoubleToInt(PS[index].pose.x*1000.0);
iY=DoubleToInt(PS[index].pose.y*1000.0);
iR=DoubleToInt(PS[index].pose.yaw*1000.0);
SetNO(noX,iX,100.0);
SetNO(noY,iY,100.0);
SetNO(noR,iR,100.0);
#打印标定点坐标信息;
Print(index);
Print(iX);
Print(iY);
Print(iR);
#和CCD之间的交互
if index<12 then
SetNO(noCcdTrigger,2,100.0);#置位CCD触发信号
else
SetNO(noCcdTrigger,1,100.0);#置位CCD触发信号
endif;
Delay(0.2);
i=0;
iOK_NG=GetNI(niCcdOkNg);
while iOK_NG != 0 : #等待CCD反馈数据为0
iOK_NG=GetNI(niCcdOkNg);
Delay(0.1);
i++;
if i>10 then SetNO(noAlarmNum,40007,100.0); endif; #报警代码: 壳体2视觉反馈不为0;
endwl;
i=0;
iOK_NG=GetNI(niCcdOkNg);
while iOK_NG != 1 :
iOK_NG=GetNI(niCcdOkNg);#等待CCD反馈数据为1
Delay(0.1);
i++;
if i>10 then SetNO(noAlarmNum,40008,100.0); endif; #报警代码: 壳体2视觉反馈不为1;
endwl;
#进入柔震取出产品
MoveL(pPose0,PL0,V50);
MoveL(PS[index],Fine,V10);
rGripperOn();
MoveL(pPose0,PL0,V50);
MoveL(pGuoDu_zuo,PL0,V50);
index++;#标定索引+1
rConveyPut(); #产品放入载具进行二次定位
goto lab0;
return;
end;
def void rBD_shang_you():
int i;
int iX;
int iY;
int iR;
int iOK_NG;
int index;
struct POSE PS[13];
struct POSE pPose0;
struct POSE pPose1;
label lab0:#
SetNO(noCcdTrigger,0,100.0);#复位CCD触发信号
if index>=13 then#CCD标定完成;
Print("壳体1视觉标定完成!");
return;
endif;
rConveyGet();#从载具取产品
MoveJ(pGuoDu_you,PL0,V50);
#所有标定点赋值
PS[0] = PoseOffsetCS(pCCD_shang_you,20,-20,0,0);
PS[1] = PoseOffsetCS(pCCD_shang_you,0,-20,0,0);
PS[2] = PoseOffsetCS(pCCD_shang_you,-20,-20,0,0);
PS[3] = PoseOffsetCS(pCCD_shang_you,-20,0,0,0);
PS[4] = PoseOffsetCS(pCCD_shang_you,0,0,0,0);#5
PS[5] = PoseOffsetCS(pCCD_shang_you,20,0,0,0);
PS[6] = PoseOffsetCS(pCCD_shang_you,20,20,0,0);
PS[7] = PoseOffsetCS(pCCD_shang_you,0,20,0,0);
PS[8] = PoseOffsetCS(pCCD_shang_you,-20,20,0,0);
PS[9] = PoseOffsetCS(pCCD_shang_you,0,0,0,-30);#5
PS[10] = PoseOffsetCS(pCCD_shang_you,0,0,0,0);
PS[11] = PoseOffsetCS(pCCD_shang_you,0,0,0,30);
PS[12] = PoseOffsetCS(pCCD_shang_you,0,0,0,0);#5
#标定点上方
pPose0 = PoseOffsetCS(PS[index],0,0,30,0);
MoveL(pPose0,PL0,V50);
#标定点
MoveL(PS[index],Fine,V20);
rGripperOff();#夹爪松开
MoveL(pPose0,PL0,V10);
MoveL(pGuoDu_you,PL0,V50);
Delay(0.5);
#发送标定点坐标数据给CCD;
iX=DoubleToInt(PS[index].pose.x*1000.0);
iY=DoubleToInt(PS[index].pose.y*1000.0);
iR=DoubleToInt(PS[index].pose.yaw*1000.0);
SetNO(noX,iX,100.0);
SetNO(noY,iY,100.0);
SetNO(noR,iR,100.0);
#打印坐标信息;
Print(index);
Print(iX);
Print(iY);
Print(iR);
#和CCD之间的交互
if index<12 then
SetNO(noCcdTrigger,2,100.0);#置位CCD触发信号
else
SetNO(noCcdTrigger,1,100.0);#置位CCD触发信号
endif;
Delay(0.2);
i=0;
iOK_NG=GetNI(niCcdOkNg);
while iOK_NG != 0 :
iOK_NG=GetNI(niCcdOkNg);#等待CCD反馈数据为0
Delay(0.1);
i++;
if i>10 then SetNO(noAlarmNum,40005,100.0); endif; #报警代码: 壳体1视觉反馈不为0;
endwl;
i=0;
iOK_NG=GetNI(niCcdOkNg);
while iOK_NG != 1 :
iOK_NG=GetNI(niCcdOkNg);#等待CCD数据反馈为1
Delay(0.1);
i++;
if i>10 then SetNO(noAlarmNum,40006,100.0); endif; #报警代码: 壳体1视觉反馈不为1;
endwl;
#进入柔震取出产品
MoveL(pPose0,PL0,V50);
MoveL(PS[index],Fine,V10);
rGripperOn();#夹爪夹紧
MoveL(pPose0,PL0,V50);
MoveL(pGuoDu_you,PL0,V50);
index++;#标定索引+1
rConveyPut(); ##产品放入载具进行二次定位;
goto lab0;
return;
end;
def void rCCD():
int i;
int iOK_NG;
SetNO(noCcdTrigger,0,100.0);#CCD触发off
MoveJ(pGuoDu_you,PL0,V50);#过度点_右
MoveJ(pCCD_xia,Fine,V50);#拍照点
Delay(0.1);
SetNO(noCcdTrigger,1,100.0);#CCD触发on
Delay(0.2);
i=0;
iOK_NG=GetNI(niCcdOkNg);
while iOK_NG != 0 : #等待CCD反馈为0
iOK_NG=GetNI(niCcdOkNg);
Delay(0.1);
i++;
if i>10 then SetNO(noAlarmNum,40009,100.0); endif; #报警代码: 壳体3视觉反馈不为0;
endwl;
i=0;
iOK_NG=GetNI(niCcdOkNg);
while iOK_NG != 1 : #等待CCD反馈为1
iOK_NG=GetNI(niCcdOkNg);
Delay(0.1);
i++;
if i>10 then SetNO(noAlarmNum,40010,100.0); endif; #报警代码: 壳体3视觉反馈不为1;
endwl;
SetNO(noCcdTrigger,0,100.0);#CCD触发off
MoveJ(pZaiJu_shang,PL0,V50);
return;
end;
#拿起物料(组装位)
def void rConveyGet():
rGripperOff();
MoveJ(pZaiJu_shang,PL0,V50); #放料上方点
MoveL(pZaiJu,Fine,V20); #放料点
Delay(0.5);
rGripperOn();#夹爪夹紧
MoveL(pZaiJu_shang,PL0,V50); #放料上方点
return;
end;
#放下物料(组装位)
def void rConveyPut():
MoveJ(pZaiJu_shang,PL0,V50); #放料上方点
MoveL(pZaiJu,Fine,V20); #放料点
Delay(0.5);
rGripperOff();#夹爪松开
MoveL(pZaiJu_shang,PL0,V50); #放料上方点
return;
end;
#夹爪夹紧
def void rGripperOn():
SetDO(doDianCiFa01,1,100);#电磁阀01
SetDO(doDianCiFa02,0,100);#电磁阀02
Delay(0.5);
WaitDI(diWorkPoint01,0,-1);#传感器01
WaitDI(diWorkPoint01,0,-1);#传感器02
return;
end;
#夹爪松开
def void rGripperOff():
SetDO(doDianCiFa01,0,100);#电磁阀01
SetDO(doDianCiFa02,1,100);#电磁阀02
Delay(0.5);
WaitDI(diWorkPoint01,0,-1);#传感器01
WaitDI(diWorkPoint01,0,-1);#传感器02
return;
end;
background Task0:
int i;
int iSpeed;
while 1 : #注意: 所有程序必须在while内
#速度赋值
iSpeed=GetNI(niRobSpeed);
if iSpeed>0 && iSpeed<101 then
SetSpeed(iSpeed);
endif;
#报警清除
i++;
if i>20 then#2秒复位一次
SetNO(noAlarmNum,00000,100.0); #报警代码复位
i=0;
endif;
Delay(0.1);
endwl;
end;
main:
l1=5;
r1=10;
l2 = -1.0*l1;
r2 = -1.0*r1;
p1 = PoseOffsetCS(p0,l1,l1,0,0,0,0);
p2 = PoseOffsetCS(p0,0,l1,0,0,0,0);
p3 = PoseOffsetCS(p0,l2,l1,0,0,0,0);
p4 = PoseOffsetCS(p0,l2,0,0,0,0,0);
p5 = PoseOffsetCS(p0,0,0,0,0,0,0);
p6 = PoseOffsetCS(p0,l1,0,0,0,0,0);
p7 = PoseOffsetCS(p0,l1,l2,0,0,0,0);
p8 = PoseOffsetCS(p0,0,l2,0,0,0,0);
p9 = PoseOffsetCS(p0,l2,l2,0,0,0,0);
p10 = PoseOffsetCS(p0,0,0,0,r1,0,0);
p11 = PoseOffsetCS(p0,0,0,0,0,0,0);
p12 = PoseOffsetCS(p0,0,0,0,r2,0,0);
p13 = PoseOffsetCS(p0,0,0,0,0,0,0);
p14 = PoseOffsetCS(p0,0,0,0,3,0,0);
p15 = PoseOffsetCS(p0,0,0,0,6,0,0);
p16 = PoseOffsetCS(p0,0,0,0,9,0,0);
SocketCreate("photo","tcp");
SocketAccept("photo","192.168.2.100",7920,60,"\n","client1",",");
#SocketConnect("photo","192.168.2.99",8080,60,"\n",",");
MoveL(p5,PL0,V50);
Delay(0.5);
MoveL(p1,PL0,V50);
Delay(0.5);
pget = GetPose(Base,TOOL_0);
dou[0] = 1002;
dou[1] = pget.pose.x;
dou[2] = pget.pose.y;
dou[3] = pget.pose.yaw;
Print(dou[0]);
Print(dou[1]);
Print(dou[2]);
Print(dou[3]);
SocketSendDouble("client1",4,dou,60);
SocketRecvDouble("client1",1,bd,60);
Print(bd[0]);
if bd[0] !=1 then
Delay(86399);
endif;
Delay(1);
MoveL(p2,PL0,V50);
Delay(0.5);
pget = GetPose(Base,TOOL_0);
dou[0] = 1002;
dou[1] = pget.pose.x;
dou[2] = pget.pose.y;
dou[3] = pget.pose.yaw;
SocketSendDouble("client1",4,dou,60);
iii=SocketRecvDouble("client1",1,bd,60);
Print(iii);
Print(bd[0]);
if bd[0] !=1 then
Delay(86399);
endif;
Delay(1);
MoveL(p3,PL0,V50);
Delay(0.5);
pget = GetPose(Base,TOOL_0);
dou[0] = 1002;
dou[1] = pget.pose.x;
dou[2] = pget.pose.y;
dou[3] = pget.pose.yaw;
SocketSendDouble("client1",4,dou,60);
SocketRecvDouble("client1",1,bd,60);
Print(bd[0]);
if bd[0] !=1 then
Delay(86399);
endif;
Delay(1);
MoveL(p4,PL0,V50);
Delay(0.5);
pget = GetPose(Base,TOOL_0);
dou[0] = 1002;
dou[1] = pget.pose.x;
dou[2] = pget.pose.y;
dou[3] = pget.pose.yaw;
SocketSendDouble("client1",4,dou,60);
SocketRecvDouble("client1",1,bd,60);
Print(bd[0]);
if bd[0] !=1 then
Delay(86399);
endif;
Delay(1);
MoveL(p5,PL0,V50);
Delay(0.5);
pget = GetPose(Base,TOOL_0);
dou[0] = 1002;
dou[1] = pget.pose.x;
dou[2] = pget.pose.y;
dou[3] = pget.pose.yaw;
SocketSendDouble("client1",4,dou,60);
SocketRecvDouble("client1",1,bd,60);
Print(bd[0]);
if bd[0] !=1 then
Delay(86399);
endif;
Delay(1);
MoveL(p6,PL0,V50);
Delay(0.5);
pget = GetPose(Base,TOOL_0);
dou[0] = 1002;
dou[1] = pget.pose.x;
dou[2] = pget.pose.y;
dou[3] = pget.pose.yaw;
SocketSendDouble("client1",4,dou,60);
SocketRecvDouble("client1",1,bd,60);
Print(bd[0]);
if bd[0] !=1 then
Delay(86399);
endif;
Delay(1);
MoveL(p7,PL0,V50);
Delay(0.5);
pget = GetPose(Base,TOOL_0);
dou[0] = 1002;
dou[1] = pget.pose.x;
dou[2] = pget.pose.y;
dou[3] = pget.pose.yaw;
SocketSendDouble("client1",4,dou,60);
SocketRecvDouble("client1",1,bd,60);
Print(bd[0]);
if bd[0] !=1 then
Delay(86399);
endif;
Delay(1);
MoveL(p8,PL0,V50);
Delay(0.5);
pget = GetPose(Base,TOOL_0);
dou[0] = 1002;
dou[1] = pget.pose.x;
dou[2] = pget.pose.y;
dou[3] = pget.pose.yaw;
SocketSendDouble("client1",4,dou,60);
SocketRecvDouble("client1",1,bd,60);
Print(bd[0]);
if bd[0] !=1 then
Delay(86399);
endif;
Delay(1);
MoveL(p9,PL0,V50);
Delay(0.5);
pget = GetPose(Base,TOOL_0);
dou[0] = 1002;
dou[1] = pget.pose.x;
dou[2] = pget.pose.y;
dou[3] = pget.pose.yaw;
SocketSendDouble("client1",4,dou,60);
SocketRecvDouble("client1",1,bd,60);
Print(bd[0]);
if bd[0] !=1 then
Delay(86399);
endif;
Delay(1);
MoveL(p5,PL0,V50);
Delay(0.5);
SocketClose("photo");
end;