We are using NI Versitand 2011 and LabVIEW 2011 in our project. The NI Veristand currently has support to GE Reflective Memory Card. We are using GE FAUNAC 5565 Reflective memory card in our project. We have more than 1000 reflective memory channels to be communicating with our LabVIEW application on host PC from an RT target. We started using Veristand as a means of communication between RT PXI and Host PC through Reflective memory.
But the native veristand support for reflective memory card is limiting the number of IOs to not more than 50 as it is resulting in performance issues for real time systems. For each of the reflective memory channel in Veristand it would perform the read and write operation instead of performing read/write operation on the entire reflective memory chunk at once. For this reason we have to create our own wrapper in LabVIEW to communicate with veristand and map the channel data to UI controls instead of sending the data through reflective memory. This is again resulting in limitations on the number of channels. If the number is beyond 300 the communication performance is unpredictable and instable.
Please let me know if there is a workaround to have RTPXI communicate with Host PC through Reflective memory and using veristand for more than 1000 channels.
For the 1rst point you'll need to write your own custom device to overcome the performance issue. For the second point there is a change in configuration that may bypass the limit: put the joined xml file in the folder "C:\ProgramData\National Instruments\NI VeriStand 2011" to extend the WCF message size.
This did not help me to overcome the instability. Even if I add this xml file to my Veristand 2011 folder I still get the instability and unpredictable performance issue.
I'm not quite clear what you are doing here... are you upset at the host performance or the RT performance?
Why do you want to interface the host with the RT target over reflective memory instead of just using the default TCP connection exposed over the .NET interface? Typically Reflective Memory is used for its determinism, which a windows host computer does not have... so its a bit odd to pair windows + reflective memory.
If you're concerned with RT performance, I can provide some guidelines. Most of the time you can operate in chunks instead of one at a time, but you have to be very careful how you set it up or you can have very different performance. I copy pasted this from a performance oriented document:
Reflective memory setup for high performance on RT:
We have also had the same issue with Ref Mem and using the packaged Veristand custom device. The built in RM custom device works well between VeriStand systems (PXI to PXI), but if you have an external system that also is on the RM network, using the VeriStand RM Custum Device does decrease performance and increase CPU use. There is a CAR open for this at NI, but haven't seen any fixes. We have writen a Custom device that works with the built in RM custom device to add blocks for Read and Write (to increase performance). This was based off code NI was able to provide (Kyle Thornton), unforturnately I can't post our custom device, but if you contact NI they may give you the original code I think it was called 'RefMem DMA'.
Thankyou for replying.
Could someone from NI provide me the Reflective memory custom device ( RefMem DMA) source code that joshe was mentioning in the above post?
Also it would be of great help, if someone can provide the Reflective memory custom device with the Read/Write wrapper(to overcome this limitation of Veristand) as mentioned in the above post.