国产免费AV|泡泡玛特欧洲总部将设在伦敦|中文天堂网www新版资源在线|一本久道综合在线中文|国精产品一二三产区的使用方法|香蕉鱼在线观看|www.27eee
ELEOK
標(biāo)題:
位置式PID源代碼
[打印本頁]
作者:
hsc2857
時(shí)間:
2018-10-23 16:49
標(biāo)題:
位置式PID源代碼
位置式PID源代碼,本程序來源于網(wǎng)絡(luò)
FUNCTION FC1 : VOID
VAR_INPUT
Run:BOOL; //True-運(yùn)行,F(xiàn)alse-停止
Auto:BOOL; //True-自動(dòng),F(xiàn)alse-手動(dòng)
ISW:BOOL; //True-積分有效,F(xiàn)alse-積分無效
DSW:BOOL; //True-微分有效,F(xiàn)alse-微分無效
SetMV:REAL; //手動(dòng)時(shí)的開度設(shè)定值
SVSW:REAL; //當(dāng)設(shè)定值低于SVSW時(shí),開度為零
PV:REAL; //測(cè)量值
SV:REAL; //設(shè)定值
DeadBand:REAL; //死區(qū)大小
PBW:REAL; //比例帶大小
IW:REAL; //積分帶大小
DW:REAL; //微分帶大小
dErr_IN:REAL; //誤差累積
LastPV_IN:REAL; //上一控制周期的測(cè)量值
END_VAR
VAR_OUTPUT
MV:REAL; //輸出開度
dErr_OUT:REAL; //誤差累積
LastPV_OUT:REAL;//上一控制周期的測(cè)量值
END_VAR
VAR
Err:REAL; //誤差
dErr:REAL; //誤差累積
PBH:REAL; //比例帶上限
PBL:REAL; //比例帶下限
PVC:REAL; //測(cè)量值在一個(gè)控制周期內(nèi)的變化率,即測(cè)量值變化速率
P:REAL; //比例項(xiàng)
I:REAL; //積分項(xiàng)
D:REAL; //微分項(xiàng)
END_VAR
IF Run THEN
IF Auto THEN
IF SV>=SVSW THEN
Err:=SV-PV;
PBH:=SV+PBW;
PBL:=SV-PBW;
IF PV<PBL THEN
MV:=1;
ELSIF PV>PBH THEN
MV:=0;
ELSE
P:=(PBH-PV)/(PBH-PBL); //計(jì)算比例項(xiàng)
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////以下為積分項(xiàng)的計(jì)算//////////////////////////////////////////////////////////////
IF ISW 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;
/////////////////////////////////////////////以上為積分項(xiàng)的計(jì)算//////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////以下為微分項(xiàng)的計(jì)算//////////////////////////////////////////////////////////////
IF DSW=1 THEN
PVC:=LastPV_IN-PV;
D:=PVC/DW;
LastPV_OUT:=PV;
ELSE
D:=0;
END_IF;
/////////////////////////////////////////////以上為微分項(xiàng)的計(jì)算//////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
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
復(fù)制代碼
歡迎光臨 ELEOK (http://m.afoofa.cn/)
Powered by Discuz! X5.0