Distributed Control & Automation Framework (DCAF)

Showing results for 
Search instead for 
Did you mean: 

Module consisting of groups of (sub) modules

In LabVIEW, we can easily create a VI that is comprised of a bunch of subVIs and reuse that VI.


How do I go about creating a DCAF module that is composed of groups of (sub) modules? I want to be able to create a higher level module that has multiple sub-modules so that I can replicate (make multiple instances of) the higher level module easily.


For instance, if I desire to create a module named TempSystem comprised of the following two DCAF Example modules:


1. Temperature Controller Logic module

2. Temperature Chamber Model


And I want to be able to be able to create, let's say, (5) TempSystem instances without having to individually create (5) Temperature Controller Logic modules and (5) Temperature Chamber Models and map them all together.


Furthermore, if I have different brands of Temperature Chambers (and therefore different modules for each Temperature Chamber, but having the same channels), I would like to be easily reconfigure the system to use the new module without having to remap all of the connections.


Is there a way to do this, or is there a different way to go about achieving similar functionality?

0 Kudos
Message 1 of 2

Hi Wireman there are different ways to do this, you could look into the Scaling module on how it handles some type of submodules, but if in this case there is a strict dependency between you to modules, and all the information between them is shared you could use a queue to send information directly between your modules. The other option is rather than treating your modules as submodules you could treat them as API for the different devices and based on that you choose which one to use.

For example, lets say you want different temperature controllers. You create a DCAF module for temperature controllers, then you create an abstract class called temperature control and 2 child classes to control a and control b. You build your module using the abstract class but based on the configuration you select which class you will instantiate. Just remember to have the classes statically linked somewhere so they are included when you deploy your system. If you want it to be completely plugging based you just need to make sure to manually include them.

Best regards



Benjamin C
Principal Systems Engineer // CLA // CLED
0 Kudos
Message 2 of 2