01-26-2007 12:54 PM
Hello
I have a couple of questions on DAQ-6230 converstion timing.
We have measured the conversion for AI and AO and seems like on average it is taking 20 mili seconds for converstion. We need to get this down below 1 Mili seconds. How do I cut down on the conversion timing with the hmddk driver code.
Here is some questions:
1- Can I use eeprom calibration data from one board for other identical boards? we have multiple board in the system. Or do I need to read the eeprom for calibration data every time. Can I read it only once?
2- There are a lot of function calls in ai and ao. Do I need to call all of these functions every time I do a conversion or can I call some of them only once during initialization? As an example, aiEnvironmentalize, aiPersonalize ???
3- What is your idea or recommendation on execution time of the hmddk code? Any idea to make things run faster for conversion? Any feed back or suggestion would be appreciated.
Thanks
Lee Khadivi
Curtiss Wright
01-29-2007 01:45 PM
To answer your questions:
1) Each board has unique calibration coefficients stored in the EEPROM to accomodate for slight variances in the individual components used. As a result, you will want to read the EEPROM of each board to get maximum accuracy. However, you do only need to read the calibration information from each device once because that information does not change (unless you calibrate the board).
2) You only need to configure and start the acquisition once. Once the operation is underway, you can just read data from the FIFO. The mechanism for doing so is different depending upon whether you are performing a software timed acquisition or a hardware timed acquisition. aiex1 illustrates how to perform a software timed operation where each scan is started by a software command (aiStartOnDemand), while aiex2 illustrates how to perform a hardware timed acquisition. In both examples, notice that all initialization is done up front with any reading performed in a tight loop.
3) Make sure you are not reconfiguring each time to read data (as described in #2 above). This will certainly slow down your loop rates. Once you are only reading in a loop. you can specify a convert clock rate (and scan clock rate if you are performing hardware timed acquisition). Notice aiConvert passes two parameters specifying the convert rate and delay. For the 6230, the minimum convert period divisor is 80 and the minimum convert delay divisor is 3. Lowering these numbers reduces the amount of time available for the analog circuitry to settle but does allow for faster convert rates.
How fast are you wanting to acquire data? Are you performing software or hardware timed operations? How many channels are you acquiring from? I hope these explanations help.
01-29-2007 01:55 PM
Hi Jeremy
I will try your suggestions
By the way, is there really 8 channels or 4 channels on the 6230 board. The document says 8 channels but seems like 8 channels are available only under certain conditions?
Thanks
Lee
Here is answer to your question:
How fast are you wanting to acquire data?
about 5 MicroSecond per conversion
Are you performing software or hardware timed operations?
Software and using On Demand aquisition
How many channels are you acquiring from?
4 Channels
01-29-2007 05:36 PM
02-01-2007 09:16 AM
02-05-2007 12:24 PM
aoLinearScaler
and
aiLinearScaler
only once for all boards if the scaling is the same for all boards.
I do understand that the calibration data is different for each board but what about the scaling coefficient?
Thanks very much for a quick response as I am waiting for this answer to release the software.
Regards
Lee Khadivi
Curtiss Wright
02-08-2007 06:15 PM
Lee,
If you look at the scaling functions, you'll notice that the calibration information is used when scaling the data. So, the answer to your question is the scaling coefficients are different for each board. I hope this helps.
02-08-2007 06:16 PM
Urs,
We will look into the DMA behavior and let you know what we find out.
02-25-2008 10:36 AM
02-25-2008 02:59 PM
Hi Julian-
It's not clear from the prints you posted which values you are actually writing to the board and at which register offsets. Are you using the MHDDK ChipObjects and/or examples? Can you please start a new thread in the DDK Forum and post some of the code which shows board configuration and register writes/reads?
Thanks-