zhaoheshuai
级别: 工控侠客
精华主题: 0
发帖数量: 209 个
工控威望: 2088 点
下载积分: 9920 分
在线时间: 464(小时)
注册时间: 2014-12-31
最后登录: 2024-12-16
查看zhaoheshuai的 主题 / 回贴
楼主  发表于: 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
发帖数量: 209 个
工控威望: 2088 点
下载积分: 9920 分
在线时间: 464(小时)
注册时间: 2014-12-31
最后登录: 2024-12-16
查看zhaoheshuai的 主题 / 回贴
1楼  发表于: 2017-01-09 17:01
想稳定一个转速   pid控制   速度可以通过脉冲进入plc    plc通过pwm口输出来调节    使速度稳定到3000转每分钟