08-18-2010 11:40 AM
Replace the device. If it doesn't pass its own self test, it could be broken. If replacing does not fix the problem, then we need to look at your code again.
08-20-2010 05:20 PM
Hi tbob,
Thanks for the suggestion. I have tried to use another NI6009 device that I got from my colleague to run my program. The same problem persisted. I have attached my program here. Can you please try to see if there are some loopholes in my program that cause the device to stop working?
Note: In the self test, the error message is 50405 occur at self test - No transfer is in progress because the transfer was aborted by the client. The operation could not be completed as specified.
Just to give you an idea of what my program does in case it might help:
1. upon program start, display pressure data on screen
2. upon button pressed, wait 1 second, then begin to save the pressure data in real time into a matrix, as well as to send out a digital signal to trigger a high speed camera to record (note: the same signal will be used to activate a relay to open a valve).
3. process continue until button is pressed again. At that time, the relay will be turned off to close the value, the recording of the pressure data will stop, and a dialog box will appear to ask the user to save the pressure data into a file.
Any advice will be greatly appreciated.
Cheers,
Anson
08-20-2010 06:07 PM
First of all you don't need the flat sequence at all. The movement of data along the wires will dictate the execution order. No code, section, subvi, function, loop, etc will start to execute until all of its inputs are present. Usually the error wire is sufficient for defining execution flow. Remove the sequence, but not the code in it.
In the loop (frame 2), the DAQ is always writing the same data. I don't think this is necessary. Just write once. Your architecture to do this is not correct. Inside the loop, you should have one big case structure. Wire the Collect Data 2 button to the case selector. In the false case, do nothing but pass the error wire and the DAQ task wire and the 2D array wire. You should use shift registers for the error and task wires so that the info gets propogatd from one loop iteration to the next. Ohterwise you will lose any error info from one iteration to the next. In the True case, you will need a flat sequence. In the first frame, put the delay. In the second fram, put the DAQmx write with the proper data (no extra case structure needed here). In the third frame, put another loop to wait for the Collect Data 2 button to go false. Again put a case structure. Use a local variable of the Collect Data 2 button. In the True case, just pass the shift register wires. In the False case, put another DAQmx write with the proper data. Put a True constant and wire it out of the case and the loop and the sequence to the outer loop stop sign. If I described it right, the first loop will wait for the button to go True. Then the DAQ will write after a delay, then the next loop will wait for the button to go false. After the button goes false, the DAQ will write again and all the loops will stop. See if you can figure out where to put the DAQ Assist and the rest of that code. Instead of using a Value property node, use a local variable. Its quicker. Beware of race conditions.
Re-write the code as explained and post it again.
If the unit fails self test, and another one fails also, you must be doing something to abort the test. Don't worry about it unless your new code doesn't work.
01-07-2013 12:24 AM
Hi there,
I have a problem which is bit similar to this issue. I want to turn on a Solid state relay with 4 v digital signal using NI-6009. This SSR allows a heater to continuously increase chamber temperature. When temperautre reaches to set point I want to send o signal to turn off SSR.
In labview do I have to gerate continous or 1 signal on demand ? And how can I send zero signal. Appreciate if anyone can help..
01-07-2013 07:09 AM
@Samsur wrote:
Hi there,
I have a problem which is bit similar to this issue. I want to turn on a Solid state relay with 4 v digital signal using NI-6009. This SSR allows a heater to continuously increase chamber temperature. When temperautre reaches to set point I want to send o signal to turn off SSR.
In labview do I have to gerate continous or 1 signal on demand ? And how can I send zero signal. Appreciate if anyone can help..
Use a digital output. You just have to write a TRUE when you want the relay to be on and a FALSE when you want the relay to be off. You may need a buffer depending on the amount of current needed to control the SSR.
01-07-2013 12:54 PM
Hi,
Thanks for reply. I am new in Lab view.
Please make me little clear about writing true/false.
Do I have to configure NI6009 as continuous or single signal mode ?
Also please tell some more about buffering, I mean how can I write program for buffering?
Thanks
01-07-2013 01:08 PM
No, you do not need to set anything for continuous. In fact, I don't think you are allowed to set the 6009 for continuous generation since it is software timed. The logic output will stay until you write a new value.
This whole thread is about hardware buffers providing extra current. I would suggest you read the whole thread.
01-09-2013 03:25 PM
Hi,
I wrote the attached program to send digtial signal (on/off) through P0.0 & GND using NI6009. But it does not change the output. I dont know what wrong I made in the program (attached). However, I could change the output value (0 to 5) from the DAQ assistant by switching digital out in run mode (As in the attachment). BTW, I found output voltage between P0.0 and P0.1, not between P0.0 and GND. Any assistance is higly appreciated.
Thanks,
Samsur
01-09-2013 03:57 PM
Why would the DAQ Assistant on the block diagram change the output when you don't have anything wired to the data input? The case statement is silly. You need to simply wire the Boolean control to the data input. Between them, you need a Build Array function because the DAQ Assistant requires an array input.
p.s. Put some sort of wait inside the loop.
01-10-2013 01:23 PM
Hi sir,
Here I attached the modified program as you mentioned. I added build array and delay, but still the on/off button does not change the output from 5 to 0.
Please let me know where I am missing.
Thanks
Samsur