quote:以下是引用liwenqun在2009-05-04 17:34:24的发言:
就是个标准的pid算法 做了一点小修改 没什么的
IF (Init) THEN
初始化
I_Part := 0.0;
X_corr := 0.0;
X_err := 0.0;
///初始化完成
ELSE
Corr_Max := FALSE;
IF (TN > 0.0) THEN // TN > 0: mit I-Anteil
I限制为大于等于0
TI := 1.0 / TN;
TI=1/TN 取倒数(至于为什么你看看标准PID算法就知道了)
ELSE // TN = 0: ohne I-Anteil
TI := 0.0;
END_IF;
IF (Kp > 0.0) THEN
P大于0 计算积分
X_err := X_want - X_act; // (Soll - Ist) Differenz
积分限制
IF (TI > 0.0) AND (ABS (X_err) < (0.5*Corr_Lim)) THEN // I_Anteil
// I_part := (I_part + X_err);
I_part := I_part + (X_err * TI);
IF ABS(I_Part) > Corr_Lim THEN
I_part := Corr_Lim;
END_IF;
积分计算完成
ELSE
I_Part := 0.0;
END_IF;
// X_corr := (X_err + (I_part * TI)) * Kp; // Sollwert-Korrektur
计算PID X_corr := (X_err * Kp) + I_part; // Sollwert-Korrektur
输出限副 IF (X_corr > Corr_Lim) THEN
X_corr := Corr_Lim;
Corr_Max := TRUE;
ELSIF (X_corr < -Corr_Lim) THEN
X_corr := -Corr_Lim;
Corr_Max := TRUE;
END_IF;
ELSE
I_part := 0.0;
X_err := 0.0;
X_corr := 0.0;
END_IF;
END_IF;
标准pid算法哪个地方有相关资料,我先看一下