As per the subject really.
Using PCSD shell Equipment modules would lead you towards embedding Module Blocks into your Equipment Modules, which is fine but is a little limiting as it only allows access to parameters at the top level of the embedded module instances.
Previously I've used Dynamic Reference composites and bespoke external reference composites to overcome this limitation, but each has it's own pros and cons.
I'd like to throw it open to the community (developers and end users) to discuss the pros and cons and see if there is a consensus on the best approach. Perhaps listing any system performance issues using any of the approaches may have.
Here are some of my initial thoughts on the three options I've considered.
1. Embedded (DEVX) Module Blocks
(as per DeltaV product intent presumably), major downside this only lets EM code reference top level parameters of the embedded Modules, but can check for cross references to a device and us the device IGNORE function and allows for Private/Shared representation and binding withing the control strategy hierarchy (the only method that allows this)
2. Embedded (DEVX) Dynamic References composite that contain sufficient dynamic reference parameters for your purpose that are bound on first download using a single DEVX_ID string parameter containing the module name.
These allow access to any module parameter (not just top level), they can be easily enhanced should you find you need access to further modules parameters. Main con is that you can't check for cross references (in explorer), clients (maintenance/debuggers) don't particularly like this for obvious reasons.
3. Embedded (DEVX) External References composite that contain sufficient external reference parameters for your purpose.
These allow access to any module parameter (not just top level), they can be easily enhanced should you find you need access to further modules parameters. A pro compared to dynamic reference composites is that you can check for cross references (in explorer). The downside compared to dynamic reference composite is that configuration is more tedious where you only need to specify the module tag in a string rather than configuring potentially bundles of reference strings per DEVX composite.
In reply to Michael Moody:
In reply to Alfred Pol:
I agree with everything that Michael has stated but there is also another option to consider.
Equipment Modules along with other modules can be placed under class based unit instances and the logic (EMs, Modules, Interlocks, etc) can use the aliases of the unit instance in their logic.
It would be outstanding if this type of aliasing was somehow a part of the EM itself and didn't require a Class Based Unit instance or module blocks to do the aliasing as this method for aliasing is by far the best solution for both configuration and operations of the plant.
In reply to Matt Stoner:
In reply to gamella:
In reply to Pieter Degier:
Thanks Pieter, I noticed the new #IGNORE functionality yesterday in a previous post on Dyn Refs and cross referencing issues by Matt Stoner. Which pointed me towards the use of it within PCSD v13 rather than Dyn Refs.