LabVIEW-DCAF / DCAF-Project-Templates

Sample projects used to generate modules, engines, and editors
https://decibel.ni.com/content/projects/reference-designs-for-distributed-control-systems
Other
5 stars 0 forks source link

New convention: Module creates own output tags #27

Open pollockm opened 8 years ago

pollockm commented 8 years ago

Modify sample projects to reflect current convention whereby each module generates its own output tags. This convention should be the most effective, since we only have a single writer for each tag. This will prevent modules from creating tags for both sides of the mapping.

Beazurt commented 7 years ago

I agree that this is probably the best approach to take in general because tag naming and creation arbitration is automatically resolved by the fact that the framework only allows a single writer.

One major drawback to this is that the names in channels for I/O (Mod1/AO0 or Reg 30001 etc) are typically much different than the names of channels in the processing logic (feedback, setpoint, etc.). These differences will result in Tags with vastly different naming conventions based on the conventions used by the different writers.

I think this is a good idea overall, but am not yet convinced that we should support it exclusively or even recommend against a module creating and mapping tags for both input and output channels.

becega commented 7 years ago

The latest version of Scan Engine is now only creating the writers.

Beazurt commented 7 years ago

Feedback from the first lead-user of this feature was that it was very inconvenient. The issue is that when an engine serves as a gateway, you often have one plug-in with real-world channels (say Scan Engine) that needs to get mapped to another plug-in with virtual channels (say CVT, Shared Memory, TMDS, etc.). For this use case, the Scan Engine only creating tags for input channels meant that all tags for output channels had to be created by hand.

I think ideally we should find a way to support both workflows, but if we only support one then the more universal case is to generate a tag for all channels.

pollockm commented 7 years ago

I can definitely see Scan Engine in particular as being an exception to the convention. Perhaps an option (create writer tags, create reader tags, create all tags, etc) like @tannerblair proposed.

If we can get all modules to follow the convention, the issue will fall away. If only Scan Engine can generate tags, and no other module generates anything, then it is not very helpful.