11-20-2008 03:09 PM
I find that using the PCI-6733 to output 8 channels the update rate cannot exceed about 550,000 even though the data sheets say 740,000.
Are the data sheets wrong?
Thanks
KAG
Solved! Go to Solution.
11-21-2008 10:19 AM
Hello,
The Specification Sheet for the 6733 is correct as far as I can test. I am curious to know if you are receiving an errors while running your AO task. For example, a onboard device memory underflow error would mean that we could not write data to the device fast enough to keep up with the device output rate. Normally, this error code is 200016. Are you using a DMA data transfer method? Please let me know if you are seeing an error message and if so what is the error code.
I would also like some insight to what programing environment you are using and what driver (Traditional NI-DAQ or NI-DAQmx).
11-21-2008 03:26 PM
I am using labview 7.0 which requires driver NI DAQ 8.1, no later. I find for example with 6 channels that a 1ms pulse can do a 1Meg rate at 1000 points but at 2ms it can only do 670k rate with 1340 points and a 3ms pulse can go no higher than 560k rate at 1680 points.
I performed this testing using the Measurement and Automation program.
Thanks,
Kurt Giardina
11-24-2008 11:59 PM
Hi Kurt,
I was wondering if you could elaborate on what you mean when you specify the number of points for each. Do you mean that you can do a total of 1ms generation if you use 1000 samples at 1 MHz, but you cannot do a 2ms generation at the same rate with 2000 samples, and thus you instead use 1340 points at a rate of 670 kHz to generate the same total data? Are you trying to perform a finite or continuous generation? Could you possibly provide a screenshot of what the setup for the task looks like in Measurement & Automation Explorer (MAX), including the error and/or error code you are seeing? Thanks, in advance, for clarifying this for me.
Regards,
11-25-2008 08:09 AM
I perform the test in measurement and automation using the "N Samples" setting not continuous. And yes those numbers I sent you are correct. If I want a 2ms pulse it will not work at a 1M rate which would be with 2000 samples and it gives error 200018 saying "Dac conversion attempted before data was available. Decrease output frequency or reduce size of buffer". To make the 2ms pulse work I have to gear back to 670k rate. I find this using my program too.
I thought it could be that DMA trasfer is not on. There is no way on my computer to set DMA transfer however.
Thanks,
Kurt
11-26-2008 05:13 PM
Hi Kurt,
I went ahead and got a PCI-6733 to try out in my computer, and I was able to run the 6 channels at 1MHz okay with 2000 samples. One thing that may be worth trying is to run an example program which will perform regeneration from the onboard memory only, which means that you won't need to transfer data to the device once it has begun generating data. This example can be found in the LabVIEW Example Finder (Help»Find Examples) at the path Hardware I/O » DAQmx » Analog Generation » Voltage » "Cont Gen Voltage Wfm-Int Clk-On-Board Regeneration.vi". I have attached a screenshot of what setting you can use to run this program to test if it works without error. If you generate 2000 samples, and set this to correspond to a single cycle of a wave, then setting the desired frequency to 500 will yield an update rate of 1MHz [(1MS/s)/(2000 samples) = 500 Hz].
It sounds like something may potentially be wrong with the DMA transfers on your system. I am not sure what is causing this, but do you have any other system that is different to try this card with to verify that you can go at these rates? What kind of system are you currently using? The other thing to keep in mind is that the specifications sheet lists the rates that were benchmarked on a certain type of system, and a different system may behave differently. It also notes that other factors such as CPU usage or sharing the bus with other devices could slow down the transfer. As I mentioned, the best possible test would be to try this card on a different system to see if you can achieve higher rates. Best of luck, and have a Happy Thanksgiving!
Regards,
12-02-2008 12:18 PM
I tried the previous suggestion and made the setting to use only onboard memory with success for data files where 5*(number of points) < 16384 (this is for a 5 channel task). However, above 16384 I have to use system memory and still fall short of speeds used on the data sheet. My computer is a Dell precision T7400 and there is no settings for dma.
My question now is when I use the DaqmxWrite does the data from the file get copied into Ram memory or is the data read directly off the hard drive when the task is started?
Thanks,
Kurt
12-03-2008 08:11 PM
Hi Kurt,
The fact that the program runs appropriately when regenerating from the on-board FIFO indicates that something strange must be happening with the DMA transfers on your system. I am not really sure what could be causing this, since my test of the device worked fine on a Dell Precision 390 system. Do you have anything else in your system which may be potentially using a lot of the bandwidth of your PCI bus? This is really the only thing I can think of that may be a possibility.
Regarding your question about the RAM, when you read data from a file, it is placed in your RAM in "LabVIEW memory" for your applicaton. When calling the DAQmx Write function, this data is copied into the task buffer, which is another location in your RAM. Once the task is started and running, the data gets transferred from your PC RAM buffer to the device's onboard FIFO automatically by the driver, using DMA transfers. If you have more data than can fit in the onboard memory, then you will need to constantly be transferring data from your RAM to the FIFO to keep up. This appears to be where your application is erroring.
Regards,
12-04-2008 07:45 AM
Thanks for responding.
When I go to measurement and automation and look at the properties for my card there is no listing for dma. There is address ranges and IRQ etc. Keep in mind that I am using the older NIDAQ 8.1 version driver because I have Labview 7.0. Also in the properties for my card in device manager and under resources the radio check button for "use automatic settings" is grayed out not allowing me to change any potential dma properties..
Thanks,
Kurt
12-10-2008 09:36 AM
Hey Kurt,
The option to use DMA is not a property of the device itself, but rather of the task. You can set this in LabVIEW using a DAQmx Channel Property Node. The property can be found within the property node at:
Analog Output >> General Properties >> Advanced >> Data Transfer and Memory >> Data Transfer Mechanism
You can also choose which method to use (DMA or Interrupts) through a Measurement and Automation Explorer test panel. Could you try installing the board on another computer (preferably a different model) and testing to see if you experience the same problem there. You can test by using a MAX test panel and generating a sine wave at 1 MHz on several channels to see if this creates an error using DMA.
It sounds like the issue could be that your computer is not properly executing the DMA transfers. DMA is a method for transferring data directly from memory with little overhead, and should be faster than using Interrupts if everything is working properly.