PID Block

This is the Proportional Integral Derivative (PID) loop block that has tunable parameters used to control the controllers and make sure they are operating optimally.

Below are each of the inputs and output:

Pv = Process variable. The current measured value. For example DAT or CHWDP.
Sp = Setpoint. The value to be achieved.
Kp = Proportional. The difference between Sp and Pv.
Ki = Integral. The sum of error over time. This is transient, so if the program is saved or the FIN service is restarted, it restarts from 0.
Kd = Derivative. The rate of change.
Direction = “FALSE” for Reverse Action, which means to increase Pv (Err = Sp - Pv [heating]). "TRUE" for Direct Action, which means to decrease Pv (Err = Pv - Sp [cooling]).
Min and Max = These would be used to define the Min/Max value of the output of the PID loop. This would be a number 0-100%. The Min/Max does not relate to the inputs at all, it is for the output. If for example, with the output at 80% the valve is fully open there is no reason to allow the PID loop to continue to integrate to 100% as no change is actually happening from 80-100%. Same on the low end.
Result = Output (kpComponent + kiComponent + kdComponent). This would be connected to the Valve command or VFD Speed command for example.
Note: The output is calculated each time the program runs, so the execution time of the program affects the result.

Example 1:

Error = 1 (pv = 10, sp = 9, direction = true) Program cycle time = 1 sec (normal) kp = 0 ki = 1 kd = 0 After 20 seconds (20 cycles) the PID "result" (output) will be 20 (result = 1+1+1+...+1 = 20).

Example 2:

Error = 1 (pv = 10, sp = 9, direction = true) Program cycle time = 10 sec (slow) kp = 0 ki = 1 kd = 0 After 20 seconds (2 cycles) the PID "result" (output) will be 2 (result = 1+1 = 2).

Examples

Below are a couple example setups.