海康四关节机器人项目程序

最后一个程序是其他人的程序;

 

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;

 

posted @ 2026-04-15 16:11  CSF践行  阅读(5)  评论(0)    收藏  举报