在剛接觸pid時(shí)候感覺(jué)很頭疼,fb41功能塊繁多的輸入輸出以及幫助里面非常專(zhuān)業(yè)的解釋看得我眼冒金星,頭昏眼花,真的是不知道如何入手,后來(lái)使用幾次以后發(fā)現(xiàn),原來(lái)只是填填變量的事(我們的pid就是簡(jiǎn)單的控制,還沒(méi)有涉及切換、加泵以及減泵等復(fù)雜問(wèn)題),正好最近有時(shí)間,就匯總了一下fb41的端子說(shuō)明(基本來(lái)自大家技術(shù)論壇的分享),就當(dāng)做個(gè)筆記吧。
1、fb41的方框圖(fb41的端口作用邏輯圖,看懂這個(gè)基本就都會(huì)了)
2、規(guī)格化(個(gè)人感覺(jué)不是必須要規(guī)格化,整個(gè)fb41功能塊統(tǒng)一量綱就行了)
pid參數(shù)中重要的3個(gè)變量,給定值(sp_int),反饋值(pv_in)和輸出值(lmn)都是用0.0~100.0之間的實(shí)數(shù)表示。
因此,需要將模擬輸入轉(zhuǎn)換為0.0~100.0的數(shù)據(jù),或?qū)?.0~100.0的數(shù)據(jù)轉(zhuǎn)換為模擬輸出,這個(gè)過(guò)程稱(chēng)為規(guī)格化
規(guī)格化的方法:(即變量相對(duì)所占整個(gè)值域范圍內(nèi)的百分比 對(duì)應(yīng)與27648數(shù)字量范圍內(nèi)的量)
對(duì)于給定值(sp_int)和反饋值(pv_in),執(zhí)行:變量*100/27648,然后將結(jié)果傳送到pv-in和sp-int
對(duì)于輸出變量 ,執(zhí)行:lmn*27648/100,然后將結(jié)果取整傳送給pqw即可。
3、一般使用循環(huán)中斷組織塊調(diào)用fb41,一般不用ob1,因?yàn)閛b1的掃描周期不是確定的。
4、fb41的輸入輸出參數(shù)
in
<1、com_rst:bool,初始化fb41。設(shè)置為1時(shí),積分微分的累計(jì)清零。不會(huì)自動(dòng)復(fù)位,需要程序復(fù)位com_rst。一般使用如下:
可以在ob100、ob101、ob102里面寫(xiě)兩句話
an “com_rst” //如果初始化標(biāo)志位是0
s “com_rst” //將初始化標(biāo)志位置1
在ob1的最后寫(xiě)上兩句話,復(fù)位初始化標(biāo)志位
a “com_rst” //如果初始化標(biāo)志位1
r “com_rst” //將初始化標(biāo)志位復(fù)位
pid的初始化可以通過(guò)在ob100中調(diào)用一次,將參數(shù)com-rst置位,當(dāng)然也可在別的地方初始化它,關(guān)鍵的是看程序需要;
<2、man_on:bool,設(shè)置為0為自動(dòng)調(diào)整;設(shè)置為1為手動(dòng)調(diào)整;這里會(huì)涉及到一個(gè)自動(dòng)和手動(dòng)模式的切換問(wèn)題:無(wú)擾動(dòng)切換
pid調(diào)節(jié)器在自動(dòng)→手動(dòng)、或手動(dòng)→自動(dòng)的瞬間,pid的輸出是不變化的。
從手動(dòng)切換到自動(dòng),自不用說(shuō),但是從自動(dòng)到手動(dòng)會(huì)出現(xiàn)明顯跳動(dòng),一般可以這樣處理:從自動(dòng)切換到手動(dòng)增加一個(gè)斜坡處理。將自動(dòng)時(shí)的輸出換算成比例值,一直加載在man口上,切換后,通過(guò)斜坡,將man口上的值由原來(lái)的值過(guò)度到手動(dòng)比例設(shè)定值。
此端口和<11處的man口配合使用。
<3、pvper_on:bool,過(guò)程值選擇,此值與pv_in和pv_per有關(guān)系
設(shè)置為1時(shí),直接將piw(監(jiān)測(cè)實(shí)際值端口)輸入pv_per口
設(shè)置為0時(shí):將轉(zhuǎn)化后、濾波后且規(guī)格化后(等處理過(guò)的)數(shù)據(jù)輸出pv_in口
<4、p_sel、i_sel以及d_sel:bool,比例、積分、微分作用的選擇,設(shè)置為0,相應(yīng)部分不起作用。
<5、int_hold:bool,積分保持,設(shè)置為1時(shí),積分不累加,一般不設(shè)置。
<6、i_itl_on:bool,積分初值給定;
i-itlval:real,積分初值。
當(dāng)i_itl_on設(shè)置為1時(shí),使用i-itlval變量積分初值;當(dāng)i_itl_on設(shè)置為0時(shí),積分初始值為0。一般當(dāng)發(fā)現(xiàn)pid功能的積分值增長(zhǎng)比較慢或系統(tǒng)反應(yīng)不夠時(shí)可以考慮使用積分初值;此功能很少用到。
<7、cycle:time,pid采樣周期。
<8、sp_int:real,pid的設(shè)定值。
<9、pv_in :real,pid的反饋值。數(shù)據(jù)類(lèi)型為real,顯然是處理后的數(shù)值,見(jiàn)<3。
<10、pv_per:word,pid的反饋值。數(shù)據(jù)類(lèi)型為word,顯然直接piw輸入,見(jiàn)<3。
<11、man:real,手動(dòng)模式的輸入端口。
<12、gain:real,比例增益。
<13、ti:time,積分時(shí)間。
<14、td:time,微分時(shí)間。
<15、tm_lag:time,多長(zhǎng)時(shí)間開(kāi)啟微分,由于微分會(huì)削弱達(dá)到穩(wěn)定值時(shí)間,可以延時(shí)啟動(dòng)微分。通常不設(shè)置。
<16、deadb_w:real,死區(qū)寬度?,F(xiàn)場(chǎng)監(jiān)控達(dá)到設(shè)定值后,并不穩(wěn)定到設(shè)定值,如果出現(xiàn)小范圍浮動(dòng),會(huì)出現(xiàn)執(zhí)行器來(lái)回動(dòng)作問(wèn)題,可以考慮用死區(qū)來(lái)降低靈敏度。此值為百分?jǐn)?shù)。
<17、lmn_hlm、lmn_llm:real,輸出值上下極限。此處需要搭配<19處使用,即保證lmn_hlm*lmn_fac=100,程序中默認(rèn)lmn_hlm為100.0,lmn_fac為1.0,所以可以不用去設(shè)置。如果想設(shè)置,需要保證上面的公式。
<18、pv_fac、pv_off:real,pv_fac=傳感器的量程/100。只有在pvper_on為1時(shí)起作用,目的為統(tǒng)一單位;為零時(shí),需要規(guī)格化,單位已經(jīng)統(tǒng)一,所以此處無(wú)用。
<19、lmn_fac、lmn_off:real,輸出值的量程。
<20、disv:real,允許的擾動(dòng)量,串級(jí)系統(tǒng)使用,一般不設(shè)置;
out
<1、lmn:real,輸出實(shí)際值占滿量程的百分比。
<2、lmn_per:word,pqw輸出
<3、qlmn_hlm、qlmn_llm:bool,qlmn_hlm:輸出最大值時(shí)輸出1;qlmn_llm:輸出最小值時(shí)輸出1,可以作為工、變頻切換(例如一臺(tái)泵工頻,一臺(tái)泵要求變頻,調(diào)節(jié)恒壓時(shí))的點(diǎn)位來(lái)用。
<4、lmn_p、lmn_i、lmn_d:real,pid輸出中p、i、d的分量。三者的和為輸出值。
<5、pv:real,實(shí)際壓力值
<6、er:real,偏離值,設(shè)定值與實(shí)際值之差。
以上部分加入了自己的想法,如有錯(cuò)誤望各位大俠批評(píng)指導(dǎo)。