您好,欢迎来到欧得旅游网。
搜索
您的当前位置:首页PID西门子PLC的SCL程序

PID西门子PLC的SCL程序

来源:欧得旅游网
PID控制算法的程序段,该程序是西门子PLC的SCL程序。带\"_IN\"与带\"_OUT\"的变量,如果前缀是一样的,要求连接同一个变量。这段程序已经在温度控制上运行通过了。 FUNCTION FC1 : VOID VAR_INPUT

Run:BOOL; //True-运行,False-停止 Auto:BOOL; //True-自动,False-手动 ISW:BOOL; //True-积分有效,False-积分无效 DSW:BOOL; //True-微分有效,False-微分无效 SetMV:REAL; //手动时的开度设定值

SVSW:REAL; //当设定值低于SVSW时,开度为零 PV:REAL; //测量值 SV:REAL; //设定值

DeadBand:REAL; //死区大小 PBW:REAL; //比例带大小

IW:REAL; //积分带大小

DW:REAL; //微分带大小 dErr_IN:REAL; //误差累积

LastPV_IN:REAL; //上一控制周期的测量值 END_VAR

VAR_OUTPUT

MV:REAL;

//输出开度

dErr_OUT:REAL; //误差累积

LastPV_OUT:REAL;//上一控制周期的测量值 END_VAR

VAR

Err:REAL; //误差 dErr:REAL; //误差累积 PBH:REAL; //比例带上限 PBL:REAL; //比例带下限

PVC:REAL; //测量值在一个控制周期内的变化率,即测量值变化速率 P:REAL; //比例项 I:REAL; //积分项 D:REAL; //微分项 END_VAR

IF Run=1 THEN

IF Auto=1 THEN IF SV>=SVSW THEN

Err:=SV-PV;

PBH:=SV+PBW;

PBL:=SV-PW;

IF PVMV:=1;

ELSIF PV>PBH THEN

MV:=0;

ELSE

P=(PBH-PV)/(PBH-PBL); //计算比例项

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

/////////////////////////////////////////////以下为积分项的计算//////////////////////////////////////////////////////////////

IF ISW=1 THEN

dErr:=dErr_IN;

IF (PV<(SV-DeadBand)) OR (PV>(SV+DeadBand)) THEN

IF (dErr+Err)<(0-IW) THEN

dErr:=0-IW;

ELSIF (dErr+Err)>IW THEN

dErr:=IW;

ELSE

dErr:=dErr+Err;

END_IF;

END_IF; I:=dErr/IW;

dErr_OUT:=dErr;

ELSE

I:=0;

END_IF;

/////////////////////////////////////////////以上为积分项的计算//////////////////////////////////////////////////////////////

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

/////////////////////////////////////////////以下为微分项的计算//////////////////////////////////////////////////////////////

IF DSW=1 THEN

PVC:=LastPV_IN-PV;

D:=PVC/DW;

LastPV_OUT:=PV;

ELSE

D:=0;

END_IF;

/////////////////////////////////////////////以上为微分项的计算//////////////////////////////////////////////////////////////

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

IF (P+I+D)>1 THEN

MV:=1;

ELSIF (P+I+D)<0 THEN

MV:=0;

ELSE

MV:=P+I+D;

END_IF;

END_IF;

ELSE

MV:=0;

END_IF;

ELSE

MV:=SetMV;

END_IF;

ELSE

MV:=0;

END_IF;

END_FUNCTION

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- ovod.cn 版权所有 湘ICP备2023023988号-4

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务