Linux Users

cancel
Showing results for 
Search instead for 
Did you mean: 

PXIe-4464

I have a NI-DAQmx 18.1 application that runs under openSUSE Leap 42.3. The program runs great on a PXI chassis (PXI-1042Q) using the PXI-4461 & PXI-4462 I/O boards. I can also run it on a PXIe chassis (PXIe-1082) using the hybrid PXI-4461 board. However it fails if I try to use a PXIe-4464. Currently I am configuring the PXIe-4464 pretty much the same as a PXI-4462 (they are both 4 channel analog input boards).

Calling DAQmxGetSyncPulseSyncTime() returns -200077: DAQmxErrorInvalidAttributeValue: "Requested value is not a supported value for this property. The property value may be invalid because it conflicts with another property." If I disable calls to DAQmxGetSyncPulseSyncTime() and DAQmxSetSyncPulseMinDelayToStart(), I get the same error from DAQmxTaskControl() when I try to commit the task.

Assuming this is a clock problem, I have tried using PXI_Clk10 & PXIe_Clk100 as the reference clock source to no avail.

Has anyone gotten the PXIe-4464 or any other PXIe I/O board to work with NI-DAQmx 18.1? If so, how did you configure it differently from a PXI I/O board?

 

Chuck Cox
Embedded Systems Engineer
SynchroSystems
0 Kudos
Message 1 of 2
(2,339 Views)

In case anyone else runs into this, here is the solution...

Our program is based on 32-bit floats whereas the NI-DAQmx API uses 64-bit floats. We define the maximum voltage constant as "const float32 MAX_VOLTS = 42.4" and pass MAX_VOLTS and -MAX_VOLTS to DAQmxCreateAIVoltageChan(). This works just fine for all boards except the PXIe-4464. DAQmxCreateAIVoltageChan() does not report an error, but DAQmxStartTask() will fail. It turns out that the 32-bit representation of 42.4 (42.4000015) is slightly greater than the 64-bit representation (42.399999999999999) and apparently there is something in the 4464 driver that objects to this. Changing the constant to float64 solved the problem.

Chuck Cox
Embedded Systems Engineer
SynchroSystems
Message 2 of 2
(2,304 Views)