====== PID controller ====== {{:en:mervis-ide:35-help:b36.png}} ===== Block name ===== B36_PID_CONTROLLER ===== ST call ===== PROGRAM B36_TEST VAR XIN,WIN,COOLING:REAL; FB: LIB.CORE.V1_0.B36_PID_CONTROLLER; END_VAR FB(X:=XIN, W:=WIN, OUT=>COOLING); END_PROGRAM ===== Library ===== LIB\CORE ===== Version ===== V1.0 ===== Description ===== The block is an implementation of a PID controller (with parameters: P-band, Integration constant, Derivative constant, Offset, Min and Max values, and output value of an inactive controller). ===== Inputs ===== |Input |Type |Description |Default value| |W |REAL |Setpoint (usually temperature). |0 | |X |REAL |Measured value (usually temperature). |0 | |CONTROLLERTYPE|[[en:mervis-ide:35-help:035-software_basic:060-libraries:015-proto|CONTROLLERTYPE]]|Controller type (cooling/heating). |cooling | |BP |BOOL |When set to TRUE, the I part is disabled (the controller acts as a P controller)|False | |ENABLED |BOOL |Controller enable (FALSE = controller is deactivated). |True | |XP |REAL |Proportional band |30 | |OFF |REAL |Offset, added to the setpoint W. |0 | |TI |REAL |Integration constant |120 | |TD |REAL |Derivative constant |1 | |MIN |REAL |Minimum output value OUT (usually 0). |0 | |MAX |REAL |Maximum output value OUT (usually 100). |100 | |DISVAL |REAL |Value of the OUT output when the controller is deactivated (ENABLED=FALSE) |0 | ===== Outputs ===== |Output |Type|Description | |OUT |REAL|Output signal (mostly valve or damper, 0 to 100%).| |PFACTOR|REAL|P-part of the output signal | |IFACTOR|REAL|I-part of the output signal | |DFACTOR|REAL|D-part of the output signal | ===== Function ===== There is a control deviation at the controller input, E=(W+OFF)-X. The controller output OUT is given by the relation OUT=-100/Xp*(E+1/Ti*∫e+Td*e')+MIN, where the first part is the proportional part (P), the second part is the integration part (I), and the third part is the derivative part (D). The resulting value is finally limited by MIN and MAX, see figure at [[en:mervis-ide:35-help:035-software_basic:060-libraries:020-basic-analogue-boxes:010-controllers:005-direct-acting-cooling:010-b32_p_controller|block B32]]. The I-part helps to achieve the exact control value. The D-part is calculated according to the figure below. To simplify the issue, let us assume Ti=0 and the I part = 0. When W+OFF=0 and the X input goes from 0 to -1 in time t=Td, then the D-part has a constant value of 100, and the P-band rises to 100/Xp. The BP input sets the I-and D-parts to 0, if set to true. The ENABLED parameter switches the controller off (ENABLED=FALSE, controller disabled, and OUT=DISVAL). Function in case of incorrect setting: Xp<= 0, then OUT=MAX for x>=W+OFF, and OUT=MIN for X