晒一个我自己做的PI程序功能块,希望大家提宝贵意见

已锁定

谢更新

  • 帖子

    384
  • 精华

    3
  • 被关注

    50

论坛等级:侠圣

注册时间:2013-10-31

普通 普通 如何晋级?

晒一个我自己做的PI程序功能块,希望大家提宝贵意见

1044

2

2014-05-13 14:40:21

印刷机张力控制一般都用速度PI控制(没有D),长期以来一直用PLC的标准PID功能块来实现,后来根据PID的公式原理自己做了一个,半年来已经用在多台机器上,自我感觉简单高效,而且效果很好,拿出来和大家分享一下。
这个功能块SCL编写, 放在100mS的中断中来用

VAR_INPUT
EN: BOOL:=FALSE;
运算使能: BOOL:=FALSE;
逆动作: BOOL:=FALSE;
检测值: INT:=0;
设定值: INT:=0;
P值: INT:=0;
I值: INT:=0;
限幅: INT:=0;
线速度mm_min_f: REAL:=0.0;
END_VAR
VAR_OUTPUT
ENO: BOOL:=FALSE;
PI输出值: INT:=0;
整定后速度mm_min_f: REAL:=0.0;
END_VAR
VAR
偏差E: INT:=0;
下限幅: INT:=0;
比例值: REAL:=0;
积分值: REAL:=0;

END_VAR

BODY
if (运算使能) then
偏差E:=设定值-检测值;
下限幅:=0-限幅;
比例值:=INT_TO_real(P值)*INT_TO_real(偏差E); (* 比例值=P*偏差 *)

if (PI输出值<限幅 and PI输出值>下限幅) then
积分值:=比例值/INT_TO_real(I值)+积分值; (* 积分值=(比例值/I)+

积分值 *)
end_if;

PI输出值:=LIMIT(MN:=下限幅,IN:=real_TO_INT(比例值+积分值) ,MX:=限幅);(* PI输出值=比例值+积分值 *)

if (逆动作) then PI输出值:=0-PI输出值; (*方向 *)
end_if;
else
积分值:=0; 比例值:=0; PI输出值:=0; (*复位 *)
end_if;
整定后速度mm_min_f:=线速度mm_min_f+INT_TO_REAL(PI输出值);
END_BODY
晒一个我自己做的PI程序功能块,希望大家提宝贵意见 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54616条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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