We have recently programmed a cascade control strategy with a master loop (hydrate inventory) connected to 3 slaves loops (calciner flowrate), with a rate limiter block on the master loop's output. To prevent reset winding-up on the master controller, we would like to use its PID block BKCAL_IN function, but when one of the 3 slaves loops comes out of CASC mode (in either AUTO or MANUAL mode), the master loop controller goes in IMAN mode and tracks the slave loop’s PV. The slave PV and STATUS seem to both affect the master loop with the BKCAL_IN function.
Could anyone using a similar strategy in Delta-V please advise us on the proper way to set-up such a loop configuration (one master & multiple slave loops), more particularly using some type of intelligent slave loop tracking?
I believe what you want to use are splitter function blocks, which will give you the status handling you are looking for (master loop will not go to IMAN until all loops are out of CAS), the IN_ ARRAY and OUT_ARRAY will be the output range of the PID. Since you have 3 downstream loops, you will want to use 3 splitters (this is for symmetry and is recommended). This will give you outputs to 4 downstream loops. Since you only require 3, you will want to use a calc bock as a dummy placeholder for the fourth. The expression I used in the CALC block is:
OUT1.CV := IN1.CV;
OUT1.ST := 204;
This status will always be GoodCascade NotInvited NotLimited so it will not affect the status handling of the real loops.
Below is an illustration, keep in mind that the BG_SLV4 is where the calc block will go as a dummy placeholder. You will wire the BKCAL_OUT of SPLTR1 to the master PID BKCAL_IN.
In reply to Trista VanDerVeeken:
In reply to Michael Krispin:
Trista is correct. AP-0600-0039 recommends having the CALC block. Without it and the additional splitter there isn't sufficient symmetry from the perspective of the first splitter block. This figure is from the knowledge article:
In reply to JoshC: