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

System Variable for Servos Ready

  • arikrundquist
  • May 15, 2020 at 10:42 PM
  • Thread is Unresolved
  • arikrundquist
    Reactions Received
    7
    Trophies
    3
    Posts
    69
    • May 15, 2020 at 10:42 PM
    • #1

    Is there a system variable I can read to see if my robot is ready for motion? I've noticed that even after the robot "clicks in", there is often a short interval (a couple hundred milliseconds) between when the servos seem to engage and the robot can actually start moving. Our system streams positions for the robot to move to, and works really well except during that interval. What it looks like is happening is the servos engage, the motion program begins running and commanding positions, the robot receives those positions and "moves", but then doesn't actually, physically move for ~300ms. This wouldn't be a problem, but then it jumps to try to catch up to where it was expected to be after those 300ms before smoothly following the rest of the planned motion.

    This isn't an acceleration problem -- there are no issues starting the motion planner if the servos are already engaged, and we can mask this issue by adding an artificial "if the servos were off and just came on, wait half a second before streaming the path" to our planner's logic, but ideally we just want the robot to be able to signal that it is actually ready to receive motion commands.

  • HawkME
    Reactions Received
    567
    Trophies
    10
    Posts
    3,268
    • May 15, 2020 at 11:02 PM
    • #2

    I would assume this is due to the brake release and servo power up. I recommend disabling the break off timer. That will keep the servos ready during wait conditions but will still require a time delay at the start of the program.

  • Sevastopol1
    Reactions Received
    8
    Trophies
    3
    Posts
    39
    • May 19, 2020 at 8:34 PM
    • #3

    I don't have the variable name you are seeking, however, I can add that the delay from servo off to ready to move includes the pre-charge of the DC bus on the servo amplifier. The 1st noise you hear is a contactor engaging the pre-charge current then flows, once pre-charge is complete the second contactor engages.

  • Sergei Troizky
    Reactions Received
    67
    Trophies
    6
    Posts
    650
    • May 19, 2020 at 11:02 PM
    • #4

    Why do you need a system variable?

    The UO[2] "System ready" indicates exactly what you need.

    Do it well right away. It will become bad by itself.

  • arikrundquist
    Reactions Received
    7
    Trophies
    3
    Posts
    69
    • May 19, 2020 at 11:27 PM
    • #5
    Quote from Sergei Troizky

    Why do you need a system variable?

    The UO[2] "System ready" indicates exactly what you need.

    I was using UO[2]; unfortunately, UO[2] goes high a decent bit before the robot will respond to streamed positions, so I was hoping there was another value that I could read that signaled exactly when the robot would begin to respond to commanded motions. I reached out to Fanuc and got this from them:

    Quote from Fanuc Technical Support

    Normally for a newer robot controller of R-30iB or B Plus the servos will take about two seconds to fully recover from a "servo off event" before motion will occur. If the robot is just sitting still and after about 20 seconds with no command of motion then it will go into a "power save mode". Upon recovery from a power save mode will normally take a little over a second, about 1.5 seconds then motion will occur. You may use these times for your [application] to start the streaming process after stopped motion[.]

    It seems the official response is that no such value exists... the closest we can get is watching for SYSRDY and then waiting a second and a half :thinking_face:

  • HawkME
    Reactions Received
    567
    Trophies
    10
    Posts
    3,268
    • May 20, 2020 at 12:06 AM
    • #6

    The thing is, it is ready to accept a motion command, it just takes time to respond. There is no way to get the servo fully energized besides commanding it to move. I would command it to move to the current position, Jpos, then wait, then start streaming. You can disable the idle brake timer so it won't go idle after 20 seconds. Then you only have to do the 1 second delay routine after a stop event. You could keep track of that in BG logic. I think the best way would to have the stream motion read then command jpos for the 1 second delay.

  • skalactik
    Reactions Received
    13
    Trophies
    3
    Posts
    111
    • May 20, 2020 at 11:22 AM
    • #7

    How about tricking the robot into never stop moving in the first place ? Doing very small motion back and forth would prevent the robot from moving into a "servo off event" while looking like the robot is not actually moving ?

  • HawkME
    Reactions Received
    567
    Trophies
    10
    Posts
    3,268
    • May 20, 2020 at 12:41 PM
    • #8

    Tricking it is not necessary. Just disable the brake timer and it will never go idle. That wouldn't help with an actual servo off event.

    A servo off event happens when there is an estop, fence stop, collision, or program end, etc. There is no way to keep it energized during a real servo off event thus the time delay method is needed.

  • skalactik
    Reactions Received
    13
    Trophies
    3
    Posts
    111
    • May 20, 2020 at 1:19 PM
    • #9

    If the time delay method is fine for the application then go for it as it surely requires less work.

    However i'm only trying to find an alternative solution, purely for the sake of it.

    So to keep on building on top of HawkME remarks :

    Quote

    Tricking it is not necessary. Just disable the brake timer and it will never go idle. That wouldn't help with an actual servo off event.


    I was starting with the assumption that the brakes were disabled.


    Quote from HawkME

    A servo off event happens when there is an estop, fence stop, collision, or program end, etc

    Of course this will not prevent the servo from powering off in the event of an estop, errors and such, that is much certain since these mechanism exist precisely for that purpose. However my understanding of the application is only to prevent them from being off between motions.

    Thus that is where having something to keep the robot busy comes in, no need to stop the program then. Just go back and forth between following the streamed path and the "do not let the robot stop" routine.

  • kwakisaki
    Reactions Received
    694
    Trophies
    11
    Posts
    4,765
    • May 20, 2020 at 7:15 PM
    • #10

    Just thought I'd throw in my 2 cents here.

    What HawkME and Sevastopol1 has mentioned is key here I think.

    This process that takes place between motion command request and actual motion and therefore this delay period will always exist.

    However, if you think about it, the brakes are in fact the last in the chain of events.

    Servo's must be running and error free in order for the brakes to be released - otherwise there is possibility of arm drop.

    Therefore, I would certainly be looking into the 'brakes' variables that are available to sniff at.

    In Kawasaki, they have a dedicated output called RGSO which is an indication that servo's are energised and brakes are released.

    Because even at zero motion request, the joints are being held in there current position.

    Could you use $MOR.$brk_status then.

    I am not 100% sure, but I think this turns to 1 when brakes are released, then with a servo off event, such as toggling of the teach switch then the brakes are re-applied and this status is then returned to 0.

    Certainly worth looking into......

    View my channel at Industrial Robotics Consultancy Limited - YouTube

  • arikrundquist
    Reactions Received
    7
    Trophies
    3
    Posts
    69
    • May 21, 2020 at 4:12 PM
    • #11
    Quote from kwakisaki

    However, if you think about it, the brakes are in fact the last in the chain of events.

    Servo's must be running and error free in order for the brakes to be released - otherwise there is possibility of arm drop.

    Therefore, I would certainly be looking into the 'brakes' variables that are available to sniff at.

    Could you use $MOR.$brk_status then.

    I am not 100% sure, but I think this turns to 1 when brakes are released, then with a servo off event, such as toggling of the teach switch then the brakes are re-applied and this status is then returned to 0.

    Certainly worth looking into......

    Display More

    Aha! I wouldn't have thought of that, but it works perfectly! Thanks kwakisaki!

  • kwakisaki
    Reactions Received
    694
    Trophies
    11
    Posts
    4,765
    • May 21, 2020 at 4:35 PM
    • #12

    So it works then.

    From Kawasaki perspective, when brakes are released, the robot itself is considered 'moving', even if no motion commanded value is received from a program, a motion command is received to retain it's current position - so it is moving, but stationary.

    So it was a little bit of a punt from my perspective as I myself am relatively new to Fanuc, but in my mind the order of events will be very similar if not identical.

    Glad it's worked for you though...………..Nice and good to know for the future.....:top:

    View my channel at Industrial Robotics Consultancy Limited - YouTube

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

Tags

  • karel
  • System Variable
  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