當前位置:編程學習大全網 - 編程語言 - 西門子200PLC 如果想要自動控溫都有什麽方法?PID向導和由比較指令為條件組成的程序哪個好壹點。

西門子200PLC 如果想要自動控溫都有什麽方法?PID向導和由比較指令為條件組成的程序哪個好壹點。

給妳個Step 7寫的PID控制的FC模塊。帶"_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-PBW;

IF PV<PBL THEN

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;

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

進行整定時先進行P調節,使I和D作用無效,觀察溫度變化曲線,若變化曲線多次出現波形則應該放大比例(P)參數,若變化曲線非常平緩,則應該縮小比例(P)參數。比例(P)參數設定好後,設定積分(I)參數,積分(I)正好與P參數相反,曲線平緩則需要放大積分(I),出現多次波形則需要縮小積分(I)。比例(P)和積分(I)都設定好以後設定微分(D)參數,微分(D)參數與比例(P)參數的設定方法是壹樣的。

當初寫這段程序的就是為了使用調功器來控制爐子的溫度的,已經在我單位的調功器上運行成功了,還有就是我單位的調功器沒有使用微分(D),只是用了比例(P)和積分(I)。

  • 上一篇:鈑金件和沖壓件的區別?工藝流程?
  • 下一篇:什麽叫FSW焊接
  • copyright 2024編程學習大全網