AnnexF/pid_st.txt
changeset 0 fb772792efd1
equal deleted inserted replaced
-1:000000000000 0:fb772792efd1
       
     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