Need Help Understanding PID reset windup

Hello, 

What is reset windup? 

I am reading books online for PID and I am not sure I understand what this means :

"You connect BKCAL_OUT to an upstream block's BKCAL_IN to prevent reset windup and provide bumpless transfer to closed loop control."

"

The behavior of the reset component depends on the FRSIPID_OPTS option Dynamic Reset Limit. If this option is selected, the BKCAL_OUT value of a downstream block is input to the reset calculation. Thus, if the downstream block(s) cannot act on the PID block output, the reset contribution is automatically limited, eliminating windup. If the option is not selected (the default) the reset contribution is clamped if a limit condition is indicated by the BKCAL_IN status and the calculated change in output will drive the output further into the limit."

Can someone help me understand what the above statement means with an example?

I have the following control strategy

1. Flow is controlled with pump (VFD driven)

2. The flow loop (module) is the master and pump VFD( in another module) is the slave. Flow is normally in AUTO and VFD in CAS (bypass mode, the flow output goes straight to VFD output).

3. The pump is independent from the flow and VFD setup. We just turn it on and off. 

Problem:

When the pump is turned off (unexpectedly or manually), the flow-vfd is still trying to control flow setup and the VFD speed eventually goes too 100% trying to meet flow set point. But flow is 0 because pump is turned off. 

When pump is turned on again, the flow instantly increases because VFD is at 100%. 

Can windup help me with this problem? Of course, I can implement a process action to drive VFD to 0% each time pump is off, just curious about if winding can help. 

Thank you kindly. 

5 Replies

  • The VFD Speed is winding up (meaning it keeps increasing/decreasing the OUT) and this can be stopped in your case by adding a tracking condition wired to TRK_IN_D of the PID block (Ensure that "Track Enable" is selected on CONTROL_OPTS on PID block and you might want Track in Manual selected as well) and the condition would be that the pump PV_D <> Running.

    This will make the actual mode of the PID go to LO and the OUT will go to TRK_VAL (put this to the value you want, sometimes this is 0 while other times it is set to be the min starting speed) and the OUT will remain there until the Pump is started again (releases the Actual mode from LO and allow changes to the OUT).

    This in turn will limit the Flow loop from winding up asking for more flow because of the BKCAL_OUT of the speed PID being fed to the BKCAL_IN of the Flow PID.

    If you have v13, you can look at the module template PID_AT for an example of how to do this using the AT block in v13. If prior revisions you can look in Books Online at the PID block and look at application information and I believe there is a tracking example in there (it's there for v13 and isn't showing the AT block so pretty sure its the same for prior revisions). Application information will also cover the BKCAL_OUT/BKCAL_IN configuration.
  • In reply to Matt Stoner:

    Happy Thanksgiving and thank you Matt foe the response.

    I am not sure I understand, are you stating to configure an interlock using track enable and track value 0 so when the pump turns is not running, it brings the PID lo of flow to 0, which drives the speed of vfd to 0?


    Thanks
  • Windup is a long standing problem with PID control, and has been solved in different ways over time on different systems.

    Windup is the result of continued integral action on a loop that is not able to actually affect the process. The Process Error between PV and SP may remain constant, and integral action continues to apply correction to the output. Over time, the output will drive to its minimum or maximum, or winds up.

    There are multiple reasons that result in windup. In your case, the PUMP being off breaks the connection between the PID output and the process.

    In DeltaV, the BKCAL_IN signal to the PID block normally provides the feedback to prevent windup. However, in your case, the PID Out signal is healthy and there is not feedback that the pump speed is unable to react to the loop output.

    Matt's suggestion is looking pretty good about now....

    In your description you indicate the VFD is in a different module than the Flow loop. Is this VFD module also a PID loop or is it a simple AO? I would strongly recommend removing the VFD module and driving the VFD set point directly from the Flow loop module. Flow is a fast response process, and does not need cascade control between a Flow loop and a speed controller. Your best control response is to drive the VFD set point directly from the flow module.

    First, I would suggest an AO block be placed in the Flow PID Module and configure IO_OUT to the VFD set point IO signal/channel, and configure IO_READBACK to the VFD Speed feedback. Then connect the BKCAL_OUT of the AO to the PID/BKCAL_IN all in the Flow PID module. The AO block can be configured in the Engineering units of the VFD, which means the Flow PID/OUT_SCALE should match. This gives you the Flow input, the VFD set point and the VFD Speed all in one module.

    The PUMP module is still used to start/stop the pump, but speed is controlled by the Flow Output signal.

    Now for the situation with the Pump running or not running.

    You can use an interlock to track the OUT value to 0 when PUMP is off, as Matt suggests. In v13, the AT block makes this easy to implement. It is also easy to add other interlocks that use a different track value. When the Pump Starts, the interlock is removed and the PID can ramp up the VFD to Set Point. You can use the PID options to not track the SP to PV in Local Override, so the SP value will hold.

    Another approach is to handle this via the AO back cal signal to the PID. This will send the PID to IMAN and it will then initialize to the actual VFD speed. Use a small CALC block to manipulate the AO mode out of CAS and back into CAS based on the PUMP status. Set the AO/MODE to AUTO when pump is stopped, and set the AO/SP equal to the AO/PV. When the PUMP is started return the AO/MODE to CAS and the PID will align with the VFD, whatever its current speed.

    The PID will show IMAN, indicating the downstream block for the VFD is not able to respond to control signals.

    Andre Dicaire

  • In reply to Andre Dicaire:

    Thank you so much Andre,

    I really appreciate the thoughtful response. Thank you.

    I agree with putting the Flow and VFD controls in one module for simplicity.

    I will do the following to prevent the VFD from windup again.

    When the pump is NOT running:

    1. Interlock the VFD controls (PID) to 0 speed. This will cause IMAN on the flow loop, but Operator can manually return both flow and VFD loops to AUTO and CAS, respectively.

    This will prevent wind up of the VFD if pump turns off.

    Thanks,
  • In reply to DCS Newbie:

    It is not directly related to your question, but remember also to adjust the ARW limits of your flow PID since its output probably isn't the standard 0 to 100%.