1. Home
    1. Dashboard
    2. Search
  2. Forum
    1. Unresolved Threads
    2. Members
      1. Recent Activities
      2. Users Online
      3. Team Members
      4. Search Members
      5. Trophys
  3. Articles
  4. Blog
  5. Videos
  6. Jobs
  7. Shop
    1. Orders
  • Login or register
  • Search
This Thread
  • Everywhere
  • This Thread
  • This Forum
  • Articles
  • Pages
  • Forum
  • Blog Articles
  • Products
  • More Options
  1. Robotforum - Support and discussion community for industrial robots and cobots
  2. Forum
  3. Industrial Robot Support and Discussion Center
  4. Yaskawa Motoman Robot Forum
Your browser does not support videos RoboDK Software for simulation and programming
Visit our Mainsponsor
IRBCAM
Robotics Channel
Robotics Training
Advertise in robotics
Sponsored Ads

Programming of an online path correction

  • CFL_Max
  • January 8, 2025 at 4:27 PM
  • Thread is Resolved
  • CFL_Max
    Posts
    5
    • January 8, 2025 at 4:27 PM
    • #1

    Hello everybody:hi-bye:,

    I need some help please. I am a complete beginner in programming robots. I have only written a few simple static programs so far. I am working on a Yaskawa HC20DTP with a YRC1000m with Smart Pendant.

    I would like to move my Yaskawa from a pose A to B.
    However, the pose must always be corrected in the z-direction (tool coordinates).
    The correction is made via digital signals. For example, if input 4 == 1, the tool should be corrected in the z-direction (tool coordinates) in the positive direction and if input 5 == 1 in the negative direction.
    However, I cannot find a approach on how to program this. I have read about the ACORON function, but I have not found this function in YRC1000m.
    Perhaps an alternative would be to use MotoPlus SDK.

    Can you help me here?:help:

    :vulcan_salute_light_skin_tone: CFL_Max

  • Go to Best Answer
  • MOM January 8, 2025 at 4:45 PM

    Approved the thread.
  • arigatomrroboto
    Reactions Received
    1
    Trophies
    1
    Posts
    12
    • January 8, 2025 at 8:21 PM
    • #2

    You could use if/then statements and jump/labels for the various cases along with position variables for various +/- positions. Or you could set up a position variable and modify the Z component based on the different cases. Yaskawa provides free manuals on their website that dive deep and would be a great resource if you're just starting out.

    image.png

    Images

    • image.png
      • 3.39 kB
      • 190 × 200
      • 4
  • CFL_Max
    Posts
    5
    • January 9, 2025 at 9:32 AM
    • #3

    Hello,

    first, thank you very much for the quick reply.

    I am working with the operating instructions “YRC1000micro: INFORM Language Instructions”. However, the description of the commands is not very understandable for me.

    I still have a question about the line “MOVJ VJ=50”. It is clear to me that the robot moves linearly in joint coordinates, but not to which pose. The target pose was not specified.
    But the way I saw it in the manual, the code means it moves to a pose1 that was defined somewhere. Then the if/then statement is processed, right?

  • darth0
    Reactions Received
    4
    Trophies
    1
    Posts
    154
    • January 9, 2025 at 11:05 AM
    • #4
    Quote from CFL_Max

    Hello,

    first, thank you very much for the quick reply.

    I am working with the operating instructions “YRC1000micro: INFORM Language Instructions”. However, the description of the commands is not very understandable for me.

    I still have a question about the line “MOVJ VJ=50”. It is clear to me that the robot moves linearly in joint coordinates, but not to which pose. The target pose was not specified.
    But the way I saw it in the manual, the code means it moves to a pose1 that was defined somewhere. Then the if/then statement is processed, right?

    MOVJ is Joint move instruction, it isnt interpolated ( robot will not move in a straight line).

    MOVL is a Linear move instruction, it IS interpolated ( robot will move in a straight line).

    The position is written in the move instruction itself, when you register the MOV instruction, the current TCP position is "written" into the MOV instruction itself.

  • CFL_Max
    Posts
    5
    • January 9, 2025 at 11:31 AM
    • #5
    Quote from darth0

    MOVJ is Joint move instruction, it isnt interpolated ( robot will not move in a straight line).

    MOVL is a Linear move instruction, it IS interpolated ( robot will move in a straight line).

    The position is written in the move instruction itself, when you register the MOV instruction, the current TCP position is "written" into the MOV instruction itself.

    I apologize for expressing it incorrectly. I know that with MOVJ the robot doesn't move linearly in cartesian coordinates, but it does move linearly in joint coordinates.

    Okay, thanks. So the data is saved as a local pose (in the C00000 and C00001) in the program.
    I have now written a program and exported it as a JBI file:

    /JOB
    //NAME Sample1
    //POS
    ///NPOS 2,0,0,1,0,0
    ///TOOL 1
    ///POSTYPE PULSE
    ///PULSE
    C00000=48858,-19574,-75040,2307,-147086,-38869
    C00001=132031,17004,-48612,8204,-148602,-91982
    ///POSTYPE TOOL
    ///RECTAN
    ///RCONF 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
    P00002=0.000,0.000,10.000,0.0000,0.0000,0.0000
    //INST
    ///DATE 2025/01/09 12:15
    ///ATTR SC,RW
    ///GROUP1 RB1
    NOP
    MOVJ C00000 VJ=5.00
    MOVL C00001 V=100.0
    IFTHENEXP B000=1
    JUMP *up
    ENDIF
    *up
    IMOV P002 V=50.0
    END

    In this code, however, first the robot moves to pose C00000, than to pose C00001 and then it checks the if statement. However, the if statement should be checked during the linear movement.

    It seems that I haven't quite understood it yet.:loudly_crying_face:

  • darth0
    Reactions Received
    4
    Trophies
    1
    Posts
    154
    • January 9, 2025 at 12:23 PM
    • #6

    Hey!

    Do you maybe have the basic understanding of C/C++ programming, otherwise i suggest you read the inform Language PDF to learn the basics of how the language works.

    The IF logical instruction can be described as a loop for example:

    IF B000 < 3 then

    ---------------------------------------------------------------

    MOVL V=50

    MOVL V=50

    MOVL V=50...

    ------------------------------------------------------------------

    END IF


    Only the parts between lines are being looped.

    Secondly, nothing is changing the value of B000 ( you need to set the variable B000 with something like a counter, otherwise it will never get to 1 and it will never go into the IF loop.

    I would write something like this based on your problem, but you need to explain a bit more in detail what you are trying to achieve and with what. You are trying to shift TCP position in Z direction based on what ? What are the C000 and C001 Positions representing, the Shift value or absolute position the TCP needs to reach depending on Inputs #4 and #5 ?

    I would implement a SFTON instruction then.

    NOP

    SET P002 " Set P002 for your Z+ shift position

    SET P003 " Set P003 for your Z- shift position

    IF IN#(4)==ON

    SFTON P002

    ------------------------------------

    Write your move instructions here

    ------------------------------------

    SFTOFF

    END IF

    IF IN#(5) == ON

    SFTON P003

    -----------------------------------

    Write your move instructions here

    ------------------------------------

    SFTOF

    END IF

    END


    The SFTON instruction can be used to shift the coordinate system or position. You need to Set P002 ( 0,0, + Z-value,0,0,0)

    P003 (0,0, - Z-value, 0, 0, 0)

    Hope this helps but you really need to read the INFORM PDF and learn the language and syntaxes.

    Edited 2 times, last by darth0 (January 9, 2025 at 1:48 PM).

  • CFL_Max
    Posts
    5
    • January 9, 2025 at 4:09 PM
    • #7

    Thank you!

    Yes, I have some experience in programming (C++, C# and Python).
    But in all languages the “If-Operator” does not work like a loop. Do you mean that it becomes a loop because of the continuous repetition of the Yaskawa program?

    As soon as the condition of the if operator is true, the statement would be executed. So all MOVx commands in the statement would be processed in sequence.
    But that is not what the program is supposed to do.

    Fair point. Perhaps I have described my problem too imprecisely. Here is a better description:
    I want to sand a workpiece with a random orbital sander.
    I have the random orbital sander and the corresponding force and torque sensor from OnRobot.
    The only problem is that I can't get the analog values of the force and torque sensor because OnRobot has a Compute Box on which I program the logic. The box is connected to the sensor and the random orbital sander. The Compute Box is connected to the YRC1000micro via digital I/Os.

    I have programmed the logic of the Compute Box so that I achieve a contact pressure of 20 N. If the contact pressure is too high, I switch DigOut5 to True and DigOut6 to False. If it gets too low, I switch DigOut5 to False and DigOut6 to True.
    The DigOuts of the Compute Box are connected to DigIn5 and DigIn6 of the robot.
    If Input5 is True, more pressure is applied in the z-direction in tool coordinates and if Input6 is True, exactly the opposite.

  • darth0
    Reactions Received
    4
    Trophies
    1
    Posts
    154
    • January 10, 2025 at 7:08 AM
    • #8
    Quote from CFL_Max

    Thank you!

    Yes, I have some experience in programming (C++, C# and Python).
    But in all languages the “If-Operator” does not work like a loop. Do you mean that it becomes a loop because of the continuous repetition of the Yaskawa program?

    As soon as the condition of the if operator is true, the statement would be executed. So all MOVx commands in the statement would be processed in sequence.
    But that is not what the program is supposed to do.

    AFAIK all robots read the program in "Cascade/ladder" type, so first it reads line1, executes it, goes to line 2 etc.... untill it reaches END.

    That is why your program first executed the normal moves and probably didnt even go into the IF "loop" since you didnt have B000 "SET" or anything that would increase the value of B000 to 1 for it to go into the IF loop.

    For your program i would use the "logic" something along theese lines:

    DigOut5 should trigger one IF loop where you would use the SHFTON command to shift your coordinate system in the +Z direction .

    DigOut6 should trigger the second IF loop where you would also use the SHFTON command and shift your coordinate system in the -Z direction.

  • darth0
    Reactions Received
    4
    Trophies
    1
    Posts
    154
    • January 10, 2025 at 8:07 AM
    • #9

    Gonna add a subquestion:

    If i understand you correctly, the angle grinder should shift in Z direction depending on the Force it senses ( F>20N --> +Z corection, F<20N--> -Zcorrection)?

    This is basically a regulation of position through Force meassurments.

  • TSGIR
    Reactions Received
    81
    Trophies
    6
    Posts
    714
    • January 10, 2025 at 9:51 AM
    • Best Answer
    • #10

    Hi

    You couldn't do correct path when robot is moving with normal jobs, only you can use Motoplus for it.

    You need to know about correction path function in Motoplus and write some code for it. The Motoplus file is always running in back of robot and everytime you press a key, can you tell robot how much go up or down.

    Normal method couldn't help you, for example you are moving from A to B , you couldn't correct Z direction between these two points by any code in jobs. Only you can use a method same as laser tracking by Motoplus.

  • darth0
    Reactions Received
    4
    Trophies
    1
    Posts
    154
    • January 10, 2025 at 10:14 AM
    • #11
    Quote from TSGIR

    Hi

    You couldn't do correct path when robot is moving with normal jobs, only you can use Motoplus for it.

    TSGIR

    Hey, i thought this was the case and regulations cannot be done during moving.

    How is the Weld path being corrected/regulated with the use of a Seam tracker then?

    It corrects the path in real time, is that done with some Background logic program that is always runing in the background ?


    Im still learning the ins and outs of robotic programming, thank you for the reply

  • CFL_Max January 10, 2025 at 10:51 AM

    Selected a post as the best answer.
  • CFL_Max
    Posts
    5
    • January 10, 2025 at 12:01 PM
    • #12
    Quote from TSGIR

    Hi

    You couldn't do correct path when robot is moving with normal jobs, only you can use Motoplus for it.

    You need to know about correction path function in Motoplus and write some code for it. The Motoplus file is always running in back of robot and everytime you press a key, can you tell robot how much go up or down.

    Normal method couldn't help you, for example you are moving from A to B , you couldn't correct Z direction between these two points by any code in jobs. Only you can use a method same as laser tracking by Motoplus.

    Hi,

    @TSGIR

    thank you very much for your answer. I expected this.

    @darth0, @arigatomrroboto

    thank you very much for your help :smiling_face:

  • 95devils
    Reactions Received
    234
    Trophies
    8
    Posts
    1,947
    • January 10, 2025 at 2:25 PM
    • #13
    Quote from darth0

    How is the Weld path being corrected/regulated with the use of a Seam tracker then?

    There is an additional board (ACP02) installed. There is also software written as a function for seam tracking.

    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.

  • TSGIR
    Reactions Received
    81
    Trophies
    6
    Posts
    714
    • January 10, 2025 at 4:03 PM
    • #14
    Quote from darth0

    TSGIR

    Hey, i thought this was the case and regulations cannot be done during moving.

    How is the Weld path being corrected/regulated with the use of a Seam tracker then?

    It corrects the path in real time, is that done with some Background logic program that is always runing in the background ?


    Im still learning the ins and outs of robotic programming, thank you for the reply

    Display More

    For use Motoplus, you need software and hardware dongle, after that you can write your codes, create a OUT file, load on the controller and use it to correct path.

    Also it need to active some functions on the robot controller.

    You can download Motoplus manuals, i think 4 manual you can find for it, each manual explain about software, functions and setting.

Advertising from our partners

IRBCAM
Robotics Channel
Robotics Training
Advertise in robotics
Advertise in Robotics
Advertise in Robotics

Job Postings

  • Anyware Robotics is hiring!

    yzhou377 February 23, 2025 at 4:54 AM
  • How to see your Job Posting (search or recruit) here in Robot-Forum.com

    Werner Hampel November 18, 2021 at 3:44 PM
Your browser does not support videos RoboDK Software for simulation and programming

Tag Cloud

  • abb
  • Backup
  • calibration
  • Communication
  • CRX
  • DCS
  • dx100
  • dx200
  • error
  • Ethernet
  • Ethernet IP
  • external axis
  • Fanuc
  • help
  • hmi
  • I/O
  • irc5
  • IRVIsion
  • karel
  • kawasaki
  • KRC2
  • KRC4
  • KRC 4
  • KRL
  • KUKA
  • motoman
  • Offset
  • PLC
  • PROFINET
  • Program
  • Programming
  • RAPID
  • robodk
  • roboguide
  • robot
  • robotstudio
  • RSI
  • safety
  • Siemens
  • simulation
  • SPEED
  • staubli
  • tcp
  • TCP/IP
  • teach pendant
  • vision
  • Welding
  • workvisual
  • yaskawa
  • YRC1000

Thread Tag Cloud

  • abb
  • Backup
  • calibration
  • Communication
  • CRX
  • DCS
  • dx100
  • dx200
  • error
  • Ethernet
  • Ethernet IP
  • external axis
  • Fanuc
  • help
  • hmi
  • I/O
  • irc5
  • IRVIsion
  • karel
  • kawasaki
  • KRC2
  • KRC4
  • KRC 4
  • KRL
  • KUKA
  • motoman
  • Offset
  • PLC
  • PROFINET
  • Program
  • Programming
  • RAPID
  • robodk
  • roboguide
  • robot
  • robotstudio
  • RSI
  • safety
  • Siemens
  • simulation
  • SPEED
  • staubli
  • tcp
  • TCP/IP
  • teach pendant
  • vision
  • Welding
  • workvisual
  • yaskawa
  • YRC1000

Similar Threads

  • Best practice: Parametric placement with automatic path generation -> Software ?

    • stagrob
    • January 6, 2025 at 8:47 AM
    • General Discussion of Industrial Robots Only

Tags

  • yaskawa
  • yrc1000 micro
  • HC20DTP
  • smart pendant
  1. Privacy Policy
  2. Legal Notice
Powered by WoltLab Suite™
As a registered Member:
* You will see no Google advertising
* You can translate posts into your local language
* You can ask questions or help the community with your knowledge
* You can thank the authors for their help
* You can receive notifications of replies or new topics on request
* We do not sell your data - we promise

JOIN OUR GREAT ROBOTICS COMMUNITY.
Don’t have an account yet? Register yourself now and be a part of our community!
Register Yourself Lost Password
Robotforum - Support and discussion community for industrial robots and cobots in the WSC-Connect App on Google Play
Robotforum - Support and discussion community for industrial robots and cobots in the WSC-Connect App on the App Store
Download