回复:再发一个老外程序 pi控制的,他们说很好用,但是我程序看不懂,哪位好心人解释一下

jacky_andy

  • 帖子

    2277
  • 精华

    19
  • 被关注

    31

论坛等级:奇侠

注册时间:2004-12-21

普通 普通 如何晋级?

发布于 2009-05-04 17:44:27

0楼

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算法哪个地方有相关资料,我先看一下
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54621条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。