09-08-2005 03:13 PM
09-09-2005
03:46 AM
- last edited on
04-25-2024
09:21 AM
by
Content Cleaner
Brian,
There are several possible solutions for your application. You could either try to implement the more advanced comparison in your onboard program but I'm not sure if this will result in the performance you need. The 7350 provides only a limited amount of CPU power for onboard programs. At last it all comes down to the question how good your deterministic real-time behavior needs to be. If some ms delay and jitter are ok for you then you probably could stick with this approach. If you need a better real-time behavior you should consider using either an additional real-time board like the PCI-7041/6040E that could run the 2D trigger algorithm or a PCI-7830R board that could run the algorithm on an FPGA.
There are even more options including the NI SoftMotion Development Module to design your own motion controller using LabVIEW RT but again, this depends on your application needs.
Best regards,
Jochen Klier
National Instruments Germany
Message Edited by Jochen on 09-09-2005 10:47 AM
09-09-2005 07:29 AM
Thanks for the reply.
I knew it would be hard to read, it's still in development and not well documented. The heart of the program is the do_countour profilewtrig VI.
The motion profile is loaded into buffer 2, The trigger point numbers in buffer 1. To trig on the 44th point, buffer 1 would have a value of 44. Pseudocode fo rthe oboard program is:
#start
if (trigbuffer not empty)
TriggerPoint <= Next Trigger Point
#wait for Trigger
CurrentPoint <= (position buffer points done)
if current point <= Trigger point jump to Wait for trigger
else Toggle Breakpoint line
09-09-2005 07:29 AM
Thanks for the reply.
I knew it would be hard to read, it's still in development and not well documented. The heart of the program is the do_countour profilewtrig VI.
The motion profile is loaded into buffer 2, The trigger point numbers in buffer 1. To trig on the 44th point, buffer 1 would have a value of 44. Pseudocode fo rthe oboard program is:
#start
if (trigbuffer not empty)
TriggerPoint <= Next Trigger Point
#wait for Trigger
CurrentPoint <= (position buffer points done)
if current point <= Trigger point jump to Wait for trigger
else Toggle Breakpoint line
09-09-2005 07:29 AM
Thanks for the reply.
I knew it would be hard to read, it's still in development and not well documented. The heart of the program is the do_countour profilewtrig VI.
The motion profile is loaded into buffer 2, The trigger point numbers in buffer 1. To trig on the 44th point, buffer 1 would have a value of 44. Pseudocode fo rthe oboard program is:
#start
if (trigbuffer not empty)
TriggerPoint <= Next Trigger Point
#wait for Trigger
CurrentPoint <= (position buffer points done)
if current point <= Trigger point jump to Wait for trigger
else Toggle Breakpoint line
09-09-2005 07:29 AM
Thanks for the reply.
I knew it would be hard to read, it's still in development and not well documented. The heart of the program is the do_countour profilewtrig VI.
The motion profile is loaded into buffer 2, The trigger point numbers in buffer 1. To trig on the 44th point, buffer 1 would have a value of 44. Pseudocode fo rthe oboard program is:
#start
if (trigbuffer not empty)
TriggerPoint <= Next Trigger Point
#wait for Trigger
CurrentPoint <= (position buffer points done)
if current point <= Trigger point jump to Wait for trigger
else Toggle Breakpoint line
09-09-2005 07:29 AM
Thanks for the reply.
I knew it would be hard to read, it's still in development and not well documented. The heart of the program is the do_countour profilewtrig VI.
The motion profile is loaded into buffer 2, The trigger point numbers in buffer 1. To trig on the 44th point, buffer 1 would have a value of 44. Pseudocode fo rthe oboard program is:
#start
if (trigbuffer not empty)
TriggerPoint <= Next Trigger Point
#wait for Trigger
CurrentPoint <= (position buffer points done)
if current point <= Trigger point jump to Wait for trigger
else Toggle Breakpoint line
09-09-2005 08:03 AM
Oops, sorry for the other replies. Don't know what happened
Thanks for the reply.
I knew it would be hard to read, it's still in development and not well documented. I appreciate you trying to read it.
The heart of the program is the do_countour profilewtrig VI and the onboard trigger program.
The motion profile is loaded into buffer 2, the trigger point numbers in buffer 1. To trig on the 44th point, buffer 1 would have a value of 88 (2 axis * 44 points). When the profile is executing point 44 of the countour the prog should generate a trigger. Pseudocode for the onboard program is:
#start
if (trigbuffer not empty)
TriggerPoint = Next Trigger Point // TriggerPoint is variable 1
#wait for Trigger
CurrentPoint = (position buffer points done) // CurrentPoint is variable 4
if current point <= Trigger point
jump to Wait for trigger
else
Toggle Breakpoint line
Jump start // get next trig point from buffer
endif
Else
End Prog // Trigger buffer is Empty
Essentialy I am trying to trigger on the current point being executed by the profile. This should be within 10 mSec and therefore, with the current cylinders and feedback, within 0.05 inches of desired position. Trying to trigger based on the position of the two axis will be very difficult when the two waveforms end up at different phases and amplitudes.
Just explaining it to someone else highlighted a couple of bugs. The program waits till points done is greater than trigger. It should be equal or greater.
I also looked at the proile and it doesn't have the trigger points in exactly the right places. It is +- 1 position which equates to 10 msec.
I will fix these and try again. If this doesn't work I will try the position based trigger.
Thanks for the pointers.
Brian Jahraus
09-09-2005 08:32 AM
09-09-2005 08:38 AM