07-24-2019 10:17 PM
Hello all,
I am using a NI-1035 PXI chassis with 6 CPCI boards installed. I have to operate these boards in parallel and transmit speed is critical to my application. Within 10ms cycle each board need to execute 10+ read and write operations. And I am using windows 7 x64 with LabVIEW 2017.
Each board exposes a 1 byte register under its VISA driver. So I use VISA low level register access functions. When I test with 1 board, everything is perfect. But when I try to operate boards in parallel, speed for each board slows down. It seems that they run into a race condition.
Attached is my test application to verify VISA register access. It checks how long to write specific bytes to a board. Writing to each board is handled by an async call to a reentrant VI. My test shows that as I put more boards in, the time increases significantly.
My guess to the root cause:
1. Parallel read/write registers of PCI devices is not possible - there is some mechanism in PC architecture that only allow to access one PCI device at a time.
I am not familiar with hardware/PC bus etc. I tried to google for an answer but there seems no discuss on this topic.
2. Parallel VISA register access is not possible. Some part of it in LabVIEW is not reentrant thus creates a bottleneck.
Now I have no clue how to proceed. Does anyone has similar use scenario? Any suggestions?
Thanks!
/Luke
07-30-2019 08:13 AM
Where is your software executing? On the PXI chassis or outside of it?
07-30-2019 07:57 PM
It is running on NI PXIe 8880 inside the chassis.
The hardware configuration is like this(my chassis is NI PXIe-1085, not 1035):
hardware configuration
I have tried to split the boards onto 2 PCIe switches, but this does not improve speed at all.
PXI buses