Hello all. I am controlling a test fixture containing 4 linear actuators. My program has 4 While Loops inside a bigger while loop. Each while loop controls an actuator. There is a cluster control for each actuator allowing the user to enter cycling times. So the user could make actuator one cycle at 1 sec on/1 sec off, actuator 2 at 0.2 sec on/0.5 sec off, and so on. I am using an NI9481 to control the power to the actuators. So when the 9481 engages, the actuators close; disengaging makes them open.
My problem is that the 9481 does not allow me to operate an indivdually channel. If the user puts a long/short cycle time on one actuator, that channel needs to stay active until the cycle time limit is reached. Sometimes the different cycle times may be necessary because of physical wear and tear which causes actuators to start slowing down or speeding up. It does not seem that I can assign a different task to each channel of the 9481 to make each channel operate differently. The timing of each loop (based on what the user inputs) would determine when a channel activates/deactivates. If I could get the 9481 inside of each mini-loop, that would do the job, but that causes a problem with reservations.
Is there a way I can individually control each channel in the 9481?
I have attached the vi for viewing. Please be warned, we have Labview 2010, the company will not upgrade beyond that, and I am self-taught in Labview (and always learning). So if the vi looks horrid, inefficient, and other such things, those are the reasons why.
You won’t be able to create 4 hardware timed tasks to control your module. However, you can create 4 different software timed tasks to control your 4 digital outputs. This is going to work as long as the switching time for your application is not required to be really high. Consider as an example the VI attached to control one of your lines. You can replicate it for more outputs.