PID西门子PLC的SCL程序

更新时间:2023-07-25 03:54:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

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; //输出开度

PID西门子PLC的SCL程序

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 PV<PBL THEN

PID西门子PLC的SCL程序

MV:=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;

PID西门子PLC的SCL程序

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

PID西门子PLC的SCL程序

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

本文来源:https://www.bwwdw.com/article/qwlm.html

Top