Distributed Control & Automation Framework (DCAF)

cancel
Showing results for 
Search instead for 
Did you mean: 

Engine to Engine Communication

Other then UDP, is there a way of sharing data between engines on the same system?

0 Kudos
Message 1 of 5
(6,373 Views)

To my knowledge there hasn't been a plugin module designed specifically for this purpose. There have been discussions on creating a plugin that uses single element RTFIFOs to do this, which is probably the best mechanism to use, but so far existing alternatives have always turned out to be good enough. What features would you like to see in a module that exchanged data locally between engines?

Theoretically it should be possible to use the CVT module as an alternative to a module like UDP that uses network communication. The CVT will create globals by name, and those globals could be used to exchange data between engines as long as the engines have identical tag names. Identical names will mean configuration of systems using CVT will be fairly brittle, but the access to the data will be very efficient. The other downside is that race conditions could be introduced based on configuration settings or access from the application.

0 Kudos
Message 2 of 5
(5,996 Views)

I have done what Burt said with some guidance from BeCeGa using CVT.

You would have to create a new project from the DCAF menu selecting to create a "User Control Module".

Name your channels the names you would like to use for CVT, you would need one for read and one for write. Channel type would be processing parameter for CVT reads, processing result for CVT writes. Set Data type as needed.

You will then need to add the Edit plugin search paths to include the directory where you created the "user control module" project.

Then you can add that module to an engine.

Then within DCAF configuration just map to and from CVT items.

0 Kudos
Message 3 of 5
(5,996 Views)

We have a module in work for exchanging data via shared memory on our LinuxRT targets.  This was intended for communication to external code running on the same target, but would work for local engine comms as well.  I expect CVT to have better performance than this option, though it does include provisions to avoid race conditions (all comms are one-way, single writer)

Cheers,

Matt Pollock
National Instruments
0 Kudos
Message 4 of 5
(5,996 Views)

What other mechanisms would your application need?  We're always curious to hear feedback!

Cheers,

Matt Pollock
National Instruments
0 Kudos
Message 5 of 5
(5,996 Views)