author | Mario de Sousa <msousa@fe.up.pt> |
Thu, 31 Mar 2011 21:06:36 +0100 | |
changeset 262 | 197ba42d78b2 |
parent 192 | c6c2a3d487ac |
child 276 | 1679f514f38a |
permissions | -rwxr-xr-x |
192
c6c2a3d487ac
Adding inclusion of function blocks defined in AnnexF into library blocks
lbessard
parents:
diff
changeset
|
1 |
FUNCTION_BLOCK PID |
c6c2a3d487ac
Adding inclusion of function blocks defined in AnnexF into library blocks
lbessard
parents:
diff
changeset
|
2 |
VAR_INPUT |
c6c2a3d487ac
Adding inclusion of function blocks defined in AnnexF into library blocks
lbessard
parents:
diff
changeset
|
3 |
AUTO : BOOL ; (* 0 - manual , 1 - automatic *) |
c6c2a3d487ac
Adding inclusion of function blocks defined in AnnexF into library blocks
lbessard
parents:
diff
changeset
|
4 |
PV : REAL ; (* Process variable *) |
c6c2a3d487ac
Adding inclusion of function blocks defined in AnnexF into library blocks
lbessard
parents:
diff
changeset
|
5 |
SP : REAL ; (* Set point *) |
c6c2a3d487ac
Adding inclusion of function blocks defined in AnnexF into library blocks
lbessard
parents:
diff
changeset
|
6 |
X0 : REAL ; (* Manual output adjustment - *) |
c6c2a3d487ac
Adding inclusion of function blocks defined in AnnexF into library blocks
lbessard
parents:
diff
changeset
|
7 |
(* Typically from transfer station *) |
c6c2a3d487ac
Adding inclusion of function blocks defined in AnnexF into library blocks
lbessard
parents:
diff
changeset
|
8 |
KP : REAL ; (* Proportionality constant *) |
c6c2a3d487ac
Adding inclusion of function blocks defined in AnnexF into library blocks
lbessard
parents:
diff
changeset
|
9 |
TR : REAL ; (* Reset time *) |
c6c2a3d487ac
Adding inclusion of function blocks defined in AnnexF into library blocks
lbessard
parents:
diff
changeset
|
10 |
TD : REAL ; (* Derivative time constant *) |
c6c2a3d487ac
Adding inclusion of function blocks defined in AnnexF into library blocks
lbessard
parents:
diff
changeset
|
11 |
CYCLE : TIME ; (* Sampling period *) |
c6c2a3d487ac
Adding inclusion of function blocks defined in AnnexF into library blocks
lbessard
parents:
diff
changeset
|
12 |
END_VAR |
c6c2a3d487ac
Adding inclusion of function blocks defined in AnnexF into library blocks
lbessard
parents:
diff
changeset
|
13 |
VAR_OUTPUT XOUT : REAL; END_VAR |
c6c2a3d487ac
Adding inclusion of function blocks defined in AnnexF into library blocks
lbessard
parents:
diff
changeset
|
14 |
VAR ERROR : REAL ; (* PV - SP *) |
c6c2a3d487ac
Adding inclusion of function blocks defined in AnnexF into library blocks
lbessard
parents:
diff
changeset
|
15 |
ITERM : INTEGRAL ; (* FB for integral term *) |
c6c2a3d487ac
Adding inclusion of function blocks defined in AnnexF into library blocks
lbessard
parents:
diff
changeset
|
16 |
DTERM : DERIVATIVE ; (* FB for derivative term *) |
c6c2a3d487ac
Adding inclusion of function blocks defined in AnnexF into library blocks
lbessard
parents:
diff
changeset
|
17 |
END_VAR |
c6c2a3d487ac
Adding inclusion of function blocks defined in AnnexF into library blocks
lbessard
parents:
diff
changeset
|
18 |
ERROR := PV - SP ; |
c6c2a3d487ac
Adding inclusion of function blocks defined in AnnexF into library blocks
lbessard
parents:
diff
changeset
|
19 |
(*** Adjust ITERM so that XOUT := X0 when AUTO = 0 ***) |
c6c2a3d487ac
Adding inclusion of function blocks defined in AnnexF into library blocks
lbessard
parents:
diff
changeset
|
20 |
ITERM (RUN := AUTO, R1 := NOT AUTO, XIN := ERROR, |
c6c2a3d487ac
Adding inclusion of function blocks defined in AnnexF into library blocks
lbessard
parents:
diff
changeset
|
21 |
X0 := TR * (X0 - ERROR), CYCLE := CYCLE) ; |
c6c2a3d487ac
Adding inclusion of function blocks defined in AnnexF into library blocks
lbessard
parents:
diff
changeset
|
22 |
DTERM (RUN := AUTO, XIN := ERROR, CYCLE := CYCLE) ; |
c6c2a3d487ac
Adding inclusion of function blocks defined in AnnexF into library blocks
lbessard
parents:
diff
changeset
|
23 |
XOUT := KP * (ERROR + ITERM.XOUT/TR + DTERM.XOUT*TD) ; |
c6c2a3d487ac
Adding inclusion of function blocks defined in AnnexF into library blocks
lbessard
parents:
diff
changeset
|
24 |
END_FUNCTION_BLOCK |
c6c2a3d487ac
Adding inclusion of function blocks defined in AnnexF into library blocks
lbessard
parents:
diff
changeset
|
25 |