摘要:本文以EDPF-NTPlus分散控制系統(tǒng)為實例,提出了一種DCS與外部系統(tǒng)的數(shù)據(jù)通信接口方案。該方案基于Modbus和UDP通信協(xié)議,建立了DCS與Matlab軟件之間的實時數(shù)據(jù)連接。數(shù)據(jù)通信過程中無需對DCS內(nèi)部數(shù)據(jù)庫進行操作,保證了DCS運行的獨立性與可靠性。給出了將Matlab模糊控制工具箱引入DCS的方法,實現(xiàn)汽包水位控制系統(tǒng)PID參數(shù)的在線模糊整定。該通信接口方案為
DCS過程控制仿真與優(yōu)化提供了新的思路。
引言
分散控制系統(tǒng)(DCS)廣泛應(yīng)用于火電、化工等工業(yè)生產(chǎn)中,隨著人們對節(jié)能環(huán)保和生產(chǎn)效率方面要求的不斷提高,如何對DCS的功能進行改進與擴展成為了新的研究方向。Matlab軟件有著強大的仿真與計算功能,且提供了許多現(xiàn)成的*控制算法工具箱,操作人員可以方便地進行被控對象的建模與仿真。因此,實現(xiàn)DCS與Matlab的整合是對現(xiàn)有DCS進行功能擴展的較為理想的途徑。國電智深研制的EDPF-NTplus分散控制系統(tǒng)是國內(nèi)應(yīng)用較為廣泛的DCS產(chǎn)品。在直接調(diào)用組態(tài)軟件動態(tài)鏈接庫的基礎(chǔ)上,文獻提出了利用OPC技術(shù)實現(xiàn)Matlab對這套DCS系統(tǒng)數(shù)據(jù)庫進行讀取的方法。
本文研究了EDPF-NTplus系統(tǒng)以及Matlab軟件的通信特性,設(shè)計了兩者之間的雙向數(shù)據(jù)通信接口方案。同時,給出了利用這種通信接口方案,將Matlab模糊控制工具箱引入DCS系統(tǒng),實現(xiàn)汽包水位控制系統(tǒng)PID參數(shù)的模糊在線整定。
一、系統(tǒng)通信實現(xiàn)
1.1通信接口方案
整個通信接口方案示意圖如圖1所示。
DCS與仿真優(yōu)化計算機的數(shù)據(jù)通信建立在DCS自帶通信接口的基礎(chǔ)上,避免了對DCS系統(tǒng)運行的獨立性和可靠性的影響。EDPF-NTplus系統(tǒng)的接口站以用戶數(shù)據(jù)報協(xié)議(userdatagramprotocol,UDP)的形式對外發(fā)送DCS測點的實時信息,同時在DCS組態(tài)中建立COM通信模塊,通過Modbus通信協(xié)議讀取外部設(shè)備中的數(shù)據(jù)。整個通信接口方案的硬件部分由仿真優(yōu)化計算機、EDPF-NTplus系統(tǒng)(配有接口站以及COM模塊)、路由器、網(wǎng)線以及雙絞線組成。Matlab具有良好的擴展性,但對于Modbus和UDP通信協(xié)議軟件只提供了串口對象以及UDP對象的創(chuàng)建函數(shù)。為了實現(xiàn)數(shù)據(jù)的接收與發(fā)送,還需要編寫Matlab環(huán)境下的通信客戶端程序。
1.2通信協(xié)議簡介
用戶數(shù)據(jù)報協(xié)議UDP是一種簡單的面向數(shù)據(jù)報的傳輸層協(xié)議。由于只負責(zé)將數(shù)據(jù)在網(wǎng)絡(luò)上進行發(fā)送而無需客戶端做出應(yīng)答,因此UDP協(xié)議的傳輸速度較快,可以及時地將DCS中的測點實時數(shù)據(jù)發(fā)送到Matlab軟件中。
Modbus協(xié)議是一種可靠而有效的通用串行通信協(xié)議,它由Modicon公司于1979年提出,現(xiàn)已成為工業(yè)領(lǐng)域通信協(xié)議標(biāo)準(zhǔn),是工業(yè)電子設(shè)備之間常用的連接方式。其通信采用主從方式,通過查詢/回應(yīng)的方式實現(xiàn)數(shù)據(jù)的傳輸。Modbus協(xié)議有ASCⅡ模式和RTU模式兩種數(shù)據(jù)傳輸方式,EDPF-NTplus系統(tǒng)的COM通信模塊采用的是后者。
1.3UDP通信的實現(xiàn)
UDP報文的結(jié)構(gòu)一般由頭部與數(shù)據(jù)區(qū)兩部分組成。在EDPF-NTplus系統(tǒng)中,頭部固定16B,依次為:域號、站號、字節(jié)數(shù)、數(shù)據(jù)包類型、數(shù)據(jù)包時間、數(shù)據(jù)包中測點個數(shù)和點名列表文件版本號。數(shù)據(jù)區(qū)中,每個測點信息占用12B,zui多包含100個測點,即zui大長度為1200B。
在EDPF-NTplus系統(tǒng)中實現(xiàn)UDP數(shù)據(jù)包發(fā)送需要先通過EDPF-NTplus系統(tǒng)接口站運行目錄\config\mmi下的配置文件dip.ini,對客戶端數(shù)量、lP地址以及zui長發(fā)送間隔進行設(shè)置。設(shè)置完成后,將待發(fā)送測點的列表文件d中pnt.csv存放在同一個目錄下。然后啟動接口站,待發(fā)送測點的信息就會以UDP數(shù)據(jù)包的形式發(fā)送到IP地址。
Matlab軟件提供了UDP對象的創(chuàng)建函數(shù),本文在此基礎(chǔ)上根據(jù)EDPF-NTplus系統(tǒng)發(fā)送的UDP數(shù)據(jù)包格式編寫了數(shù)據(jù)讀取程序,并將得到的數(shù)據(jù)存入工作空間以便其他程序調(diào)用。創(chuàng)建UDP對象的命令為:udpB=udp(ipA,portA,‘LocalPort’,portB),其中ipA和PortA分別為DCS系統(tǒng)接口站的IP地址及端口號,PortB為本地端口號。
由于在Matlab中通過UDP對象直接讀取的數(shù)據(jù)默認為十進制,而DCS發(fā)送來的測點實時值是咒位浮點數(shù)。因此,還需要加入一段將十進制數(shù)轉(zhuǎn)化為浮點數(shù)的程序,才能正確讀取DCS測點實時值。程序的原理是先將每個十進制數(shù)轉(zhuǎn)化為8位二進制數(shù),不足8位的用0補足;然后將4個8位二進制數(shù)連接成1個32位二進制數(shù)并通過數(shù)字編碼器轉(zhuǎn)化為浮點數(shù)。數(shù)據(jù)轉(zhuǎn)換的主要程序為:bin=strcat(bin1,bin2,bin3,bin4);q=quantizer(‘float',[328]);out=bin2num(q,bin)。其中bin1、bin2、bin3、bin4是4個8位二進制數(shù)。
1.4Modbus
通信的實現(xiàn)Modbus的數(shù)據(jù)幀由頭部、數(shù)據(jù)區(qū)以及校驗碼組成。從站設(shè)備產(chǎn)生回應(yīng)數(shù)據(jù)幀中的功能代碼與主站發(fā)送的功能代碼保持一致,數(shù)據(jù)區(qū)則存放主站設(shè)備請求的數(shù)據(jù),幀尾的校驗碼用于判斷網(wǎng)絡(luò)傳輸是否正確。
以DCS系統(tǒng)的COM模塊為主站設(shè)備,運行Matlab軟件的計算機為從站設(shè)備,選取Modbus功能碼03(讀取從站設(shè)備保持寄存器中的數(shù)據(jù)),實現(xiàn)DCS系統(tǒng)從Matlab軟件中獲取數(shù)據(jù)的功能。由于EDPF-NTplus系統(tǒng)的COM通信模塊本身就支持Modbus通信協(xié)議,所以只需用Windows中的超級終端設(shè)置模塊通信口的參數(shù)、建立通信任務(wù)列表,COM通信模塊就能開始工作。Matlab端的Modbus通信程序?qū)崿F(xiàn)了創(chuàng)建串口對象并進行數(shù)據(jù)幀讀取、識別主站請求、計算校驗碼、生成并發(fā)送回應(yīng)數(shù)據(jù)幀。創(chuàng)建串口對象的主要語句為:s=serial(‘COMI',‘Baudrate’,9600,‘DataBits',8,‘StopBits',l,‘Parity’,‘none',‘FlowControl',‘none')。
二、汽包水位模糊PID控制實現(xiàn)
2.1汽包水位控制系統(tǒng)描述
汽包給水控制回路是火力發(fā)電廠DCS系統(tǒng)中非常重要的控制回路,保證鍋爐汽包的正常水位是汽包鍋爐和汽輪機安全運行的重要條件之一。汽包水位受到蒸汽流量、給水流量、汽包壓力、溫度和燃燒工況等多個參數(shù)的影響,是具有多變量、大滯后強藕合及非線性的對象,且系統(tǒng)參數(shù)具有時變性,難以建立的數(shù)學(xué)模型。應(yīng)用傳統(tǒng)方法整定的PID控制器在負荷變動等動態(tài)的情形下難以實現(xiàn)比較好的控制效果。
模糊控制算法是一種對被控對象的非線性適應(yīng)性好、魯棒性較強的控制算法。在DCS汽包水位控制系統(tǒng)中引入模糊控制算法,在線整定PID控制器的參數(shù)能夠改善控制系統(tǒng)的動態(tài)性能,同時不影響系統(tǒng)的穩(wěn)態(tài)精度叫。利用本文提出的通信方案,將Matlab中提供的Fuzzy工具箱與EDPF-NTplus分散控制系統(tǒng)相結(jié)合,可以方便地實現(xiàn)DCS汽包水位控制系統(tǒng)PID參數(shù)的在線模糊整定。
2.2PID參數(shù)的在線模糊整定
在DCS汽包水位串級3沖量控制組態(tài)的基礎(chǔ)上,通過與Matlab軟件的通信引入了一個二維模糊控制器,對主回路中PID控制器的參數(shù)進行在線整定。模糊控制器的輸入變量為水位的偏差。以及偏差變化率ec,輸出為PID控制器3個控制參數(shù)的偏置值△kp、△ki、△kd。當(dāng)水位的偏差e以及偏差變化率ec隨著工況不同而變化時,模糊控制器輸出PID參數(shù)的偏置值△kp、△ki、△kd對原PID參數(shù)進行在線整定,從而改善汽包水位控制系統(tǒng)的動態(tài)性能。
模糊自整定PID汽包水位控制系統(tǒng)的結(jié)構(gòu)如圖2所示。
各個量的模糊集均為{NB,NM,NS,ZS,PS,PM,PB},分別表示“負大”,“負中”,“負小”,“零”,“正小”,“正中”,“正大”,論域為|e|和|ec|?!鱧p={-3,-2,-1,0,1,2,3,},△ki={-0.6,一0.4,一0.2,0,0.2,0.4,0.6},△kd={一3,一2,一1,0,1,2,3,}。建立|e|、|ec|與△kp、△ki、△kd之間的模糊關(guān)系規(guī)則表此處省略。
為了保證數(shù)據(jù)通信以及模糊運算的實時性,在Matlab程序中采用2個定時器對通信程序和模糊控制器進行定時調(diào)用。定時器創(chuàng)建命令為:
tp=timer(‘TimerFcn’,{@timerCallback1,han-dles.text_p,handles.text_s,handles.text_fsetting,han-dles.text_domain,handles.text_drop,handles.axes1},‘ExecutionMode',‘fixedDelay',‘Period',0.5);
其中‘Period’參數(shù)是計時器的周期,即通信程序調(diào)用的周期。DCS一般的采樣周期是1s,本文將通信周期設(shè)為0.5s,保證了DCS數(shù)據(jù)的實時獲取。程序流程圖如圖3所示。
2.3數(shù)據(jù)通信試驗
針對給水流量作用下汽包水位傳遞函數(shù)和蒸汽流量作用下汽包水位傳遞函數(shù),選取采樣時間為0.1s,采用模糊在線整定PID控制器對水位系統(tǒng)進行控制,其實現(xiàn)過程介紹如下。
?、僭谑褂肊DPF-NTplus分散控制系統(tǒng)的某火電廠DCS汽包水位控制組態(tài)中添加PID參數(shù)偏置量測點并作為變參數(shù)調(diào)節(jié)的PID控制器算法模塊的輸入。
②設(shè)置DCS中接口站和COM模塊的通信參數(shù)。
?、鄞蜷_Matlab端的GUI界面,完成通信參數(shù)的設(shè)置后,界面中將會顯示汽包水位相關(guān)測點的實時值以及汽包水位的實時趨勢曲線。
④單擊“開始優(yōu)化”按鈕,Matlab將會運行PID參數(shù)模糊整定程序,在GUI界面中顯示△kp、△ki、△kd的實時值。此時,工作狀態(tài)一欄將顯示“優(yōu)化中”,但這只表示Matlab中的模糊控制器正在運行,要將模糊整定得到的參數(shù)應(yīng)用于實際PID控制器還需要在DCS過程畫面中進行操作。
⑤打開DCS的工程師站PID參數(shù)優(yōu)化窗口,能夠觀察到汽包水位趨勢曲線以及PID參數(shù)的初始值和優(yōu)化值。單擊“開始模糊優(yōu)化”按鈕,將出現(xiàn)10s的操作確認窗口,確認之后優(yōu)化狀態(tài)一欄將顯示綠底色的“模糊優(yōu)化”字樣,表明此時汽包水位控制主回路中的PID控制器已采用模糊整定之后的優(yōu)化值。若要停止優(yōu)化,則單擊“停止模糊優(yōu)化按鈕”并進行操作確認,此時狀態(tài)欄顯示“優(yōu)化停止”。
三、結(jié)束語
本文提出的EDPF-NTplus分散控制系統(tǒng)與Matlab軟件的通信方案具有易于實現(xiàn)、不影響DCS系統(tǒng)運行的獨立性和可靠性的特點?;贛odbus和UDP通信協(xié)議的數(shù)據(jù)通信接口方案在數(shù)據(jù)通信過程中無需對DCS內(nèi)部數(shù)據(jù)庫進行操作,可保證DCS運行的獨立性與可靠性。建立的DCS與Matlab軟件之間的實時數(shù)據(jù)連接,為改進和擴展現(xiàn)有DCS系統(tǒng)的功能提供了新的思路。