As the title says... I encountered a strange issue when attempting to read values from the second NI-9214 module.
The system consists of an NI-9189 cDAQ chassis with 3 NI-9205, 2 NI-9208, 2 NI-9214 and 1 NI-9482. All other modules function well. The only issue is with the NI-9214.
Even while LabVIEW is frozen, I can read the 2 NI-9214 modules via MAX. The measurement VI is shared between all measurement modules (9205, 9208 & 9214). The VI is dynamically called as a reentrent function. Of course, there are different DAQmx functions called within based on the type of module. Although unimportant information (at the surface), the 2 NI-9214 are located in slots 3 & 6.
I created a standalone VI to do the same measurement for the 9214, only and it works fine. I can duplicate the code within the VI to read both modules at the same time and it also works fine. I saved the VI in question as something else and duplicated the code so that it calls both devices at the same time and that also works fine.
I checked multiple times (MANY) that the device in is not the same for both calls to the dynamic VIs. They ARE different and the appropriate values. Every timed-loop has a unique name. On the surface, everything seems fine. I am starting to think that I've uncovered a strange bug... I can't believe no one has implemented a solution like the one I am working with, so the bug has a low probability. In my mind, at least.
Now for the screenshot... The code is very simple... Nothing fancy.. The identity of the device has been removed to protect the innocent.
As can be seen, it was possible to read the device using MAX while LabVIEW was frozen. Ignore the very large values for the thermocouple...
Solved! Go to Solution.
A little more information:
The entire LabVIEW Development Environment becomes unresponsive (Not Responding). It never recovers.
I discovered that the cDAQ cannot process too many modules concurrently. The solution was to include a semaphore. It now works well.