11-15-2009 03:54 PM
I have a fixture for burning in up to 10 Controllers. I’ve written a VI to test one of the controllers but I’m not sure what approach to take to write the software for burning in up to 10 Controllers independently.
The fixture's computer uses USB/GPIB with a 34970 Agilent Switcher and a junction box to switch CAN communications on and off between the computer via a 8473 USB/CAN converter and any one of the 10 controllers.
Each controller burn-in cycle is 50 hours and I need to be able to burn-in Controllers independently, including being able to start a burn-in for any of the 10 Controllers at any time. Also I need the capability to have any number of Controllers burning in, from 1 to 10 at any time. So for example I might want to start a burn-in for a Controller then 2 hours later start a burn-in on another Controller. Each burn-in would end 50 hours later at which time I might or might not start another Controller in that station while other Controllers are somewhere in their 50 hour cycle.
Also during the 50 hour burn-in every minute or so I would like to connect the CAN, in turn, to each station in use to send and receive CAN commands to acquire data which would be stored into a separate file for each Controller.
In addition to help on the approach to take, I also would like help on how to create ten 50 hour timers, one for each station that would start whenever a controller burn-in starts and end after 50 hours. This is my second large Labview Project.
Thank you for any help.
11-16-2009 04:57 PM
Hi Chuck,
Does your application require a lot of processing power? I see two easy options for this: You can replicate this code for each controller, or you can create input/output arrays within your code to address the individual controllers. You could use an event structure for starting the process. Then you could adress the corresponding controller and hit the start button. You would need to know the maximum number of simultaneous processes you would use though, because you would need separate code for each active process.
Nick Keel
Applications Engineering
National Instruments
11-16-2009 06:11 PM
11-16-2009 06:13 PM
Nick,
Not a lot of processing power is required. When you say replicate the code I'm guessing that you mean parallel loops. If I use parallel loops how do I control which controller's CAN is communicating with the computer. The way the hardware works is that I use GPIB to select which controller is connected to the computer via the CAN bus as described in my original post. Basically I guess, using parallel loops I would need a way to poll each of the loops sequentially during which time I would send and receive the CAN commands that I need to. That's the part that I dont know how to do.
11-16-2009 06:19 PM
Mark,
Your approach sounds like it might be a bit over my head right now. Is there an example, possibly in Labview help that might help me understand your suggestion?
11-16-2009 06:30 PM
11-16-2009 07:10 PM
I'm going to go through the examples that you suggested. What is the best way to create a continuous 50 hour clock for each controller in this application? Is the wait function best for this? Also will the approach you're suggesting allow me to independently start and stop each Controller at anytime while running up to 10 controllers simultaneously?
Thanks for all your help.
11-16-2009 07:18 PM
04-16-2010 01:36 PM
I've decided to use a Producer-Consumer architecture for this project, but it is my first experience with one and I'm having a problem.
To operate the program as I have so far:
1. Select an active device button (1 of 10)
2. Select "Start Burn In"
3. (May repeat process for any or all of the active device buttons - all 10 can be active at once)
4. To stop burn in for any device select "Stop Burn In" for the selected active device button.
The way I have it shown in 1.VI it does what I expect. But when I try to add code in the "TimeCheck" case of the Producer loop things do not work.
This can be shown by removing the disabled loop in "TimeCheck".
The intent of data in the "TimeCheck" case is to run continuously for all loaded devices as individual devices are started and stopped, or stop automatically after 48 hours.
As an alternate approach, I also tried putting the code I have in the "TimeCheck" case directly into the "TimeOut" event, but I couldnt get that to work either. Notice in 2.VI I tried just putting a while loop into the "TimeOut" event and it doesn't execute.
Any help is greatly appreciated.
04-19-2010 11:07 PM
Hello,
Where does the code hang with the TimeCheck portion? It is a little unclear by what you mean by things do not work with this portion - what specifically happens? What about putting the time check in its own loop to run in parallel?
-Zach