• Not Answered

Question about Dynamic reset limit and "Use PV for bkcal" options

I have some questions in regards to "dyanmic reset limits" and "Use PV for BKCAL_OUT"

To make things clear I will use a real example in our plant.

10-FIC-140 (slave) receives a flow cascade set point from 10-LIC-139 (master).  To use the dynamic reset limits, please let me know if this is correct:

I would enable "dynamic reset limit" on 10-LIC-139 (master), and "use PV for BKCAL_OUT" on 10-FIC-140 (slave).  The one question I have is that with the current configuration, someone put a scaler block on the BKCAL_OUT of 10-FIC-140, to scale it from its flow range to 0-100%, which is then fed into the BKCAL_IN of 10-LIC-139.  Was this done because BKCAL_IN is a 0-100% scale?(it is in EU of out scale, which is typically 0-100%)  How will the BKCAL_IN see the PV of the slave controller?

Also, how exactly does the dynamic reset limit work?

Thank you in advance!


7 Replies

  • This might not be the best explanation but it should help with some of the understanding : 1drv.ms/.../s!ApBGsgbP06JAgsgSXTZxGr8JmXgBDA

  • First, thanks to Paul Hughes for sharing that interesting paper!


    Regarding your question about the "Flow Range to 0-100%" scalar in the path of the 10-FIC140/BKCAL_OUT path to the 10-LIC-139/BKCAL_IN.  Apparently a decision was made to keep the OUT_SCALE on the primary (aka master) controller 10-LIC-139 as 0-100% (sometimes to match the previous DCS implementation) rather than the PV_SCALE of the secondary (aka slave) loop, 10-FIC-140.  You should also find a "0-100% to Flow Range" scaler in the path from 10-LIC-139/OUT to 10-FIC-140/CAS_IN to convert the 0-100% OUT_SCALE of the LIC to the PV_SCALE of the FIC.  

    When you choose "Use PV for  BKCAL_OUT" on the secondary loop,10-FIC-140, when in the AUTO, CAS or RCAS mode, the BKCAL_OUT will be the PV of the lsecondary loop (rather than the SP if this option is not chosen).  The PV, in EU's of the flow loop, will go to the Scalar you mentioned and be converted to 0-100% which is the OUT_SCALE of master loop10-LIC-139.  Note that you could make the OUT_SCALE of the Primary loop be the same as the PV_SCALE of the secondary loop and these Scalar blocks would not be needed.

    Now, let's talk about how DeltaV specifically implements Dynamic Reset Limiting (also known as external reset feedback).  DeltaV uses a "positive feedback filter", with the time constant equal to the Reset time, to produce the integral action.  Referring to the attached Figure for BOL showing how the DeltaV PID is implemented, without DRL, the OUT of the PID, after the OUT limits are applied, provides the input to the positive feedback filter to produce the integral action.  A any contribution to the OUT from the P or D component of the PID OUT will induce integral action if the OUT is not limited.  In other words, if the OUT hits a limit, the input to the feedback filter does not move and no integral action is created.  As you see in the diagram, when DRL is selected, the input to the positive feedback is the BKCAL_IN.  So, if the BKCAL_IN stops moving, the integral action will stop.  Or, if the BKCAL_IN moves "slower than normal" the integral action will be effectively slowed down.

    When the secondary loop has "Use PV for BKCAL_OUT", the PV will be used as the BKCAL_IN of the Primary loop.  Normally the PV of a loop will closely follow the SP and so DRL doesn't have much impact in this regard.  However, the secondary loop's response time slows down for some reason (change in process dynamics/gain) DRL will slow down the effective integral action of the Primary loop and maintain stability of the cascade loop.  DeltaV uses the limited status (SP or OUT) of the downstream secondary loop to stop the integral action of the primary upstream loop and avoid integral windup.  However, DRL COULD stop integral action of the primary BEFORE the secondary becomes SP or OUT limited if the PV quits moving.  So, DRL provides some protection of stability of cascade loops and possible soon stopping of integral windup.

    There is also another use of DRL that is related to "pre-loading" the OUT of a primary controller such as in batch processes.  Also, a dead time function can be placed in the external feedback path to accommodate the control of dead time dominant processes!  This Control Global article by Greg Shinskey discusses both aspects and more!   https://www.controlglobal.com/articles/2006/095/

    Hope this helps!  Let me know if more clarification is needed!

  • In reply to James Beall:

    James - yourpositive feedback made my day!

    I was sitting in Escravos (Nigeria) when I wrote the document, as I wanted to properly understand something which is not well understood. Mark made me aware of the feature and mentioned that he had reverse engineered the same conclusion via a hands on effort on an ABB system. I always like to see the math behind it as I am programmer on the side, so the algorithm and its associated logic is important for me. I have used this same method to demonstrate the concept of override control for many good causes in the past : www.youtube.com/watch

    I have used dynamic feedback for deadtime compensation a few times, and proven it can be a good alternative to a standard Smith Predictor.

    Keep well all
  • In reply to James Beall:

    Hello James,

    Thank you for the very clear explanation! Have a great day.
  • In reply to James Beall:

    This is an old thread, but maybe James or someone still follows this. If the primary loop goes to two secondary loops via a splitter, will the dynamic reset limit concept still work? If so, is that accomplished by enabling DRL in the primary and then enabling "Use PV for BKCAL_OUT" on both secondary loops?
  • In reply to Greg Bayne:

    That's a good question. The BKCAL_OUT at each secondary loop is connected back to the splitter block BKCAL_IN_1 and BKCAL_IN2. Then the splitter's BKCAL_OUT is connected to the primary loop's BKCAL_IN. If I am not mistaken, the splitter block BKCAL_OUT is always the PID/OUT, so, it does not matter if you are 'Using the PV for BKCAL_OUT' in the secondary loops. If you are trying to compensate for the secondary loops dead time, you can add a Deadtime Block between the splitter BKCAL_OUT and the primary's BKCAL_IN. I would start making the deadtime equals the largest deadtime from both secondary control loops. Let me know how it goes. Héctor.
  • In reply to HECTOR H. TORRES:

    I have simulation setup and did some testing. It works as I expected for my splitter setup. But, it might not work as you want for other cases. Call me and we can discuss your application! Same cell number, tomorrow morning would be good!