GETPOS using cartesian data?

  • Greetings

    I would like to be able to fetch the position and posture of the tool at the start of a job, to be used later in the job. Because I will be using SETTOOL to change the tool definition several times during the job, I need the position to be defined in cartesian coordinates. Pulse position coordinates won't help because changing the tool definition will change the position of the starting point.

    Is there a way to use GETPOS to store a point in robot coordinates instead of in pulse count position? I am using a DX100 controller.


    Thanks

    :grinning_squinting_face:

  • Try the CNVRT instruction. It will convert a position in pulse to XYZ or a position in XYZ to another XYZ. You can also use the Tool tag to convert to other tools.

    I know a thing or two, because I’ve seen a thing or two. Don't even ask about a third thing. I won't know it.

  • So when I use GETPOS and CNVRT I need to specify the position data variable in the form PX000. If I try use P000 there is a syntax error when I upload the job. But if I try specify a move as MOVL PX000 then there is a syntax error, and it only works if I specify in the form MOVL P000.

    This works:

    GETPOS PX002 STEP#(1)

    CNVRT PX003 PX002 RF


    And this works:

    MOVL P001 V=1



    How can I use the point that I have fetched (PX . . .) and converted into XYZ form with a move command?

    Edited once, last by DKirkman ().

  • Essentially, you've got it. The X in the GETPOS and CNVRT stands for expanded control group axes. The controller gets all the hardware that is recorded in the step. It might be robot only, it may be a robot and base track, it may be a robot and external axis. It is up to the programmer to parse out the data that they want. GETPOS, CNVRT, and GETS are the only instructions that I remember with the X.

    I know a thing or two, because I’ve seen a thing or two. Don't even ask about a third thing. I won't know it.

  • To clarify, am I wrong in assuming then that PX001 is the same point as P001 if I haven't registered any external axes etc?


    GETPOS PX002 STEP#(1)

    CNVRT PX003 PX002 RF


    MOVL P003 V=1


    Will that execute the move with the data in PX003?

  • You are correct. The MOVL P003 V=1 in your example would move the robot to the position recorded in step 1.


    Going sideways, there are different types of position variables. Robot position variables, Base position variables, and Station position variables. Just using the GET PX002 STEP#(1) as an example. When that instruction executes the controller doesn't know what piece of information I want, so it gives me everything.


    If the Job's Group Set/ Control Group is only R1 then robot 1's position recorded as step 1 is placed in Robot position variable P002.


    If the Job's Group Set/ Control Group is only S1 then external axis 1's position recorded as step 1 is placed in Station position variable EXP002.


    If the Job's Group Set/ Control Group is R1+ S1 then robot 1's position recorded as step 1 is placed in Robot position variable P002 and external axis 1's position recorded as step 1 is placed in Station position variable EX002.


    If the Job's Group Set/ Control Group is R1with a Base 1 then robot 1's position recorded as step 1 is placed in Robot position variable P002 and base axis 1's position recorded as step 1 is placed in Base position variable BP002.


    If the Job's Group Set/ Control Group is R1+R2:R1 then robot 1's position recorded as step 1 is placed in Robot position variable P003 (Master) and Robot 2's (Slave) position recorded as step 1 is placed in Robot position variable P002.




    Long story short, the X in those couple instructions means you may get more information that you need. The programmer needs to account for this. I may have data in a variable that I don't want overwritten or may not have enough room for data, that would cause an alarm.

    I know a thing or two, because I’ve seen a thing or two. Don't even ask about a third thing. I won't know it.

  • Assume robot moves from position P1 to position P2 and receives a sensor input before reaching P2. I need to store the sensing point(input recieved time) current position value into a position variable. How can I create a logic for this? IN YASKAWA YRC1000

  • You could use the UNTIL tag on a move. Depending on what options where purchased the SRCH or NSRCH tag. Next line would be the GETS to get the position.

    I know a thing or two, because I’ve seen a thing or two. Don't even ask about a third thing. I won't know it.

Advertising from our partners