LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

Synchronous Motion Halted by Profile Complete?

Hello,

I've written an application that takes advantage of my DAQ and Motion Controller card being connected via RTSI bus to do synchronous data acquisition. The way my loop has been constructed is to continue if the "Read per Axis Status" vi doesn't return any true values for: Motor off, profile complete, or following error. Now, my program will run from anywhere betwen usually 10-35 seconds before halting unexpectedly due to the "profile complete" boolean to turn true. I haven't been able to find out exactly what causes this and what I can do to deal with it, as I need my application to run for about 5-10 minutes rather than 10-35 seconds.

Thank you
0 Kudos
Message 1 of 11
(2,891 Views)
Hi FiberOptix,
What model of motion controller and what driver version of NI-Motion are you using? This can be found by going into Measurement & Automation Explorer (MAX), expanding the Software group on the left, and clicking on NI-Motion.

A slightly more detailed description of the Profile Complete boolean can be found in KnowledgeBase 1OJE8AIN: What Exactly Do the Motion Axis Status Bits Mean?
Do you get the same error if you check for Move Complete rather than Profile Complete?

Also, how are you generating your move profile, and is the unexpected halting you are seeing in your program also when the motor achieves a particular point of interest in your generation (such as blending between trajectories or changing direction suddenly), or is it seemingly random along a single move where this happens?
0 Kudos
Message 2 of 11
(2,876 Views)
Thanks for your reply VGA.

My NI-Motion driver version appears to be 7.3.0.3003 and my motion controller card is a PCI-7344.

With regard to your question about getting the same "true" status for move complete... Both times I opened the "Read per Axis Status" vi to watch and see, the program operated for the amount of time that I asked it to, so at this time I am unable to say. I'm unable to tell exactly when the halt occurs with respect to the motion because things are happening so fast, but it's reversing direction all the time.
0 Kudos
Message 3 of 11
(2,870 Views)
If the last few times you've tried the system it has worked fine, maybe it was a temporary thing. Are you still experiencing the problem?
0 Kudos
Message 4 of 11
(2,850 Views)
It is still a problem, yes. Only when I had the "Read per Axis Status" vi open did it go away but as I don't plan on having that front panel open every time I run the program, my problem persists.
0 Kudos
Message 5 of 11
(2,842 Views)
It may be that you are somehow getting ahead of yourself with move generation, so that when you have the front panel for Read Execution Status open, it slows things down just enough to prevent the error from happening. Can you post your VI and your Measurement & Automation Explorer (MAX) settings (right-click Motion card's settings and choose Initialization » Export settings...)? It might be easier for people to look through the code rather than going back and forth with questions.
0 Kudos
Message 6 of 11
(2,825 Views)
Hello, and sorry for the delay.

I've attacked my MAX settings as requested, as well as the offending portion of my code - the entire program is pretty big and even this part is somewhat complex but if you need me to include more please just let me know.

Thanks for the help.
Download All
0 Kudos
Message 7 of 11
(2,779 Views)
Hi FiberOptix,
I'll take a look at the code and see if I can figure out what may be causing the issue.
0 Kudos
Message 8 of 11
(2,744 Views)
Hi VGA,

Have you been able to come up with anything based on the code I posted?

Thanks,

FiberOptix
0 Kudos
Message 9 of 11
(2,662 Views)
I'm sorry FiberOptix,
For some reason I thought I had already responded to you earlier. I took a look at the code, and unfortunately it is far too complicated for me to follow. It doesn't always follow a left-to-right convention and it looks like the readability of parts of it could be improved by encapsulating those sections into subVIs.

I saw the most obvious point of interest - the use of Read per Axis Status and unbundling its output. I'm not immediately aware of why you might be getting erroneous results. Since you said Move Complete gives the same thing, is that also the case if you use Read Move Complete Status VI, which is a more instantaneous read that Read Per Axis Status?

I haven't had a chance to check out the MAX settings just yet, but I'll probably have to consult with some other engineers on that to see what may be going on.
0 Kudos
Message 10 of 11
(2,633 Views)