LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

Shared variable architecture for distributed crio system

I have a distributed system consisting of 20 cRIOs and one central server running Windows XP. Each cRIO is a mix and match of AI, AO, DO, DI and TC modules. There are around 200 AI and TC channels and close to 100 AO, DO and DI channels. I need to acquire data from all the AI & TC channels at 10 Samples/sec and log them in the Server. In some cRIOs I have 2 to 3 PID loops, in addition to the data acquisition or generation code. Since a cRIO chassis can have only eight modules, certain PID loops will have to use data of channels that are available in other cRIOs. cRIOs can be turned ON and will be running even without the control server, but facility and test will be started only through the control server.

 

We have decide to use LabVIEW DSC for this application and shared variable for data transfer, logging and alarm. We are using the following SV architecture.

 

1. Each cRIO will have its own RT shared variables for AI, AO, DI, DO and TC parameters

 

2. Each AI and AO parameter shared variable in RT will have its corresponding host shared variable which will be bound to the RT Shared variable. In host shared variable we are enabling logging and alarm option for variables corresponding AI parameters.

 

3. In cRIO RT, data is read from the FPGA (using FIFO every 500ms, and we get 5 Samples for each channel) in binary format and scaling is done. After scaling we are updating the corresponding AI RT shared variables using DataSocket write in a loop. In any cRIO there will be only a maximum of 32 AI or TC parameters.

 

4.  The server has a mimic panel where we need to display the status of DIs and allow the user to turn ON and OFF DOs. For the we decided to use Front panel DataSocket binding. 

 

I would like to know whether there is any better shared variable architecture that we can follow. Considering the number of variable that we are using, will the current architecture cause any performance issues?

 

Thanks!

------

"A VI inside a Class is worth hundreds in the bush"
യവന്‍ പുലിയാണു കേട്ടാ!!!
Message 1 of 3
(2,733 Views)

This looks very similar to my system where I will have 9 cRIO's and 4 XP computers.  I have decided to use the new LV8.6 cRIO scan engine.  This will allow me to have up to 1000s/s access to all my FPGA I/O without any FPGA or cRIO Programming!!!  It also supports scaling into real world units, channel value forcing and consolidated viewing of all channels in the new Distributed System Manager.  The scan engine will create either local only or networked I/O variables that can be dragged to any RT or Windows Diagram for use.  Also NI just released a toolkit to automatically deploy all scan engine I/O variables as NSV's for use with the DSC, wow!  I will be very interested to compare notes with you since we are both developing complex distributed systems and can benefit by each others knowledge.

 

Mike Sachs

Intelligent Systems

www.viScience.com

Onsite at the NASA Marshall Space Flight Center

Message 2 of 3
(2,707 Views)

Hi Mike,

 

Looks like you are lucky as you can make use of the great feature available in 8.6. Over here I have 8.5.1 so got to do some of the things the 'hard' waySmiley Sad But I must say, 8.5.1 is the so far the best version of LabVIEW I have worked after 7.1 as the crashes are less and less frequent. Smiley Happy

 

BTW I faced some problems directly dragging and dropping an RT SV node  to Windows. If the RT code is running and if you try to run the Windows code, it was asking to stop the code running in RT. That's one reason I had to duplicate some RT Shared variable in host and bind them to corresponding RT Shared variables.

 

This is the first time I am handling this many number of shared variables. In case I come across some issues, I will post them here.

------

"A VI inside a Class is worth hundreds in the bush"
യവന്‍ പുലിയാണു കേട്ടാ!!!
Message 3 of 3
(2,698 Views)