RobotStudio event

Array using robtarget

Hello! Been stuck with doing an array with 6 different robtargets. It is possible to do it this way:

    PERS num nPartCount := 0;
    PERS robtarget LeavePos{6} := 
        [[[620,1200,-86.402252976],[0.001544941,-0.70381839,-0.710369702,-0.003489157],[-2,0,1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],
        [[220,1200,-86.402252976],[0.001544941,-0.70381839,-0.710369702,-0.003489157],[-2,0,1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],
        [[-220,1200,-86.402252976],[0.001544941,-0.70381839,-0.710369702,-0.003489157],[-2,0,1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],
        [[620,875,-86.402252976],[0.001544941,-0.70381839,-0.710369702,-0.003489157],[-2,0,1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],
        [[220,875,-86.402252976],[0.001544941,-0.70381839,-0.710369702,-0.003489157],[-2,0,1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],
        [[-220,875,-86.402252976],[0.001544941,-0.70381839,-0.710369702,-0.003489157],[-2,0,1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]]];

And in my main I would write something like this:

nPartCount := nPartcount+1;
LeavePos{nPartCount};

The last line is where I get the error message. I think it's an easy fix but I can't figure it out. Thanks in advance!

Comments

  • Sure, this works. Last line just needs a movement order.

      MoveJ LeavePos{nPartCount},v100,z200,tool0;


  • Thanks! Didn't think about that at all. Very helpful!
  • Please do not do this: nPartCount := nPartcount+1;.  Simply written is expressed:  Incr nPartCount;
    Lee Justice
  • Didn't know you could do that, thanks. Will change it right away.
  • lemster68
    lemster68 ✭✭✭
    edited February 2020
    Just a pet peeve of mine, Incr and Decr are mathematical instructions.  :#   It will help make your code look smarter.
    Lee Justice
  • Hello,

    In a similar way, I am using a dynamic assigment to the robot targets in a loop like herebelow:

    FOR i FROM 1 to n
    MoveJ LeavePos{i}, v100, z200, tool0;
    ENDFOR

    And I am wondering if the execution of this code will result in the same trajectory as:


    MoveJ LeavePos{1}, v100, z200, tool0
    MoveJ LeavePos{2}, v100, z200, tool0
    MoveJ LeavePos{3}, v100, z200, tool0
    MoveJ LeavePos{4}, v100, z200, tool0
    ...
    MoveJ LeavePo{n}, v100, z200, tool0

    in terms of controller internal path planning. Will it ?

    As far as I understood,  the robot reads one line of movement ahead to generate a smooth trajectory (depending on the zone size) but in the case of the loop, it kind of can't read in advance, can it ?

    Will the resulting trajectory be less smooth in comparison to the MoveJ sequence ?
    Or is there absolutely no difference, and the robot directly interpretates the next freshly built moveJ ? @lemster68


    Thank you very much in advance 

  • It will work just fine.  As a matter of fact, some of our programs do pretty much the same thing as in your FOR loop.
    Lee Justice
  • Thank you for your quick reply !

    Good to know that ABB does kind of the same thing.

    And also, what if another instruction is added within the FOR loop like:

    FOR i FROM 1 to n
    One motionless instruction;
    MoveJ LeavePos{i}, v100, z200, tool0;
    ENDFOR

    Will the trajectory planner still remain unaffected either if the instruction is a priori not computationnaly intense ?

  • It will not be a problem.  By the way, the motion planner reads ahead more than one move instruction.
    Lee Justice
  • Thank you for the reactive support. Really appreciate
  • Be advised that ANY non-motion instruction that causes a wait will break up the fluidity.
    Lee Justice