Hi,
I would like to ask how do you set up an anti-reset-windup mechanism for a cascade control loop with 1 master controller and multiple slave controllers.
The controller in question is a master level controller, with up to 10 slave flow controllers. The slave flow controllers to be in service are selected by the DCS panel operator depending on process needs (e.g. 5 out of 10 flow controllers are cascaded to the level controller). I could only find examples for anti-reset-windup for a simple 1-master, 1-slave cascade control (BKCAL_OUT from the slave PID controller needs to be connected to the BKCAL_IN of the master PID controller) and would like to know how this can be further extended to multiple slaves.
Thanks!
Yours sincerely,
Kerina
We have a Master Loop Controller and seven slave loops. Please see below.
In reply to Soap Chan:
In reply to Mark Coughran:
In reply to Kerina Leong:
The best article on dynamic reset limiting (more generally referred to as external reset) I've come across is this one by Greg Shinskey.
This whitepaper briefly discusses DeltaV PID function block features, including the FRSIPID_OPTS "Dynamic Reset Limit" option. Last time I looked (a few versions ago) the associated BOL entries on weren't particularly informative.
Dynamic Reset Limiting does away with the need for windup flags to “halt” integral action, instead utilising the error between output and BCKCAL to counteract integral action. I enable it by default (solve an analog problem with analog technique, not discrete logic) unless there is a good reason not to in a particular application.
In reply to Martin Rooke:
In reply to HECTOR H. TORRES:
Great responses from everyone! I'll add a couple of comments. The Dynamic Reset Limiting on the primary (upper) loop combined with "Use PV for BKCAL_OUT" on the secondary (lower) loop can also slow down (in addition to stopping) the integral action if the secondary loop if the secondary loops PV is lagging behind its SP. This maintains the separation of response time between the primary and secondary loop.
I did some testing with the use of DRL with a splitter and two secondary PID's. The DRL and Use PV for BKCAL_OUT does NOT work for this case! In the picture below, you can see the primary PID1/OUT kept moving. Note that with DRL, it also uses the Limited status of secondary loop to stop the integral action. In the case splitters and multiple secondary loops, the limited status occurs only when all of the secondary loops are limited! If the secondary loop is a fast responding loop, like a flow loop, the limited status will occur soon after its PV slows down or stops moving. Thus, the primary loop will not windup.
Finally, be sure to properly set the ARW_HI_LIM and ARW_LO_LIM values. These values are in the engineering units and range of the OUT_SCALE and should be set to either the OUT HI and LO limits, to the OUT_SCALE limits, or possibly "outside" of the OUT HI and LO limits to turn off this feature. NOTE that this parameter is misnamed and does not really function as Anti-Reset-Windup limits. See BOL for its action as it can be used for a different function.
In reply to James Beall:
Here is a bit more information on my statement above about the ARW settings. Refer to the two screen prints below from Books On Line (BOL). As noted in BOL, the ARW limits can be used to speed up the movement of the PID/OUT from the high out limited value "down" to the ARW_HI_OUT or from the low out limited value "up" to the ARW_LO_OUT. If the ARW limits are set "inside" one or both of the OUT limits, it functions as described in BOL. In reality, the ARW function is comparing the value of the "internal OUT" which is not subject to the OUT limits in order to speed up the return from a OUT limited condition to a value within the OUT limits. If the ARW limits equal the OUT limits, the described ARW function still works to accelerate the "internal OUT", which is not limited by the OUT limits, back to the OUT_LO_LIM or OUT_HI_LIM. In order to totally disable this function, the ARW limits need to be set below the OUT_LO_LIM and above the OUT_HI_LIM (you might have to set this in Control Studio or DeltaV Explorer). NOTE THAT THE ARW LIMITS USE THE SCALE (EU AND RANGE) OF THE PID/OUT_SCALE!
As I said, in my opinion, ARW is a very misnamed parameter and function. ARW doesn't prevent windup, it affects when the OUT comes off its high or low limit. Anti-reset windup is prevented in DeltaV by the downstream device status (e.g high limited, constant, etc.) and/or the use of Dynamic Reset Limit. One use of the ARW feature was when no positioner, or pneumatic positioner was used on the control valve. We would often set the OUT_LO_LIM to a negative value such as -5%, the OUT_HI_LIM to a value over 100% such as 105%. Then we would set the ARW limits to 0% and 100%. We did this to try to make sure the PID/OUT could drive the valve fully closed or fully open but the OUT would return from -5% to 0% or 105% to 100% quickly to get back in the normal control range of 0-100%. With modern smart positioners, this is not needed since most of them have a feature which when activated, drive the output of the positioner to zero or full pressure (as appropriate) when the input signal is close to 0% or 100%.
There is a lot to this topic! Reach out if you have more questions!