Sometimes, there are a very large number of parameters that require interfacing, but it is not important to collect that data cyclically. These could be set-up parameters for a run. Perhaps there are multiple, similar lines being configured.
A good example could be bioreactors being prepared for a run. Each bioreactor might have 200-500 parameters, when considering all of the alarm limits, discrete values, timers, etc.
Dynamic referencing in DeltaV is useful in this case, because we can create a "Dynamic Referencing Landing Module". Using modbus, we can read in the destination of ANY parameter we wish to write, assign it to a dynamic reference, and write in the value.
Then, we can read back the setting, and verify that it has been properly applied.
Then, we can release the dynamic reference binding, and move on to the next parameter.
What is a reasonable approach to an interface of this type? DeltaV has very poor support for Strings. Modbus integer format though, is well supported. Up to 100, 16-bit registers can be transferred.
What characters are needed to make up all of the possible tags?
`abcdefghijklmnopqrstuvwxyz.1234567890/[]-_`
That's 42 characters only.
Let's say that I had a tag like this:
`/AREA_A/PV.CV`
This could be represented in integer format as:
38 ( = /)
1 ( = A)
18 ( = R)
5 ( = E)
1 ( = A)
42 ( = _ )
1 ( = A)
...
et cetera.
We can use 60 registers of a modbus dataset, each representing a letter, in a landing module, looking like this:
Now, each of those registers can be tied to an input of a calc block.
We can extend the calc block so that each deals with multiple letters.
The calc blocks work together to build up the string to be used as a dynamic reference.
There needs to be a way of showing that the string is at an end, so we will add a stopping bit, 256.
And we need a way to indicate to DeltaV that it should read in and make the dynamic reference.
And then we need a way to pass back that the bind is good.
Then we need a way of understanding the datatype of the object.
Then we need a way of verifying that the value is set to the intended value.
Then we need to indicate to the system writing onto DeltaV that the value has been set.
So that's the DeltaV Side. What about the opposite side? What are the applications of such a system? Well, this allows any computer system with a understanding of MODBUS to write any parameter in DeltaV.
For example, we could perform automatic binding of a device to IO based on where it is plugged into an ethernet network, without any user interaction.
Or, lets say I want to set up 10 similar bioreactors. It would be easy to write a flask interface to DeltaV that provided a frontend directly, and all of the parameter values could be stored in a POSTGRESQL database, which is not presently supported by DeltaV.
This can even work between sites.