• Not Answered

Initializing a Cascade across a DeltaV OPC UA Server

Hi,

I want to create a traditional cascade between a server-based app and a DeltaV Regulator (e.g. PID).  I am not that familiar with DeltaV or OPC UA so wanted to see if anyone could offer guidance.

To initialize a cascade between two DeltaV Regulators requires a secondary to send a BKCAL InitReq and BKCAL Value to its primary in the form of an 8-bit status word (ST) and a floating point value (CV).  It seems as if the CV and ST must be coupled during transmission between two DeltaV regulators because the secondary's ST requests initialization, and the CV sent along with it contains an initial value for the primary's OUT parameter - to ensure bumpless transfer.

However, if one were to establish a cascade ACROSS a DeltaV OPC UA server, then it seems as if this InitReq/Value coupling is lost as both appear as separate and independent values in the OPC UA server.  The concern here is that if a server-based app reads an BKCAL InitReq, but for whatever reason the BKCAL value has yet to update, then the server-based primary might initialize its OUT to a stale value (maybe only slightly old, but that lack of determinism could be problematic).

The traditional way that third-party app providers have solved this problem seems to be reading up the DeltaV regulator SP every cycle and then incrementing it before writing it back down, but I was wondering if there might be a more elegant solution where initialization only occurs when the cascade is closed.

So my question is: Is there a way to ensure that the correct BKCAL value is read from a DeltaV OPC UA server along with a BKCAL InitReq?  I have thought of reading the InitReq first (ST) and then going back for the Value (CV), but I imagine that there are edge cases where the result is not deterministic.  My back-up plan is just to initialize every execution cycle.  Thanks.