07-08-2013 01:09 AM - edited 07-08-2013 01:22 AM
Hello,
I'm running LabVIEW 2012, and am using SoftMotion to drive a stepper motor attached to a CompactRIO. I am running the express VIs in Asynchronous mode.
This is what the documentation says for some of their outputs:
Anyway, I started a Straight Line Move (velocity move) on the axis, and interrupted the move using the Stop Move express VI (decelerate stop). The "aborted" output of the Straight Line Move VI became TRUE immediately, as expected. However, both the "done" and "aborted" outputs of the Stop Move VI stay FALSE and never become TRUE.
From my understanding of the documentation, Stop Move's "done" output should become TRUE when the motor successfully stop (I have ensured that "execute" stays TRUE). Have I missed something? How can I know when my Stop Move command has finished?
Thanks!
07-08-2013 08:52 AM
This is correct -- in a quick test, when I do a Stop on a long line move, the line goes aborted, the Stop signals active and busy for a short time, and then signals done.
It could be helpful to see the code you are using for this.
Edwin!
07-08-2013 10:22 PM - edited 07-08-2013 10:29 PM
Just a simple on-move-off sequence:
I think I'm experiencing a more fundamental signal reliability issue. After I simplified my example for posting, Stop Move's "done" signal DOES come on, but now Straight-Line Move's "aborted" signal doesn't. 😞
I have 5 motors so I'm running 5 axes in parallel -- is that too many for the system to handle? I'm using a beefy cRIO-9081 though.
I've attached my whole project file. The axis interface code (RT and FPGA) are from the official examples (LabVIEW 2012\examples\Motion\UnboundAxis\Stepper Interface (9401)), just cloned and made reentrant so that they can be run in parallel. Is there a better way to drive parallel axes?
I noticed something else: In Main.vi, If I start all 5 axis interface VIs simultaneously, the FPGA reports "Fault Occurred?" == TRUE, and "Scan Running?" == FALSE. I had to run them one after another, with at least 300ms between each, in order to get "Fault Occurred?" == FALSE and "Scan Running?" == TRUE. This is probably an indication that the system is on edge, but I can't work out why.
Thanks for your assistance, Edwin.
07-10-2013 08:55 AM
The multi-axis thing is a different question, and I see you have started a new thread specific to it, so that's good. Note that we do have a 4-axis example (examples\Motion\UDV\Simulated 4 Axis) that I think you have access to with your version -- instead of putting each axis in its own timing loop, we iterate across all axes within one loop (if that makes sense; check the example for details).
As for the lack of abort on the line, I was thinking maybe that it was because it's a velocity move, but no, in my test I get abort on a velocity move as well as a position move, as long as the "execute" bit is held high. If I let execute go low though, abort is not triggered.
Looking at your code, the same signal sequence appears to be in play, but I don't see abort go high -- so this is still a mystery for me.
Attached is a picture of the test code I was using -- the boolean inputs are latching (mechanical action - switch when released, to be specific).
Edwin!