Multifunction DAQ

cancel
Showing results for 
Search instead for 
Did you mean: 

NI DAQ MAX USB6353 Digital Output

Hello evryone,

I am new using DAQ max NI, I am trying to generate 1ms digital output pule but I am geting the 1.6ms.

if I want 10ms I am geting 16ms.

Could you help me to resolve this problem please?

 

Thanks.

0 Kudos
Message 1 of 5
(274 Views)
Highlighted

If you want deterministic control of the DAQ device, do not use timed loop on Windows because the Windows OS is unreliable. Instead you should use hardware timed DIO. This way, the DIO on/off will be controled by the hardware clock within the DAQ device. 

Open the Example Finder from Help > Search for examples and refer to Hardware Input and Output > DAQmx > DIO for example VIs.

0 Kudos
Message 2 of 5
(188 Views)

Thank you for your response.

 

I want to take advantage of the While loop to generate DO or AO at  timing a want to also including inputs to make decisions. the program gave me the signal a want but the timing are not correct. I joind my simplified program if you can help me to set the timing. If it can help, I am using DAQmax NI USB-6353.

Many thanks.

0 Kudos
Message 3 of 5
(173 Views)

Hi,

 

I don't see what is relation of tour post to my NI problem, but somone can help there is an Labview image of my code because I am using labview 2018.

Many thanks.

Naim.

0 Kudos
Message 4 of 5
(134 Views)

Hi Naim,

 

If you're going to try to run a deterministic control loop at 1 kHz on a Windows machine over a USB connection, you're going to have lots of problems.  USB is a fairly bursty and non-deterministic bus.  Even if you achieve the rate you want, your loop jitter will be bad.  USB DAQ devices also don't support hardware-timed single point mode, which is really what you'd want to use for that fast a control loop.  If you can reduce your loop rate to maybe 100 Hz, you may have a chance of maintaining the loop speed with an acceptable jitter.  You'll have to characterize that on your setup with your hardware and can expect the numbers you get to change based on whatever other processes/applications are running simultaneously.  Else, you're probably out of luck unless you're willing to transition to a real-time operating system and PCI(e)/PXI(e) hardware or the RIO platform.

 

If you do want to try running on Windows with your current hardware, the best (but still not great) performance you'll get will come if you:

 

  1. Change your timed loop to a while loop and use the "Wait until next ms multiple" VI in your while loop to control the timing.  Timed loops are NOT designed to be used in Windows and tend to have more overhead than the while loop + timer architecture.
  2. Add "DAQmx Control Task" before you call DAQmx Start, and set the "action" enum to "Commit".  This will prevent unnecessary DAQmx state transitions that you incur every time you call DAQmx Write without having explicitly transitioned to any state other than "Running" (by calling DAQmx Start) after initializing the task.
Message 5 of 5
(95 Views)