Setpoint Deadband

I have an AI signal as an input to a PID block regulating a control valve. I would like to configure a setpoint deadband. What I mean by that is if the AI changes say +/- 10%  from the PID setpoint, the PID block does nothing because the PID block input is set to right on setpoint. If the AI is outside of the deadband then the PID input shows deviation from the setpoint and the PID takes action.
What I had in mind is to caracterize the AI using the y = mx + b line of the Characterizer Block, i.e.

Point X Y
1 0 0
2 SP-DB SP
3 SP+DB SP
4 100 100

where 
X is the Characterizer Block input,
Y is the block's output,
SP is setpoint (referenced from the PID),
DB is deadband (input parameter),
SP-DB and SP+DB are two operating parameters calculated using the ADD and SUB function blocks.
While the Signal Characterizer has an X, Y table, it does not allow me to adapt "live" values of the setpoint and deadband, both set by an operator. Also, I couldn't modify the block's dimensions, they are greyed out. Thank you for the feedback.

  • I suggest that you use the FRSIPID_OPTS "Nonlinear Gain" option. This should do what you want without the extra calculations!
  • In reply to James Beall:

    Thank you James. I've enabled the Nonlinear Gain option in the FRSIPID_OPTS. Next, I set NL_MINMOD to 0 and and NL_GAP to 10 EU (engineering units of the desired deadband of the setpoint) leaving other two KNL parameters default. Am I missing anything?
  • In reply to dmitriy sagadiev:

    Dmitiy,
    You have it correct! NL_TBAND and NL_HYST should be 0. As always, I recommend you test the solution on simulated loop.
    James
  • James suggestion is a good option, but remember that the non-linear gain is not applied to derivative term, that is, if you are using PI or P controller it will work as you are expecting, but if you are using PID the derivative term will continue to change the output even if the error is less than NL_GAP.

    If you want only integral action to be "stopped" inside a SP band, you can use also I_DEADBAND (integral deadband) parameter quite simply.

  • In reply to Rafael Rebouças de Araujo:

    Hey Rafael,
    You are correct that using IDEADBAND is good if you only want to stop in the integral action (Gain and Derivative keep working). And you are correct on that the Nonlinear Gain feature does not stop the Derivative action. I had to test this because in both the Series and Standard Form of PID, the derivative function is applied to the (Gain*Error) or (Gain*PV depending on the Structure). Thus, if the "effective" Gain is Knl*Gain which is 0, I would expect that the Derivative action would stop also. However, I tested this feature and you are correct, the Derivative action continues to act normally regardless of the Knl gain modifier! Note also that the PID Form is forced to "Standard" even if configured as Series when the Nonlinear gain option is selected. Of course if the Rate=0, the Standard Form is the same as Series Form.

    Dmitiry - If you are using Derivative (Rate>0), you might want to write a 0 Rate when the PV is within the deadband of the SP.

    Good discussion!!
    James
  • In reply to James Beall:

    Hey James, how are you? We met recently at the Emerson Exchange at Minneapolis. That is great you could test both the series and standard form since in the books online the KNL appears explicitly multiplying only P and I action on the standard form, but for the series form they omitted the KNL in the equation. I was going to do this exact test tomorrow to make sure, thank you for that!
    Best regards,
    Rafael
  • In reply to Rafael Rebouças de Araujo:

    Hey Rafael,
    I certainly remember you! And, I owe you some information! I haven’t forgotten, just been so busy! Sorry for the delay and I will send the info soon!

    FYI, I just happened to be teaching a 3 day course on DeltaV control features and was talking about the Nonlinear Gain feature today! I actually had been told that the with Knl=0, the derivative action stopped also. However, when I saw your answer, I knew I better check!! And, you were correct! Good catch.
    Best Regards,
    James
  • In reply to James Beall:

    Thank you both for the useful feedback. Fortunately, the control loop is PI only.
    Rafael,
    While the IDEADBAND recommendation is valuable, it does not solve the original problem because Kp is still present.
  • In reply to dmitriy sagadiev:

    I also did some tests: P only controller in manual, with input=50%, output=50%, SP=50%, GAIN=1, NL_GAP=3, NL_MINMOND=0, NL_TBAND=0 and NL_HYST=0.

    Put P controller to AUTO (ok, nothing happens since sp=pv) and simulate the input (AI block) to 53%. The output of the P controller remained unchanged as expected. After that, simulated input = 55%. When this occurs, the output goes from 50% to 45% following a kind of ramp/first order. So:

    1) When the error goes outside SP+NL_GAP it will bump the output to Kp*(NL_GAP+error). It may be a problem or not for you.

    2) I couldn't figure out any parameter to adjust the ramp/first order, meaning that you can't control how fast or slow the KNL changes from 0 to 1. It may be a problem or not, depending of your needs. Actually, this parameter may exist and I just couldn't find. James, any ideas?

    3) Another concept of SP band would be: when PV > SP+NL_GAP, error=PV-(SP+NL_GAP). When PV < SP-NL_GAP, error=PV-(SP-NL_GAP). This would avoid the bump, but it is not possible with the standard Delta V nonlinear gain parameters, you would have to customize the code with a CALC block or figure out another solution.

    Well, as I said it may not even be a problem for you, I just got curious and shared the results so we can understand exactly the behavior of the nonlinear gain. Very good discussion.
  • In reply to Rafael Rebouças de Araujo:

    Yes, you can use the "NL_TBAND" to transition from the lowest Knl to the 1.0 gain. So in this example, you might use an NL_GAP fo 10 eu's and a NL_TBAND of 10 eu's. Good observation, thanks for testing!
    James
  • In reply to James Beall:

    Just thought of something! You could use a FREE single MV (output) MPC block and set up the PV as a constraint variable with the limits desired.
  • In reply to James Beall:

    Why cannot we use gain scheduling in this example? I will use error as aux variable. In this case I will set Gain=0, Tau=0, Rate=0 in the middle region (SP-DB to SP+DB).
  • In reply to Rafael Rebouças de Araujo:

    Indeed, it's been productive, too!
  • In reply to kravindranath:

    Could you elaborate about the programming? Would the aux variable be an internal read parameter as input to the PID? If so, which input?
  • In reply to kravindranath:

    Good idea also!  Note that a Reset of "0" is VERY fast integral, to turn it off, you put a large number in the Reset.  However, no need to do this since the Integral (Reset) and Derivative (Rate) are also stopped when the Gain is 0.  However, note that since the DeltaV PID is a positional implementation, if the Gain is changed from 0 to X when there is an error, the OUT will change by Error*X in a first order manner with a time constant = Reset.   However, You can avoid this initial movement by using the PID Structure "I on Error, PD on PV"!  (Note that this structure change will not work on the Nonlinear Gain option since when this option is activated, the P Gain is always applied to the Error.)   There is also a Deadband on the Gain Scheduler to transition from one tuning set to the next.