jpdrolet Posted March 21, 2005 Report Share Posted March 21, 2005 I'm not familiar with DAQmx and need some guidance to organize tasks settings with a PCI-6024E board. Analog inputs: 4 channels acquired once per second. Timing is not critical, I can use software timing. I don't need waveform Analog outputs: 2 channels. I need to update their values independently once in a while. No need for waveform generation. Digital input: I need to detect a home position so 10Hz read update rate is sufficient. I still can use software timing. Digital output: I need to activate a relay once in a while Counter inputs: I need to count edges on two counters inputs. While there are working examples for each task separately, I have to run all the above from different parts of the program. Do I need to define five tasks or can I regroup them in some way? Do digital input and output need to be on different port or can be on the same (e.g. are lines settable independently for I/O on the same port) ? Can the tasks conflict with each other, especially for timing requirement?< Thanks Quote Link to comment
Michael Aivaliotis Posted March 26, 2005 Report Share Posted March 26, 2005 I'm not familiar with DAQmx and need some guidance to organize tasks settings with a PCI-6024E board. Analog inputs: 4 channels acquired once per second. Timing is not critical, I can use software timing. I don't need waveform Analog outputs: 2 channels. I need to update their values independently once in a while. No need for waveform generation. Digital input: I need to detect a home position so 10Hz read update rate is sufficient. I still can use software timing. Digital output: I need to activate a relay once in a while Counter inputs: I need to count edges on two counters inputs. While there are working examples for each task separately, I have to run all the above from different parts of the program. Do I need to define five tasks or can I regroup them in some way? Do digital input and output need to be on different port or can be on the same (e.g. are lines settable independently for I/O on the same port) ? Can the tasks conflict with each other, especially for timing requirement?< Thanks 4282[/snapback] I can't answer all your questions since I've only been using DAQmx for a short while. This is what I've learned so far: You should configure all your individual channels as global channels first. Each global channel should be configured for each input sensor. Also, you should configure each digital IO line as a global channel. The global channel configuration defines the scaling and other parameters. Once this is done you then go and configure the required Tasks. Tasks define how you collect the data. You can create a single task that contains many global channels. In the task configuration you will define the aquisition speed and triggering etc. In you LabVIEW program you will use DAQmx task ID's not global channel id's. Hope this helps. Quote Link to comment
jpdrolet Posted March 28, 2005 Author Report Share Posted March 28, 2005 Thanks Michael, I've found the solution myself. I don't create global tasks. See picture. Tasks are defined separately and don't conflict. Counters has to be set in two different tasks to read the counter values separately. Another task for 4 analog inputs is defined elsewhere in the program. It worked as expected the very first (correct) run :thumbup: That is after having rebooted 3 times.... 1: Oups! forgot to install NI-DAQ on target. Install and reboot 2: An error message for DMA channel not available for the task... can't figure what's up so reboot 3: Another different error message: the board is reset. Can't communicate with MAX either. Can't figure what's up so reboot. 4: The board is properly working and the program runs fine. It's always rewarding to see a program running as expected at the first run (and that board installation problems weren't related to my code). Quote Link to comment
JackHamilton Posted March 30, 2005 Report Share Posted March 30, 2005 JP Sorry for coming in late on this. I've been using DAQmx awhile and am still new to it! Looking at your code - you've hit the marks - only comment - do you really want to 'start' the tasks immediately after configuration? I don't know your overall code, if it's a queue state machine. I do the DAQmx "Start" in the acquire state. Be wary of odd performance problems using Timed loops and DAQmx... Regards Jack Hamilton Quote Link to comment
jpdrolet Posted March 30, 2005 Author Report Share Posted March 30, 2005 JPSorry for coming in late on this. I've been using DAQmx awhile and am still new to it! Looking at your code - you've hit the marks - only comment - do you really want to 'start' the tasks immediately after configuration? I don't know your overall code, if it's a queue state machine. I do the DAQmx "Start" in the acquire state. Be wary of odd performance problems using Timed loops and DAQmx... Regards Jack Hamilton 4362[/snapback] I think I read somewhere in the doc/examples that it is inefficient to start/stop tasks at every iteration of continuous acquisition. Quote Link to comment
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.