abb机器人相关

机器人偏移量平均计算

    PROC init()
        	offset := abs(p10.trans.x - p20.trans.x)/39;
    ENDPROC

abb机器人碰撞回退程序

MODULE MainModule
PROC Main()
WHILE TRUE DO 
	MoveJ pHome, v1000, z50, tool0;
        
Place_1:
	SearchL\Stop, di_Crash1\NegFlank, pfound1, Offs(pPlace,0,0,0), v100, tGriper\WObj:=CurWobj;//NegFlank信号取反,从pfound1开始检测到pPlace点位 
        IF di_Crash1 =0 THEN 
          GOTO Place_2;//碰撞到了,跳转到回退处理行
        ENDIF
Place_2:
      IF di_Crash1 =0 THEN //判断是否有碰撞,避免误入程序
      	 pfound1:=CRobT(\Tool:=tGriper\WObj:=CurWobj);
        	MoveL offs(pfound1,0,0,100), vMidLoad, fine, tGriper\WObj:=CurWobj;//回退100
        	Setgo go_Error, 1;//给PLC报错
        	PulseDO\PLength:=1,do_RobError;
          Stop;
          Setgo go_Error, 0;
          GOTO Place_1;//再启动时再次进入运动程序
        ENDIF
 ENDWHILE
ENDPROC

abb机器人信号仿真

image
image
image
image

abb机器人中断程序

MODULE MainModule

      VAR intnum HPError1:= 0;
      VAR intnum HPError2:= 0;
    PROC rInitAll()
        Startmove;
        CONNECT HPError1 WITH rHP1Error;\\中断号链接中断处理程序
        ISignalDI zhongduan, 0, HPError1;\\信号链接检测到下降到0,触发中断程序
        CONNECT HPError2 WITH rHP1Error;\\此处触发同一个中断处理程序
        ISignalDI zhuanduan2, 0, HPError2;
		ISleep HPError1;\\暂时关闭中断检测
        IWatch HPError1;\\暂时关闭中断取消
    ENDPROC

    PROC Main()
        rInitAll;
        WHILE TRUE DO 
  MoveJ [[734.31,705.94,1217.50],[0.463801,-0.323519,0.803328,0.186784],[0,-1,0,0],[9E+9,9E+9,9E+9,9E+9,9E+9,9E+9]], v1000, z50, tool0;
  MoveJ [[1018.61,0.00,1217.50],[0.5,7.70773E-10,0.866025,4.45006E-10],[0,0,0,0],[9E+9,9E+9,9E+9,9E+9,9E+9,9E+9]], v1000, z50, tool0;
        ENDWHILE
    ENDPROC
   TRAP rHP1Error
     Stopmove;\\停止移动
     IDisable;
     StorePath;\\记录轨迹
     Stop;      
     RestoPath;  \\继续轨迹
     StartMove;
     IEnable; \\再次开启中断程序
  ENDTRAP  
ENDMODULE
~~~
posted @ 2025-03-18 20:30  阿拉斯加王  阅读(39)  评论(0)    收藏  举报