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. KUKA 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

Send live axis position with ethercat to PLC < 12ms

  • sloopkogel
  • April 14, 2024 at 4:13 PM
  • Thread is Unresolved
  • sloopkogel
    Trophies
    2
    Posts
    34
    • April 14, 2024 at 4:13 PM
    • #1

    Hello all,

    I have an external axis setup that is controlled by a PLC. The reason for this is that this axis has to be controlled by either the PLC or by the robot. In the robot I have configured the external axis as a 'simulated axis', and in a submit interpreter I send the axis position to the PLC (t = $axis_act.e1), the PLC then controls the servodrive. This works fine for this application, but the update frequency is quite slow, in the future if I want to use this approach again I would like the position to update faster. The submit interpreter will always run at 12ms minimum so with my current solution the update will never be faster then this.

    Controller: KRC5

    From what I understand my options are:

    Option 1: Send the axis position through ethercat, using a submit (my current solution)

    - Minimum cycle time: 12ms

    - Cost: Free (assuming I already have Ethercat setup for PLC communication)

    Option 2: Using Kuka Ethernet KRL ? (or is this a bad idea?)

    - Minimum cycle time: ? unknown, although from what I've heard, probably not verry fast, so not a good idea

    - Cost: Paid, reasonable price

    Option 3: Kuka RSI

    - Minimum cycle time: ? From what I've heard minimum 4ms?

    - Cost: Paid, reasonable price

    Option 4: Kuka FSD

    - Minimum cycle time: 1ms

    - Cost: Paid, verry expensive (too expensive for this application)

    Option 5: ???

    Any other ways to send data (preferably using ethercat) faster then the submit interpreter cycle time that don't cost an arm and a leg? Does anyone know the update time for the system variable $axis_act.e1? Is this < 12ms?

    Edited 4 times, last by sloopkogel (April 14, 2024 at 4:44 PM).

  • panic mode
    Reactions Received
    1,267
    Trophies
    11
    Posts
    13,033
    • April 14, 2024 at 5:06 PM
    • #2

    What real world application requires external axis position update that is so fast?

    After all it takes some time for axis to reach the target position and this is always boing to be THE bottleneck.

    What is your PLC scan time? What is the real handshake logic? For example do you know in advance what the next target position will be?

    If you are going to control the axis from Submit, this is always going to be tied to 12ms interpolation time regardless of used transport mechanism (fieldbus type).

    EKI is slow.

    RSI is faster

    FSD is fastest but... It us only the one way (sends position from robot to external system, cannot send anything in the other direction).

    Robot is too complex and too slow for direct control of the single axis. Power of robot is complex, coordinated and geometrically constrained motion of multiple axes.


    If you want fast control of some simple axis, do not use robot, use own motion controller or perhaps a plc. Avoid fieldbus by connecting motor to your own servo drive. Then you can have sub millisecond turnaround time.

    1) read pinned topic: READ FIRST...

    2) if you have an issue with robot, post question in the correct forum section... do NOT contact me directly

    3) read 1 and 2

  • hermann
    Reactions Received
    404
    Trophies
    9
    Posts
    2,595
    • April 15, 2024 at 8:19 AM
    • #3

    How fast do you need the control when plc is controlling the axis?

    If you don't need it faster than those 12ms, you can go the other way round.

    Connect the axis to the robot, when plc has to control it, set it to asynchronous, send the target values from plc to robot and control it from Sps.sub. This only works for external kinematics, not if you have a rail where the robot is mounted on.

    Jm2c

  • sloopkogel
    Trophies
    2
    Posts
    34
    • April 15, 2024 at 8:51 AM
    • #4

    Thanks for the replies guys.

    panic mode,

    The reason I want it to update so fast (ideally every millisecond) is that I control the servodrive directly with the PLC. The PLC has a built in motion controller that runs on 1 millisecond. The servo position is coupled to the external axis position that is sent by Kuka. I don't just send the target pos to the PLC but the actual position, and couple the servomotor to that position. If the update only happens every 12ms the motion is 'stuttering' (for lack of a better word..), I have solved this now by applying a 12ms filter. This works with the only drawback that the motion lags 12ms behind what it should be.

    hermann,

    In hindsight, this might have been a better solution.

    Just to clarify, there is no real necessity to update the position this fast for this specific application, but I would like to know my options if I ever encounter a similar application where I do need the fast update.

  • Online
    SkyeFire
    Reactions Received
    1,039
    Trophies
    12
    Posts
    9,380
    • April 15, 2024 at 3:50 PM
    • #5
    Quote from sloopkogel

    If the update only happens every 12ms the motion is 'stuttering' (for lack of a better word..),

    Ah. Yeah, that's an issue when coupling different control loops with different update rates.

    I'm not an expert in this field, but usually I see this resolved by giving the lower-level, faster control loop greater autonomy.

    For example, in a KRC, the main processor only updates the servo amps every 12ms. However, those servo amps run an internal loop that is much faster. So the main process drops by, leaves a command that says "Move this direction, this fast, with this much acceleration", and leaves. The servo amp then carries out that instruction multiple times over the next 12ms, doing its own internal checking for following error, over-current, etc, then when the main process swings back by for an update, the servo amp hands over its most recent status report, and the main process says "okay, good, now change the destination/vel/accel by this much," and leaves again.

    (I don't have to mention that I'm grossly oversimplifying here, do I?)

    Your 12ms filter is a very basic application of this principle. Another thing to try might be to, every 12ms, take the new commanded position from the robot, subtract the actual position at that moment, divide the difference by 12, then have the PLC loop apply each 1/12 slice at 1ms intervals until the next PLC/robot handshake to get a new commanded position. Or build a PID loop in the PLC (which would probably require some degree of input filtering).

    There's probably no way to eliminate that motion lag, but it's probably possible to reduce it below 12ms, with a nontrivial amount of coding and tuning. How far? That's a very parametric question.

  • panic mode
    Reactions Received
    1,267
    Trophies
    11
    Posts
    13,033
    • April 15, 2024 at 4:10 PM
    • #6

    you would be lucky to get 12ms. the update is slower than 12ms - always...

    12ms is just the interpolation time of the Submit and it does not even account for spillovers due CPU quotas. on top of that there are other delays like fieldbus refresh.

    if you need fast response, you need own servo drive controlled directly from the motion controller (without fieldbus, without submit..)

    the async axis is meant for indexing positioner. there is no need to 'stream position profile' peace-meal to it - just give it the target position and trigger it. the motion profile will be calculated by the KSS.

    btw, i do not recall seeing external axis (synchronous or not) where 12ms made any meaningful difference since positioning of the axis takes orders of magnitude longer to complete. from cycle time perspective that is simply insignificant. setting load correctly, tuning axis, planning motion, buffering data etc. allows for much greater optimization.

    1) read pinned topic: READ FIRST...

    2) if you have an issue with robot, post question in the correct forum section... do NOT contact me directly

    3) read 1 and 2

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

Users Viewing This Thread

  • 1 Guest
  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