RobotStudio event

Movment single coordinate

Hello, in RAPID is possible to create a function to perform a movement of a single coordinated interpolated at the last movment?
For example
MoveL pPoint, vmax, z100, tGrip;
MoveL Move_XYZ (0,0,300), Vmax, z100, tGrip;

where the function Move_XYZ is the following:

FUNC robtarget Move_XYZ (num PosX, PosY num, num PosZ)
VAR robtarget PosXYZ;

PosXYZ: = CRobT ();

IF (PosX <> 0) THEN
PosXYZ.trans.x: = PosX;
ENDIF

IF (PosY <> 0) THEN
PosXYZ.trans.y: = PosY;
ENDIF

IF (PosZ <> 0) THEN
PosXYZ.trans.z: = PosZ;
ENDIF

RETURN PosXYZ;
ENDFUNC

I have the need that the movement derived from the function is interpolated to the previous movment but that the coordinates of the robot used to perform the function are those of arrival of pPoint. How can I do. Thank you!

Comments

  • Hello,

    you can do the following:
       
    func robtarget Move_XYZ(INOUT robtarget PosXYZ,num PosX,num PosY,num PosZ)
        IF (PosX<>0) PosXYZ.trans.x:=PosXYZ.trans.x+PosX;
        IF (PosY<>0) PosXYZ.trans.y:=PosXYZ.trans.y+PosY;
        IF (PosZ<>0) PosXYZ.trans.z:=PosXYZ.trans.z+PosZ;
        RETURN PosXYZ;
    ENDfunc

    then executing each movement below will move according to previous movement
    var robtarget tPoint;
    tPoint:=pPoint;
    MoveL Move_XYZ(tPoint,0,0,0),vmax,z100,tGrip;
    MoveL Move_XYZ(tPoint,0,0,300),vmax,z100,tGrip;
    MoveL Move_XYZ(tPoint,100,0,0),vmax,z100,tGrip;

    or you can execute directly
    MoveL Move_XYZ(pPoint,0,0,0),vmax,z100,tGrip;
    MoveL Move_XYZ(pPoint,0,0,300),vmax,z100,tGrip;
    MoveL Move_XYZ(pPoint,100,0,0),vmax,z100,tGrip;
    but then you modify the coordinates of your pPoint, i dont know if you need it for later on in your program.

    BR
    Peter
  • MoveL offs(pPoint,0,0,0),vmax,z100,tGrip;
    MoveL offs(pPoint,0,0,300),vmax,z100,tGrip;
    MoveL offs(pPoint,100,0,0),vmax,z100,tGrip;
    but then you modify the coordinates of your pPoint

    BR
    Amar