蔡 鈞 段文偉 付俊杰 李平康
(北京交通大學(xué)機(jī)械與電子控制工程學(xué)院1,北京 100044;內(nèi)蒙古大唐國際托克托第二發(fā)電有限責(zé)任公司2,內(nèi)蒙古 托克托 010206)
分散控制系統(tǒng)(DCS)廣泛應(yīng)用于火電、化工等工業(yè)生產(chǎn)中,隨著人們對節(jié)能環(huán)保和生產(chǎn)效率方面要求的不斷提高,如何對DCS的功能進(jìn)行改進(jìn)與擴(kuò)展成為了新的研究方向。Matlab軟件有著強(qiáng)大的仿真與計算功能,且提供了許多現(xiàn)成的先進(jìn)控制算法工具箱,操作人員可以方便地進(jìn)行被控對象的建模與仿真。因此,實現(xiàn)DCS與Matlab的整合是對現(xiàn)有DCS進(jìn)行功能擴(kuò)展的較為理想的途徑。國電智深研制的EDPF-NT plus分散控制系統(tǒng)是國內(nèi)應(yīng)用較為廣泛的 DCS產(chǎn)品[1]。在直接調(diào)用組態(tài)軟件動態(tài)鏈接庫的基礎(chǔ)上,文獻(xiàn)[1]提出了利用OPC技術(shù)實現(xiàn)Matlab對這套DCS系統(tǒng)數(shù)據(jù)庫進(jìn)行讀取的方法。
本文研究了EDPF-NT plus系統(tǒng)以及Matlab軟件的通信特性,設(shè)計了兩者之間的雙向數(shù)據(jù)通信接口方案。同時,給出了利用這種通信接口方案,將Matlab模糊控制工具箱引入DCS系統(tǒng),實現(xiàn)汽包水位控制系統(tǒng)PID參數(shù)的模糊在線整定。
整個通信接口方案示意圖如圖1所示。
圖1 通信接口方案示意圖Fig.1 Diagram of communications interface solution
DCS與仿真優(yōu)化計算機(jī)的數(shù)據(jù)通信建立在DCS自帶通信接口的基礎(chǔ)上,避免了對DCS系統(tǒng)運(yùn)行的獨(dú)立性和可靠性的影響。EDPF-NT plus系統(tǒng)的接口站以用戶數(shù)據(jù)報協(xié)議(user datagram protocol,UDP)的形式對外發(fā)送DCS測點(diǎn)的實時信息,同時在DCS組態(tài)中建立COM通信模塊,通過Modbus通信協(xié)議讀取外部設(shè)備中的數(shù)據(jù)。整個通信接口方案的硬件部分由仿真優(yōu)化計算機(jī)、EDPF-NT plus系統(tǒng)(配有接口站以及COM模塊)、路由器、網(wǎng)線以及雙絞線組成。Matlab具有良好的擴(kuò)展性,但對于Modbus和UDP通信協(xié)議軟件只提供了串口對象以及UDP對象的創(chuàng)建函數(shù)。為了實現(xiàn)數(shù)據(jù)的接收與發(fā)送,還需要編寫Matlab環(huán)境下的通信客戶端程序。
用戶數(shù)據(jù)報協(xié)議UDP是一種簡單的面向數(shù)據(jù)報的傳輸層協(xié)議。由于只負(fù)責(zé)將數(shù)據(jù)在網(wǎng)絡(luò)上進(jìn)行發(fā)送而無需客戶端做出應(yīng)答,因此UDP協(xié)議的傳輸速度較快[2],可以及時地將DCS中的測點(diǎn)實時數(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é)議有ASCII模式和RTU模式兩種數(shù)據(jù)傳輸方式,EDPF-NT plus系統(tǒng)的COM通信模塊采用的是后者。
UDP報文的結(jié)構(gòu)一般由頭部與數(shù)據(jù)區(qū)兩部分組成。在EDPF-NT plus系統(tǒng)中,頭部固定16 B,依次為:域號、站號、字節(jié)數(shù)、數(shù)據(jù)包類型、數(shù)據(jù)包時間、數(shù)據(jù)包中測點(diǎn)個數(shù)和點(diǎn)名列表文件版本號。數(shù)據(jù)區(qū)中,每個測點(diǎn)信息占用12 B,最多包含100個測點(diǎn),即最大長度為1 200 B。
在EDPF-NT plus系統(tǒng)中實現(xiàn)UDP數(shù)據(jù)包發(fā)送需要先通過EDPF-NT plus系統(tǒng)接口站運(yùn)行目錄configmmi下的配置文件dip.ini,對客戶端數(shù)量、IP地址以及最長發(fā)送間隔進(jìn)行設(shè)置。設(shè)置完成后,將待發(fā)送測點(diǎn)的列表文件dip_pnt.csv存放在同一個目錄下。然后啟動接口站,待發(fā)送測點(diǎn)的信息就會以UDP數(shù)據(jù)包的形式發(fā)送到指定IP地址。
Matlab軟件提供了UDP對象的創(chuàng)建函數(shù),本文在此基礎(chǔ)上根據(jù)EDPF-NT plus系統(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ù)默認(rèn)為十進(jìn)制,而DCS發(fā)送來的測點(diǎn)實時值是32位浮點(diǎn)數(shù)。因此,還需要加入一段將十進(jìn)制數(shù)轉(zhuǎn)化為浮點(diǎn)數(shù)的程序,才能正確讀取DCS測點(diǎn)實時值。程序的原理是先將每個十進(jìn)制數(shù)轉(zhuǎn)化為8位二進(jìn)制數(shù),不足8位的用0補(bǔ)足;然后將4個8位二進(jìn)制數(shù)連接成1個32位二進(jìn)制數(shù)并通過數(shù)字編碼器轉(zhuǎn)化為浮點(diǎn)數(shù)。數(shù)據(jù)轉(zhuǎn)換的主要程序為:bin=strcat(bin1,bin2,bin3,bin4);q=quantizer(‘float’,[32 8]);out=bin2num(q,bin)。其中bin1、bin2、bin3、bin4 是4個8位二進(jìn)制數(shù)。
Modbus的數(shù)據(jù)幀由頭部、數(shù)據(jù)區(qū)以及校驗碼組成。從站設(shè)備產(chǎn)生回應(yīng)數(shù)據(jù)幀中的功能代碼與主站發(fā)送的功能代碼保持一致,數(shù)據(jù)區(qū)則存放主站設(shè)備請求的數(shù)據(jù),幀尾的校驗碼用于判斷網(wǎng)絡(luò)傳輸是否正確[3]。
以DCS系統(tǒng)的COM模塊為主站設(shè)備,運(yùn)行Matlab軟件的計算機(jī)為從站設(shè)備,選取Modbus功能碼03(讀取從站設(shè)備保持寄存器中的數(shù)據(jù)),實現(xiàn)DCS系統(tǒng)從Matlab軟件中獲取數(shù)據(jù)的功能。由于EDPF-NT plus系統(tǒng)的COM通信模塊本身就支持Modbus通信協(xié)議,所以只需用Windows中的超級終端設(shè)置模塊通信口的參數(shù)、建立通信任務(wù)列表,COM通信模塊就能開始工作[4]。Matlab端的Modbus通信程序?qū)崿F(xiàn)了創(chuàng)建串口對象并進(jìn)行數(shù)據(jù)幀讀取、識別主站請求、計算校驗碼、生成并發(fā)送回應(yīng)數(shù)據(jù)幀。創(chuàng)建串口對象的主要語句為[5]:s=serial(‘COM1’,‘Baudrate’,9 600,‘DataBits’,8,‘StopBits’,1,‘Parity’,‘none’,‘FlowControl’,‘none’)
汽包給水控制回路是火力發(fā)電廠DCS系統(tǒng)中非常重要的控制回路,保證鍋爐汽包的正常水位是汽包鍋爐和汽輪機(jī)安全運(yùn)行的重要條件之一。汽包水位受到蒸汽流量、給水流量、汽包壓力、溫度和燃燒工況等多個參數(shù)的影響,是具有多變量、大滯后強(qiáng)耦合及非線性的對象,且系統(tǒng)參數(shù)具有時變性,難以建立精確的數(shù)學(xué)模型。應(yīng)用傳統(tǒng)方法整定的PID控制器在負(fù)荷變動等動態(tài)的情形下難以實現(xiàn)比較好的控制效果[6]。
模糊控制算法是一種對被控對象的非線性適應(yīng)性好、魯棒性較強(qiáng)的控制算法。在DCS汽包水位控制系統(tǒng)中引入模糊控制算法,在線整定PID控制器的參數(shù)能夠改善控制系統(tǒng)的動態(tài)性能,同時不影響系統(tǒng)的穩(wěn)態(tài)精度[7]。利用本文提出的通信方案,將Matlab中提供的Fuzzy工具箱與EDPF-NT plus分散控制系統(tǒng)相結(jié)合,可以方便地實現(xiàn)DCS汽包水位控制系統(tǒng)PID參數(shù)的在線模糊整定。
在DCS汽包水位串級3沖量控制組態(tài)的基礎(chǔ)上,通過與Matlab軟件的通信引入了一個二維模糊控制器[8],對主回路中PID控制器的參數(shù)進(jìn)行在線整定。模糊控制器的輸入變量為水位的偏差e以及偏差變化率ec,輸出為PID控制器3個控制參數(shù)的偏置值Δkp、Δki、Δkd。當(dāng)水位的偏差e以及偏差變化率ec隨著工況不同而變化時,模糊控制器輸出PID參數(shù)的偏置值Δkp、Δki、Δkd,對原 PID 參數(shù)進(jìn)行在線整定,從而改善汽包水位控制系統(tǒng)的動態(tài)性能。
模糊自整定PID汽包水位控制系統(tǒng)的結(jié)構(gòu)如圖2所示。
圖2 控制系統(tǒng)結(jié)構(gòu)圖Fig.2 Structure diagram of control system
各個量的模糊集均為{NB,NM,NS,ZO,PS,PM,PB},分別表示“負(fù)大”,“負(fù)中”,“負(fù)小”,“零”,“正小”,“正中”,“正大”,論域為|e|和|ec|。Δkp={ -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ī)則表此處略[9]。
為了保證數(shù)據(jù)通信以及模糊運(yùn)算的實時性,在Matlab程序中采用2個定時器對通信程序和模糊控制器進(jìn)行定時調(diào)用。定時器創(chuàng)建命令為:
tp=timer(‘TimerFcn’,{@timerCallback1,handles.text_p,handles.text_s,handles.text_fsetting,handles.text_domain,handles.text_drop,handles.axes1},‘ExecutionMode’,‘fixedDelay’,‘Period’,0.5);
其中‘Period’參數(shù)是計時器的周期,即通信程序調(diào)用的周期。DCS一般的采樣周期是1 s,本文將通信周期設(shè)為0.5 s,保證了DCS數(shù)據(jù)的實時獲取。程序流程圖如圖3所示。
圖3 程序流程圖Fig.3 Flowchart of the program
針對給水流量作用下汽包水位傳遞函數(shù)[10]和蒸汽流量作用下汽包水位傳遞函數(shù),選取采樣時間為0.1 s,采用模糊在線整定PID控制器對水位系統(tǒng)進(jìn)行控制,其實現(xiàn)過程介紹如下。
①在使用EDPF-NT plus分散控制系統(tǒng)的某火電廠DCS汽包水位控制組態(tài)中添加PID參數(shù)偏置量測點(diǎn)并作為變參數(shù)調(diào)節(jié)的PID控制器算法模塊的輸入。
②設(shè)置DCS中接口站和COM模塊的通信參數(shù)。
③打開Matlab端的GUI界面,完成通信參數(shù)的設(shè)置后,界面中將會顯示汽包水位相關(guān)測點(diǎn)的實時值以及汽包水位的實時趨勢曲線。
④ 單擊“開始優(yōu)化”按鈕,Matlab將會運(yùn)行PID參數(shù)模糊整定程序,在 GUI界面中顯示 Δkp、Δki、Δkd的實時值。此時,工作狀態(tài)一欄將顯示“優(yōu)化中”,但這只表示Matlab中的模糊控制器正在運(yùn)行,要將模糊整定得到的參數(shù)應(yīng)用于實際PID控制器還需要在DCS過程畫面中進(jìn)行操作。
⑤打開DCS的工程師站PID參數(shù)優(yōu)化窗口,能夠觀察到汽包水位趨勢曲線以及PID參數(shù)的初始值和優(yōu)化值。單擊“開始模糊優(yōu)化”按鈕,將出現(xiàn)10 s的操作確認(rèn)窗口,確認(rèn)之后優(yōu)化狀態(tài)一欄將顯示綠底色的“模糊優(yōu)化”字樣,表明此時汽包水位控制主回路中的PID控制器已采用模糊整定之后的優(yōu)化值。若要停止優(yōu)化,則單擊“停止模糊優(yōu)化按鈕”并進(jìn)行操作確認(rèn),此時狀態(tài)欄顯示“優(yōu)化停止”。
本文提出的EDPF-NT plus分散控制系統(tǒng)與Matlab軟件的通信方案具有易于實現(xiàn)、不影響DCS系統(tǒng)運(yùn)行的獨(dú)立性和可靠性的特點(diǎn)。基于Modbus和UDP通信協(xié)議的數(shù)據(jù)通信接口方案在數(shù)據(jù)通信過程中無需對DCS內(nèi)部數(shù)據(jù)庫進(jìn)行操作,可保證DCS運(yùn)行的獨(dú)立性與可靠性。建立的DCS與Matlab軟件之間的實時數(shù)據(jù)連接,為改進(jìn)和擴(kuò)展現(xiàn)有DCS系統(tǒng)的功能提供了新的思路。
[1]張潔浩,李平康.基于OPC技術(shù)的控制系統(tǒng)PID參數(shù)優(yōu)化[J].自動化儀表,2009,30(11):54 -56,60.
[2]王金東.基于UDP通信的感應(yīng)電機(jī)調(diào)速方法研究[D].北京:北京交通大學(xué),2009.
[3]曹祁,王曉萍,郭振武.Modbus協(xié)議在數(shù)據(jù)采集儀中的實現(xiàn)[J].機(jī)電工程,2004,21(6):49 -50.
[4]杜秀霞,張偉,李平康.基于DCS與MATLAB的車輛傳動系統(tǒng)仿真平臺數(shù)據(jù)通信的實現(xiàn)[J].測控技術(shù),2008,27(7):67 -68,71.
[5]王明偉,李茜,湯偉.基于MATLAB串口通信的數(shù)據(jù)采集系統(tǒng)的設(shè)計[J].微計算機(jī)信息,2005,21(8-1):89 -90.
[6]Xu Min,Li Shaoyuan,Cai Wenjian.Cascade generalized predictive control strategy for boiler drum level[J].ISA transactions,2005,44(3):399 -411.
[7]羅獵勇.模糊-PID在工業(yè)鍋爐汽包水位控制中的應(yīng)用[J].計算機(jī)應(yīng)用與軟件,2009,26(1):200 -202.
[8]張國良,曾靜,柯熙政,等.模糊控制及其Matlab應(yīng)用[M].西安:西安交通大學(xué)出版社,2002:79 -84.
[9]Li Pingkang,Irwin G W,Kruger U.A recursive rule base adjustment algorithm for a fuzzy logic controller[J].Fuzzy Sets and Systems,2005,156(2):267 -284.
[10]海山.鍋爐汽包水位的智能控制研究[D].內(nèi)蒙古:內(nèi)蒙古大學(xué),2008.