MotionDoneGet() and StateGet()

What should I expect MotionDoneGet() to return for the various motion states?

  • IDLE
  • STOPPED
  • MOVING
  • STOPPING
  • ERROR
  • STOPPING_ERROR

What’s described in the docs gives me a hunch about MOVING, but not about the rest of them. I don’t know what “settled” means in these states, particularly IDLE or ERROR.

I want to make sure I have appropriate expectations of MotionDoneGet(). Anecdotal evidence suggests that waiting while in IDLE could take a really long time. I may be doing it wrong, so I want to start with properly informed expectations.

Our Settling Topic has a lot of the extra detail which should help.

Settling behavior can be adjusted with SettleOnStopSet() or SettleOnEStopSet() if you want to RSIEventTypeMOTION_DONE to appear after both the events and settling criteria having been met. These can be adjusted in RapidSetup’s Axis Settling Criteria tab if you’d like to experiment with it.

1 Like

The “Settling” doc was helpful. Thank you.

So, if I call MotionDoneWait() when the axis is IDLE, what should I expect? Will it wait for more motion to be commanded and then end before returning (or timing out)?

It should return immediately.

MotionDoneWait is MotionDoneGet with an internal loop to handle the Timeout passed in (Forever if you used that overload). MotionDoneGet checks that status bit of RSIEventTypeMOTION_DONE which I would l expect to be true when in IDLE.

1 Like