equal
deleted
inserted
replaced
|
1 FUNCTION_BLOCK PID |
|
2 VAR_INPUT |
|
3 AUTO : BOOL ; (* 0 - manual , 1 - automatic *) |
|
4 PV : REAL ; (* Process variable *) |
|
5 SP : REAL ; (* Set point *) |
|
6 X0 : REAL ; (* Manual output adjustment - *) |
|
7 (* Typically from transfer station *) |
|
8 KP : REAL ; (* Proportionality constant *) |
|
9 TR : REAL ; (* Reset time *) |
|
10 TD : REAL ; (* Derivative time constant *) |
|
11 CYCLE : TIME ; (* Sampling period *) |
|
12 END_VAR |
|
13 VAR_OUTPUT XOUT : REAL; END_VAR |
|
14 VAR ERROR : REAL ; (* PV - SP *) |
|
15 ITERM : INTEGRAL ; (* FB for integral term *) |
|
16 DTERM : DERIVATIVE ; (* FB for derivative term *) |
|
17 END_VAR |
|
18 ERROR := PV - SP ; |
|
19 (*** Adjust ITERM so that XOUT := X0 when AUTO = 0 ***) |
|
20 ITERM (RUN := AUTO, R1 := NOT AUTO, XIN := ERROR, |
|
21 X0 := TR * (X0 - ERROR), CYCLE := CYCLE) ; |
|
22 DTERM (RUN := AUTO, XIN := ERROR, CYCLE := CYCLE) ; |
|
23 XOUT := KP * (ERROR + ITERM.XOUT/TR + DTERM.XOUT*TD) ; |
|
24 END_FUNCTION_BLOCK |
|
25 |