Measurement Studio for VC++

cancel
Showing results for 
Search instead for 
Did you mean: 

Do I need MHDDK to perform 1ms DI scan

Hi,
 
We are using PCI6511  for digital input where we need to detect and report the status change with 1ms resolution. The OS is either Windows XP or Pharlap.
 
Do I need to use MHDDK or can I use DAQmx APIs directly? There could be up to 20 boards installed in the system(worst case), and the software will need to communicate with other devices at the same time. And if we have to use MHDDK, do we need to purcharse VISA or can we use VISA run time directly?
 
Another option for me would be using third party tool like WinDriver. But hopefully we don't have to...
 
thanks,
 
J
0 Kudos
Message 1 of 5
(7,054 Views)

Hi JaneGuo

 

Thank you for using our discussion forums.

 

The 6510 only has software timed DIO, so under a non-deterministic OS such as Windows, it is not possible to guarantee a 1 ms resolution.  The actual resolution would also be totally system dependent, and would also be dependent on application complexity and the overall system usage.  This means as your application grows, the actual performance will vary.

 

The easiest method to guarantee a specific resolution is to use a DIO device that supports hardware timed DIO. 

 

DAQmx is supported under Pharlap only while using the LabVIEW Real-Time Module.  If you are not using LabVIEW Real-Time, it is not possible to use the DAQmx driver.

           

For information on the MHDDK please post questions here.

http://forums.ni.com/ni/board?board.id=90

 

Chris_K

0 Kudos
Message 2 of 5
(7,030 Views)

Hi Chris,

Thanks a lot for the reply!

How could I tell if any DIO module supports software timer only or hardware timer? And which DIO supports the hardware timer? I roughly went over the 651x user manual and the 651x spect and didn't find the statement. Could you please suggest where I can find such information?

About the 1ms resolution in Windows. I was wondering if I could do it the following way:

- create a task to collect the input from all channels with a sample rate of 1000HZ

- set the filter enable for all channels

- specify a 100ms timeout routine that gets all the sample data from the task, and check when the input value changes

I suppose I could get the 100 ms timeout right if I use the multimedia timer in Windows, and if I have 64 input channels I need only to create a sample buffer to hold 100*64 data (or 120*64 to be safe). Then by checking the sample data buffer I would be able to know when the signal actually changes and therefore get a 1ms resolution.

But you mentioned that 6510 only has software timed DIO. So does it mean even if I specify a sample rate of 1000hz, it won't give me the accurate rate?

Sorry if these questions do not belong to there. Thank you again for your help.

 

Jane

0 Kudos
Message 3 of 5
(7,012 Views)

Hi Jane

 

Have a look at the following link. I used our hardware configuration to filter our DAQ devices that have hardware timed DIO lines. If you cannot access this link, go to ni.com, under All Products, select Data Acquisition, then under Digital I/O Channels select at least 1, and filter the following results by selecting hardware under Digital I/O Timing.  If you look in the specs under DIO timing and you are looking for hardware, or clocked DIO lines.

 

 

With hardware timed DIO you can easily create a task to acquire a digital signal at 1000Hz, however as I mentioned before it is not possible to guarantee an exact 1000Hz sample rate with software timed DIO.

 

Filters are available on some devices.  The spec sheet will tell you if a filter is available on the particular device.

 


If you are just looking for changes, please have a look at the following DevZone article.  It describes change detection, which might be more suitable for your application

 

Chris_K

 

 

0 Kudos
Message 4 of 5
(7,000 Views)

Thanks Chris,

It's very helpful.

Jane

0 Kudos
Message 5 of 5
(6,981 Views)