04-08-2006 05:32 PM
04-10-2006 12:30 PM
04-10-2006 12:42 PM
04-10-2006 06:08 PM
04-10-2006 06:41 PM
04-11-2006 04:06 PM
I understand that you are trying to do some counter operations, and everything thing that you wanted to do with the 6009 you can do with the PCIe-6259. Now as for the latency, as Jonathan mentioned you will probably be able to get what you need from the PCIe bus. But of course there is always OS concerns as he mentioned, so if you absolutely need sub 20 us capability then you should look into LabVIEW RealTime. So ultimately yes, you should be fine with the PCIe-6259.
-GDE04-13-2006 03:00 PM
I would like to add that we have benchmarked Counter Reads here at NI and been able to get faster than 20us using the PCIe-6259. The exact timing you will get is system dependent. Of course, if you use Windows and not a real-time OS, there is jitter from any number of sources. As one of many examples, what if the virus scanner all of a sudden decides to run in the middle of your application? So I would recommend designing your application in such a way that it can tolerate occasional delays.
If you get the 6259, you may want to try the change detection feature, which could have some advantages depending on what you want to do. Change detection allows you to clock an input or output sample whenever a change is detected on one or more digital lines, and since it is implemented in hardware, it is not affected by OS jitter.
04-13-2006 03:18 PM
11-13-2008 12:42 AM
I updated a robot control from a Mac Powerbook with a PCI expansion chasis running Mac OS9, Labview 5 and DAQ to a Mac Mini (intell) with 6009 and 6501 USB cards running Mac OSX, Labview 8.5, and DAQmx-base. I have connected wheel encoders (pule train and direction) to a 6009 and a 6501. It all seems to work, except the tuning of velocity control loops is not as good as before, indicating some delays. The loops run every 100msec (10Hz update) so I expected a synchronisation problem rather than latency. I did some measurements today and found that reading the 2 counters and the 2 digital inputs takes over 20msec.
I get better performance from VISA with a serial to USB converter. I have a program reading 25byte packets every 20msec. Although I did run into the USB latency problem with another serial application. I have a serial device that requires a response t changing CTS (clear to send) in less than 1.2msec, and VISA was taking 1.5msec.
On the same machine I am reading 1024 samples from an analog input every 100msec with out any timing issues - (once I got the incredibly slow start and stop vis outside the loop - they take about 200msec each. Taking the start and stop vis outside the loop reduced my loop time from 450msec (approx) to 100msec. The only problem is that to do this I have to run in continuous mode and can't use an external trigger (it has to restart on every trigger, so the start and stop vis have to be in the loop).
So it appears that I have updated my technology by 10 years only to find that USB is incredibly slow - something that is not in any of the NI doccumentation that I can find. Does NI have any documentation on what to expect in terms of performance from these USB devices and any suggestions on how to get better performance, apart from buying more expensive hardware?
Thanks
11-27-2008 12:04 AM
Hi
I have been able to get some improvements in performance
1. Combining reads of multiple inputs or writes of multiple outputs into a single task rather than having them in individual tasks saved some time - probably decreases the USB trafic. However, you can only combine signals from one board and you can not have more than 1 timer per task in DAQmx-base.
2. Changing the error wire from passing through the i/o vis in series to parallel halved the time to read two timers and 2 bits from 2 boards (6009 and 6501) (still required 4 tasks) - so it appears that time spent waiting for USB in one task can be used to access USB in another task.
3. The result is that the time to do the control loop reduced from roughly 35msec to roughly 20 msec with a huge improvement in tuning.