02-17-2013 07:49 PM
Hi,
I really need some help with this issue. I need to synchronize a laser (PIV system) with my NI Softmotion. Every time the laser is being triggered it generates an analog signal. So what I need to do is to synchronize that signal to match a given rotor position for my system. I'm using the NI 9514 with an AKD Drive to control a servo. So for example for every time the laser is being triggered the rotor has to be at, let's say, 10°. I also have an NI 9201 and NI 9401. Is this possible to accomplish? I was thinking about some kind of PID control to match the signal with a given rotor position, but I don't really know where to start since I haven't found a similar example.
Thanks a lot!
Cheers,
Italo Franchini
02-18-2013 11:24 AM
Greetings,
Since the Laser generates an analog signal, we will likely use the 9201. How tight does the synchronization need to be?
I was thinking that you might simply be able to read the 9201 in the RT VI and toggle an absolute move to a particular position with an Express VI. Would you be interested in having a few setpoints or in a "smooth" matching of the Laser's analog output to a position?
Are you starting up with one of the general examples?
Cordially;
Simon P.
02-19-2013 12:56 PM
Hi Simon, first of all thanks for your answer. I was recently talking with the guys from the PIV system (LaVision) and apparently this can be solved in a much easier way. I just need to output a 5 V TTL signal every time the rotor reaches the desired angle. So I was trying to do this with the NI 9401 and indeed I can trigger this signal. But my problem now is that I use the Reset Block in the NI Softmotion to set my zero reference, and then with the function block Position Compare I can set up what ever angle I need, so when reached, it fires the first TTL signal. Now my problem is to do this for every turn (Or every 2, 3 or 4 turns, depend on the rotor's speed, beacuse I have some limitations with the frequency that feeds the laser, it shouldn't be more than 5 Hz). How can I trigger this signal every time my rotor reaches that position?
Thanks for your support
02-20-2013 08:06 PM
I believe the Periodic Position Compare Example (in the Example Finder) may be a good place to start. It seems to do something similar to what you are trying. What is your current set up?
02-21-2013 03:00 PM
Hi,
I tried the example but I just can see that It's been triggered when it reaches the position (A boolean value) but I don't understand what the value of period means, if nothing is changing (I was maybe expecting a light on everytime it reads the position). I'm also trying to understand how to connect this signal to the NI 9401 in order to generate the desired pulse. If you have any other examples/advice that you can give me I will much appreciate.
Thanks
02-25-2013 06:57 PM
Hi,
I was reading about the periodic position compare and it seems to fail for Labview 2009. I have Labview 2009 SP1, should this function work for my system? Because I was reading this: http://zone.ni.com/reference/en-XX/help/371093K-01/nimclvfb/controlip.periodicpositioncompare_00b200... and it says that the compare triggered boolean returns TRUE and then switches back to FALSE until next iteration. Thi is exactly what is not doing in my system when I use this.
Thanks
02-26-2013 03:25 PM
Greetings, Mr. Franchini;
Would you happen to be refering to the Known Issues list mention of the Periodic Position Compare VI (in the following link)
http://www.ni.com/white-paper/9051/en
If so, the version of the fix should have been 2009.1; as such, since you have LabVIEW 2009 SP1 that should work for the system.
Since you said in the last post that it should be true when the point is hit and then switch to false, what do you mean with exactly not what happens in the system? After all, in your previous post you mention seeing the boolean be triggered at the correct position.
Cordially;
Simon P.
02-26-2013 04:40 PM
Hello,
Thanks for the reply. It actually switch the boolean to TRUE when hit the position, but it doesn't switch back to FALSE, so it stays TRUE the all time. What I need it's to switch TRUE when reached position and then FALSE until next position compare output. Or am I confusing what this function block does?
Regards,
Italo Franchini
02-27-2013 02:59 PM
Greetings, Mr. Franchini;
In the case where we read a True, would we be able to wire it into the Reset during the next iteration? Or force a reset whenever we go through a different known value?
I am not quite sure how its reset mechanism works, however, so I will need to do a bit more research on my side to see how exactly it would go back to being false.
Cordially;
Simon P.
02-27-2013 03:40 PM
Hi Simon,
I've tried a bit with the reset but I still can't get it right. Any help would be much appreciate!
Thanks!
Italo Franchini