zhaoheshuai
級別: 工控俠客
精華主題: 0
發(fā)帖數(shù)量: 209 個
工控威望: 2088 點
下載積分: 9920 分
在線時間: 464(小時)
注冊時間: 2014-12-31
最后登錄: 2024-11-05
查看zhaoheshuai的 主題 / 回貼
樓主  發(fā)表于: 2017-01-09 16:58
大家誰用codesys做過PID控制,可以共同討論一下(* PD controller *)
FUNCTION_BLOCK PID_FIXCYCLE
VAR_INPUT
    ACTUAL :REAL;        (* actual value, process variable *)
    SET_POINT:REAL;    (* desired value, set point *)
    KP:REAL;                (* proportionality const. (P)*)
    TN:REAL;                (* reset time (I) in sec *)
    TV:REAL;                (* rate time, derivative time (D) in sec*)
    Y_MANUAL:REAL;        (* Y is set to this value as long as MANUAL=TRUE *)
    Y_OFFSET:REAL;        (* offset for manipulated variable *)
    Y_MIN:REAL;            (* minimum value for manipulated variable *)
    Y_MAX:REAL;            (* maximum value for manipulated variable *)
    MANUAL:BOOL;        (*     TRUE: manual: Y is not influenced by controller,
                                FALSE: controller determines Y *)
    RESET:BOOL;            (* reset: set Y output to Y_OFFSET and reset integral part *)
    CYCLE:REAL;            (* time in s between two calls *)
END_VAR
VAR_OUTPUT
    Y:REAL;                (* manipulated variable, set value*)
    LIMITS_ACTIVE:BOOL:=FALSE;    (* true set value would exceed limits Y_MIN, Y_MAX *)
    OVERFLOW:BOOL:=FALSE;        (* overflow in integral part *)
END_VAR
VAR
    I: INTEGRAL;
    D: DERIVATIVE;
    TMDIFF: DWORD;
    ERROR: REAL;
    INIT: BOOL:=TRUE;
    Y_ADDOFFSET: REAL;
    KPcopy:REAL;
    TNcopy:REAL;
    TVcopy:REAL;
END_VAR
zhaoheshuai
級別: 工控俠客
精華主題: 0
發(fā)帖數(shù)量: 209 個
工控威望: 2088 點
下載積分: 9920 分
在線時間: 464(小時)
注冊時間: 2014-12-31
最后登錄: 2024-11-05
查看zhaoheshuai的 主題 / 回貼
1樓  發(fā)表于: 2017-01-09 17:01
想穩(wěn)定一個轉(zhuǎn)速   pid控制   速度可以通過脈沖進入plc    plc通過pwm口輸出來調(diào)節(jié)    使速度穩(wěn)定到3000轉(zhuǎn)每分鐘