汪浩洋,徐 愷,曹 玉
(1.湖南中煙工業(yè)有限責(zé)任公司 長(zhǎng)沙卷煙廠,長(zhǎng)沙410007;2.中國(guó)電建集團(tuán) 中南勘測(cè)設(shè)計(jì)研究院有限公司,長(zhǎng)沙410014)
隨著工業(yè)4.0 的逐步推進(jìn), 設(shè)備自動(dòng)化水平日益提高,對(duì)傳統(tǒng)的PID 控制而言,工控系統(tǒng)的復(fù)雜化和控制對(duì)象的多樣化,給過(guò)程控制帶來(lái)了不同程度的參數(shù)時(shí)變性、非線性和結(jié)構(gòu)不確定性[1],要求其模型結(jié)構(gòu)非常精確,傳統(tǒng)控制方式也因此而暴露出相應(yīng)的短板。而模糊控制不但具有良好的適應(yīng)性和抗干擾能力,且無(wú)需建立精確的數(shù)學(xué)模型[2]。基于此,充分結(jié)合了傳統(tǒng)PID 控制模式和模糊理論的固有優(yōu)勢(shì), 實(shí)現(xiàn)了一種基于MatLab 和OPC 通信的模糊PID 控制方法。
模糊控制結(jié)構(gòu)是應(yīng)用人的思維模式和經(jīng)驗(yàn)認(rèn)知,轉(zhuǎn)化為計(jì)算機(jī)能夠識(shí)別和控制的智慧控制技術(shù)系統(tǒng)。該控制模式又被認(rèn)為是一種言語(yǔ)控制形式,常用于難利用明確的數(shù)學(xué)形式表達(dá)的控制對(duì)象和一些繁雜環(huán)境中的實(shí)物控制。
為滿足PID 參數(shù)在線實(shí)時(shí)修正的控制要求,需要在PLC 與上位機(jī)之間建立數(shù)據(jù)通道[3]。基于OPC服務(wù),將底層PLC 計(jì)算得到的誤差e(k)和誤差變化率ec(k)讀取到上位機(jī)的MatLab 軟件中,作為模糊控制器的輸入,經(jīng)過(guò)模糊推理和決策,得到PID控制器的3 個(gè)調(diào)整參數(shù)ΔKp,ΔTi,ΔTd,再將其下發(fā)至PLC中,在底層與PID 控制器的初始參數(shù)進(jìn)行求和,得出實(shí)際控制參數(shù)。
模糊PID 控制系統(tǒng)總體結(jié)構(gòu)如圖1所示。其中,PID 基礎(chǔ)算法在PLC 中完成編程實(shí)現(xiàn), 根據(jù)現(xiàn)實(shí)工況和具體的控需求,由傳統(tǒng)方法結(jié)合被控對(duì)象計(jì)算和調(diào)試得出其初始參數(shù),并通過(guò)WinCC 界面輸入到PLC 中。
圖1 模糊PID 控制系統(tǒng)總體結(jié)構(gòu)Fig.1 Overall structure of fuzzy-PID control system
PID 調(diào)節(jié)器依據(jù)給定量與實(shí)際量的偏差進(jìn)行調(diào)整,誤差值分別經(jīng)過(guò)比例、積分和微分,再經(jīng)求和計(jì)算形成輸出值,對(duì)執(zhí)行器件實(shí)施控制,模擬PID 調(diào)節(jié)器的控制結(jié)構(gòu)為[4]
式中:Kp,Ti和Td分別為比例系數(shù)、積分時(shí)間常數(shù)和微分時(shí)間常數(shù)[5]。
在數(shù)字化系統(tǒng)中,PID 控制器是通過(guò)編寫程序算法來(lái)實(shí)現(xiàn)的[6]。由于PLC 的中斷和運(yùn)算都具有相應(yīng)的周期,因此采樣信號(hào)無(wú)法做到完全連續(xù),在這種工業(yè)控制背景下,必須對(duì)計(jì)算式進(jìn)行離散化處理[7]。
由于PLC 中斷周期(即采樣周期)可以設(shè)置到100 ms 以內(nèi),因此可以將“積分”用“求和”算法實(shí)現(xiàn),微分用差商來(lái)計(jì)算,同時(shí)引入中斷周期Ts,將連續(xù)的PID 算法即式(1)離散化為差分方程,即
式中:u0為偏差為零時(shí)的初值。方程(2)等號(hào)右側(cè)的第1 項(xiàng)起比例控制作用, 第2 項(xiàng)起積分控制作用,第3 項(xiàng)起微分控制作用[8]。該算法需要對(duì)每個(gè)采樣周期的系統(tǒng)偏差e(j)(j=1,2,3,…,k)進(jìn)行存儲(chǔ),多有不便,故對(duì)式(2)進(jìn)行以下改進(jìn):
根據(jù)式(2)可得u(k-1)表達(dá)式,由u(k)和u(k-1)可知其增加量Δu(k)為
其中
增量式控制方式在計(jì)算過(guò)程中采用輸出增量累加的方式,因此對(duì)誤動(dòng)作影響小,該算式僅需要最近的3 個(gè)誤差采樣值e(k),e(k-1)和e(k-2),大大降低了編程過(guò)程中數(shù)據(jù)存儲(chǔ)的難度。
在基本PID 算法的基礎(chǔ)上,還引入了積分抗飽和算法、不完全微分控制算法2 種優(yōu)化策略。
在PID 控制中,引入積分環(huán)節(jié)主要是為了消除靜差[9]。但是,在階躍響應(yīng)初期階段,系統(tǒng)輸出偏差較大[10],積分累計(jì)效果明顯,會(huì)造成PID 控制器超調(diào),在參數(shù)配合不當(dāng)時(shí)甚至發(fā)生振蕩,對(duì)生產(chǎn)過(guò)程控制造成嚴(yán)重影響。
為控制積分累計(jì)效應(yīng),在PID 基礎(chǔ)算法中加入了抗積分飽和;根據(jù)被控對(duì)象的特點(diǎn)選擇合適的閥值,對(duì)于角執(zhí)行器、薄膜閥、風(fēng)門一類的控制對(duì)象,鑒于其開(kāi)度范圍在一個(gè)固定區(qū)間內(nèi),可以針對(duì)積分輸出進(jìn)行獨(dú)立的判斷,當(dāng)積分作用超出其閥值范圍時(shí),限制積分輸出,提高控制精度[11]。具體實(shí)現(xiàn)步驟如下:
步驟1根據(jù)不同控制對(duì)象的情況, 設(shè)定閾值范圍;
步驟2當(dāng)時(shí),限制I 的作用,以PD控制為主,使系統(tǒng)有較快的響應(yīng),同時(shí)又可以避免產(chǎn)生過(guò)大的超調(diào)[12];
步驟3當(dāng)時(shí), 引入I 參數(shù)控制輸出,以保證系統(tǒng)的控制精度[12]。
積分分離控制算法為
其中
式中:β 為積分項(xiàng)的開(kāi)關(guān)系數(shù)。
在PID 控制中微分信號(hào)可以改善系統(tǒng)的動(dòng)態(tài)性能,但也會(huì)引入高頻干擾[6]。為克服微分項(xiàng)在誤差擾動(dòng)突變時(shí)表現(xiàn)出的不足,可在PID 控制算法中加入一階慣性環(huán)節(jié)(低通濾波器)Gf(s)=1/(1+Tfs)[13],使系統(tǒng)性能得到進(jìn)一步改善。
經(jīng)不完全微分算法優(yōu)化后,PID 的結(jié)構(gòu)如圖2所示。其傳遞函數(shù)為
圖2 不完全微分算法結(jié)構(gòu)Fig.2 Structure of incomplete differential algorithms
將式(5)離散化為
設(shè)a=Tf/(Ts+Tf),則1-a=Ts/(Ts+Tf)。顯然a<1,(1-a)<1 成立, 與優(yōu)化前的PID 算法微分環(huán)節(jié)相比較,不完全微分算法增加了一項(xiàng)aud(k-1),由此使得原本的微分系數(shù)Kd變?yōu)镵d(1-a),轉(zhuǎn)化為增量式算法[14],即
基礎(chǔ)PID 算法經(jīng)過(guò)對(duì)積分輸出和微分項(xiàng)的優(yōu)化后,已初步具備消除靜差、抑制飽和及小幅抗干擾能力,能夠滿足一般控制的要求,且優(yōu)化改進(jìn)部分所增加的編程量不大,易于在底層PLC 中編程實(shí)現(xiàn)。
經(jīng)優(yōu)化后的PID 運(yùn)算算法如圖3所示。
圖3 PID 運(yùn)算算法框圖Fig.3 PID arithmetic block diagram
PLC 通過(guò)Profinet,PA 等自動(dòng)化總線方式,直接與現(xiàn)場(chǎng)的檢測(cè)器件與執(zhí)行機(jī)構(gòu)進(jìn)行通信,完成數(shù)據(jù)采集和發(fā)送,實(shí)現(xiàn)PID 控制。在生產(chǎn)現(xiàn)場(chǎng)所使用的西門子S7-300 上,通過(guò)編程語(yǔ)言使控制算法得以實(shí)現(xiàn)。其程序結(jié)構(gòu)如圖4所示。
圖4 PLC 算法結(jié)構(gòu)Fig.4 PLC algorithm structure
圖4中,OB35 為西門子PLC 定義的循環(huán)中斷執(zhí)行塊, 可以在CPU 的屬性中自行定義其中斷時(shí)間,綜合考慮PLC 的計(jì)算量和控制精度要求,實(shí)際組態(tài)過(guò)程將其設(shè)置為100 ms。改進(jìn)后的PID 基礎(chǔ)算法在FB600 中通過(guò)編程實(shí)現(xiàn),WinCC 提供的初始參數(shù)和模糊推理后的修正值均進(jìn)入PLC 的數(shù)據(jù)接口塊DB1 中,通過(guò)運(yùn)算得出實(shí)際控制參數(shù),并提供給FB600 用于過(guò)程控制,OB35 通過(guò)周期性地調(diào)用FB600,實(shí)現(xiàn)離散式PID 算法并對(duì)輸出量進(jìn)行實(shí)時(shí)有效的調(diào)節(jié)。
將輸入[e(k),ec(k)]及輸出(ΔKp,ΔTi,ΔTd)參數(shù)在模糊論域上均劃分為7 個(gè)模糊子集,分別對(duì)應(yīng)正向/負(fù)向偏差值較大(PB,NB),正向/負(fù)向具有中等偏差值(PM,NM),正向/負(fù)向偏差較小(NS,PS),以及偏差值趨近于零(ZO)[15]。
根據(jù)PID 調(diào)節(jié)過(guò)程的特點(diǎn),在誤差趨近于零的區(qū)域采用高分辨率的模糊集(三角形隸屬度函數(shù)),誤差較大的區(qū)域采用較低分辨率的模糊集(Z 型隸屬度函數(shù))[16],當(dāng)誤差較小和適中時(shí)分別采用用高斯和雙高斯型隸屬度函數(shù),使其分辨率相對(duì)適中。
在模糊控制器的設(shè)計(jì)過(guò)程中,主要基于誤差和控制量變化的大?。寒?dāng)誤差比較大時(shí),需通過(guò)控制量的修正, 使誤差的變化趨勢(shì)滿足迅速降低的需求;當(dāng)誤差相對(duì)較小時(shí),主要考慮的對(duì)象為系統(tǒng)穩(wěn)定性,在消除靜差的同時(shí)避免系統(tǒng)在調(diào)節(jié)過(guò)程中產(chǎn)生不必要的超調(diào)或震蕩[17]。
典型階躍響應(yīng)如圖5所示。當(dāng)響應(yīng)曲線位于區(qū)間1 時(shí),實(shí)際值PV 趨向設(shè)定值SP,此時(shí)e(k)>0,ec(k)<0;位于區(qū)間2 時(shí),實(shí)際值PV 遠(yuǎn)離設(shè)定值SP,此時(shí)e(k)<0,ec(k)<0;實(shí)際值PV 趨向設(shè)定值SP,此時(shí)e(k)<0,ec(k)>0;位于區(qū)間4 時(shí),實(shí)際值PV 遠(yuǎn)離設(shè)定值SP,此時(shí)e(k)>0,ec(k)>0;進(jìn)入?yún)^(qū)間5 后,與區(qū)間1 相同,在模糊規(guī)則制定時(shí),應(yīng)根據(jù)e(k),ec(k)的異號(hào)或同號(hào),對(duì)輸出值采取不同的策略。
圖5 階躍響應(yīng)Fig.5 Step response
根據(jù)階躍響應(yīng)的特性,ΔKp,ΔTi和ΔTd的變化趨勢(shì)還應(yīng)符合以下幾點(diǎn):
結(jié)合以上分析得出模糊變量,具體見(jiàn)表1?;谠撃:评頇C(jī)制并在文獻(xiàn)[17,18]的基礎(chǔ)上,對(duì)階躍下降的響應(yīng)做出優(yōu)化,以避免在輸出量下調(diào)過(guò)程中出現(xiàn)振蕩和超調(diào)。
表1 模糊規(guī)則Tab.1 Fuzzy rules
現(xiàn)場(chǎng)工業(yè)設(shè)備的主控PLC 為西門子SIMATIC S7-300/400 系列。在此PLC 選用315-2PN/DP,使用PS307 10A 作為電源模塊, 配置DI8/DO8 模塊、AI/AO 模塊作為輸入、輸出,采用通信模塊CP343-1 與上位機(jī)互聯(lián)。
PLC 組態(tài)及軟件編程系統(tǒng)采用TIA Portal V14版本, 人機(jī)界面的實(shí)現(xiàn)也基于TIA Portal V14 完成。底層PLC 程序開(kāi)發(fā)主要包括以下步驟:
步驟1使用TIA Portal V14 完成PLC 硬件組態(tài);
步驟2實(shí)現(xiàn)PLC 程序編寫;
步驟3組態(tài)HMI,實(shí)現(xiàn)PLC 與上位機(jī)的互聯(lián);
步驟4開(kāi)發(fā)人機(jī)界面,提供控制量與被控量的歷史趨勢(shì)監(jiān)視功能, 同時(shí)提供初始的Kp,Ti和Td的輸入接口,并顯示其修正后的實(shí)際值,以便于試驗(yàn)人員展開(kāi)調(diào)試。
由于PLC 編程難于處理復(fù)雜的模糊運(yùn)算,因此運(yùn)用Kepware 軟件建立OPC 服務(wù),通過(guò)Profinet 網(wǎng)絡(luò)在PLC 和上位機(jī)之間建立TCP/IP 連接, 實(shí)時(shí)采集PLC中計(jì)算的e(k)和ec(k),并將模糊運(yùn)算后的ΔKp,ΔTi和ΔTd值向PLC 中實(shí)時(shí)傳送。具體步驟如下:
步驟1在“Channel”上單擊右鍵,點(diǎn)選“New Device”, 選擇設(shè)備名稱、PLC 種類并設(shè)置IP 地址,其余配置按照默認(rèn)設(shè)置;
步驟2在新增的設(shè)備下單擊右鍵,選擇“New Tag”,鍵入變量名及其在PLC 中對(duì)應(yīng)的地址,這個(gè)地址可以是DB 塊中的地址, 或是PLC 內(nèi)部存儲(chǔ)空間,e(k),ec(k),ΔKp,ΔTi和ΔTd的數(shù)據(jù)類型均為“Float”;
步驟3所有變量的掃描時(shí)間均設(shè)置為100 ms,與PLC 中的PID 運(yùn)算塊中斷時(shí)間保持一致,從而保證了參數(shù)調(diào)節(jié)的時(shí)間同步性。
圖6 OPC 通信建立Fig.6 Establish OPC communication
運(yùn)用MatLab 中的模糊邏輯工具箱(Fuzzy logic Toolbox),簡(jiǎn)單直觀地實(shí)現(xiàn)模糊邏輯推理功能:
1)在MatLab 主界面命令窗口(Command Window)中鍵入“fuzzy”并回車,打開(kāi)模糊控制工具箱。
2)在“Edit”菜單下選擇“Add Variable”[19],添加Input 和Output,將輸入變量設(shè)置為2 個(gè),輸出變量設(shè)置為3 個(gè),并將變量名分別設(shè)置為e(k),ec(k),ΔKp,ΔTi和ΔTd。
3)點(diǎn)擊任意變量進(jìn)入隸屬度函數(shù)設(shè)置界面,刪除默認(rèn)的隸屬曲線,并在“Edit”菜單下選擇“Add MFs”,“Number of MFs”設(shè)置為7,分別對(duì)應(yīng)正向/負(fù)向偏差值較大(PB,NB),正向/負(fù)向具有中等偏差值(PM,NM),正向/負(fù)向偏差較?。∟S,PS),以及偏差值趨近于零(ZO)[20]。
4)7 種類型中,NB 和PB 選用Z 型/S 型隸屬度函數(shù),NM 和PM 選用雙高斯混合型函數(shù);NS 和PS選用高斯型函數(shù),ZO 選用三角形函數(shù),分布曲線如圖7所示。
圖7 隸屬度函數(shù)曲線Fig.7 Membership function curve
5)被控量的工作區(qū)間為0~80,系統(tǒng)延遲時(shí)間約5 s,通過(guò)堆棧計(jì)算模擬延時(shí),依照傳統(tǒng)方法[4,21]設(shè)置初始Kp,Ti和Td分別為0.1,8 和0.5;根據(jù)控制對(duì)象的特點(diǎn),設(shè)定:e(k)的論域?yàn)椋?80 80],ec(k)為[-8 8],ΔKp為[-5e-2 5e-2],ΔTi為[-5 5],ΔTd為[-0.1 0.1]。
6)根據(jù)表1所示數(shù)據(jù),在“Rule Editor”內(nèi)建立關(guān)于e(k),ec(k)和ΔKp,ΔTi,ΔTd之間的模糊規(guī)則,規(guī)則共計(jì)49 條,響應(yīng)曲面如圖8所示。
圖8 ΔKp,ΔTi 和ΔTd 的響應(yīng)曲面Fig.8 Response surfaces of ΔKp,ΔTi and ΔTd
采用階躍信號(hào)對(duì)系統(tǒng)展開(kāi)試驗(yàn),將設(shè)定值依次設(shè)定為80,20,60 和0,在HMI 畫面調(diào)取歷史趨勢(shì),并對(duì)比模糊判定參與前后的響應(yīng)效果。
針對(duì)圖9所示PID 控制器響應(yīng)曲線進(jìn)行比對(duì)分析。由圖可見(jiàn),相對(duì)于傳統(tǒng)PID 控制方式,模糊PID 自整定系統(tǒng)在總體控制效果上有明顯的提升。
如圖9a 所示,設(shè)定值由0 跳變至80 的過(guò)程中,傳統(tǒng)PID 控制的下調(diào)節(jié)時(shí)間為38 s, 輸出量的最大偏差達(dá)到了4.33,超調(diào)量5.41%;從80 調(diào)整到20 的過(guò)程中,傳統(tǒng)PID 控制的調(diào)節(jié)時(shí)間為37 s,最大偏差達(dá)到了-3.36,超調(diào)量16.8%。
圖9 PID 控制器的響應(yīng)效果Fig.9 Response effect of PID controller
相對(duì)應(yīng)的模糊PID 自整定系統(tǒng),如圖9b 所示,由0 調(diào)整到80 的過(guò)程中,調(diào)節(jié)時(shí)間為24 s,超調(diào)量趨近于0;從80 躍變至20 的過(guò)程中,調(diào)節(jié)時(shí)間為21 s,超調(diào)量趨近于0??梢?jiàn),當(dāng)誤差由PB/NB,向PM/NM和PS/NM 轉(zhuǎn)變過(guò)程中, 模糊控制系統(tǒng)通過(guò)減小Kp,提前結(jié)束控制率輸出飽和,抑制了超調(diào)量,在實(shí)際值接近設(shè)定值的同時(shí), 通過(guò)減小Ti強(qiáng)化積分作用,使靜差得以快速消除。
在PLC 中實(shí)現(xiàn)了PID 優(yōu)化算法, 并運(yùn)用MatLab實(shí)現(xiàn)了模糊運(yùn)算和判定功能,并將二者通過(guò)OPC 技術(shù)有機(jī)結(jié)合,實(shí)現(xiàn)了PID 參數(shù)實(shí)時(shí)在線式的模糊自整定。經(jīng)試驗(yàn)檢驗(yàn),該系統(tǒng)具有良好的輸出響應(yīng)效果。這一方案充分利用PLC 的輸出控制優(yōu)勢(shì)和上位機(jī)的復(fù)雜運(yùn)算能力,為在PLC 上應(yīng)用模糊運(yùn)算提供了一種有效的途徑, 降低了編程工作量。PLC 與OPC 技術(shù)的結(jié)合,可以將更多的控制理論和智能分析方法應(yīng)用于工程實(shí)踐中,為煙草加工過(guò)程實(shí)現(xiàn)復(fù)雜的控制策略提供了技術(shù)支撐。