I am using visual studio 2012 to create a server to interface with our NI CDAQ-9185 chassis. We are attempting to read from 4 NI 9223 high speed analog cards. I have found when trying to log data a 1 Ms/s (the highest rate the card can handle) I receive a -200361 which says
Onboard device memory overflow. Because of system and/or bus-bandwidth limitations, the driver could not read data from the device fast enough to keep up with the device throughput.
Reduce the sample rate, or reduce the number of programs your computer is executing concurrently.
I have found that if I run the cards at 500 ks/s it executes with no problem. I can also run 2 cards at 1Ms/s without issue. I am running this on a computer with 64 Gb of Ram and a am connected to my chassis through ethernet on a card capable of gigabit speed. I don't believe the hardware is the issue however clearly something is causing a bottleneck. My code for collecting the data is pretty simple. Due to security reasons I cannot copy it here but the pesudo code is essentially
1. Create NI Task
2. Add Voltage Channels to the task
3. Configure the sample clock to external
4. Configure logging to TDMS file
5. Start the task
6. Stop the task
I also have run this using the example code in C with the same results. Upon stopping the task when running 4 cards at 1Ms I receive the above error. Does anybody have any suggestions for what I can change to be able to obtain 1Ms/s across all 4 cards (16 channels) simultaneously?
Refer to this article to calculate the required throughput - https://knowledge.ni.com/KnowledgeArticleDetails?id=kA00Z0000019QYVSA2&l=en-US