蔡 鈞 段文偉 付俊杰 李平康
(北京交通大學機械與電子控制工程學院1,北京 100044;內蒙古大唐國際托克托第二發電有限責任公司2,內蒙古 托克托 010206)
分散控制系統(DCS)廣泛應用于火電、化工等工業生產中,隨著人們對節能環保和生產效率方面要求的不斷提高,如何對DCS的功能進行改進與擴展成為了新的研究方向。Matlab軟件有著強大的仿真與計算功能,且提供了許多現成的先進控制算法工具箱,操作人員可以方便地進行被控對象的建模與仿真。因此,實現DCS與Matlab的整合是對現有DCS進行功能擴展的較為理想的途徑。國電智深研制的EDPF-NT plus分散控制系統是國內應用較為廣泛的 DCS產品[1]。在直接調用組態軟件動態鏈接庫的基礎上,文獻[1]提出了利用OPC技術實現Matlab對這套DCS系統數據庫進行讀取的方法。
本文研究了EDPF-NT plus系統以及Matlab軟件的通信特性,設計了兩者之間的雙向數據通信接口方案。同時,給出了利用這種通信接口方案,將Matlab模糊控制工具箱引入DCS系統,實現汽包水位控制系統PID參數的模糊在線整定。
整個通信接口方案示意圖如圖1所示。

圖1 通信接口方案示意圖Fig.1 Diagram of communications interface solution
DCS與仿真優化計算機的數據通信建立在DCS自帶通信接口的基礎上,避免了對DCS系統運行的獨立性和可靠性的影響。EDPF-NT plus系統的接口站以用戶數據報協議(user datagram protocol,UDP)的形式對外發送DCS測點的實時信息,同時在DCS組態中建立COM通信模塊,通過Modbus通信協議讀取外部設備中的數據。整個通信接口方案的硬件部分由仿真優化計算機、EDPF-NT plus系統(配有接口站以及COM模塊)、路由器、網線以及雙絞線組成。Matlab具有良好的擴展性,但對于Modbus和UDP通信協議軟件只提供了串口對象以及UDP對象的創建函數。為了實現數據的接收與發送,還需要編寫Matlab環境下的通信客戶端程序。
用戶數據報協議UDP是一種簡單的面向數據報的傳輸層協議。由于只負責將數據在網絡上進行發送而無需客戶端做出應答,因此UDP協議的傳輸速度較快[2],可以及時地將DCS中的測點實時數據發送到Matlab軟件中。
Modbus協議是一種可靠而有效的通用串行通信協議,它由Modicon公司于1979年提出,現已成為工業領域通信協議標準,是工業電子設備之間常用的連接方式。其通信采用主從方式,通過查詢/回應的方式實現數據的傳輸。Modbus協議有ASCII模式和RTU模式兩種數據傳輸方式,EDPF-NT plus系統的COM通信模塊采用的是后者。
UDP報文的結構一般由頭部與數據區兩部分組成。在EDPF-NT plus系統中,頭部固定16 B,依次為:域號、站號、字節數、數據包類型、數據包時間、數據包中測點個數和點名列表文件版本號。數據區中,每個測點信息占用12 B,最多包含100個測點,即最大長度為1 200 B。
在EDPF-NT plus系統中實現UDP數據包發送需要先通過EDPF-NT plus系統接口站運行目錄configmmi下的配置文件dip.ini,對客戶端數量、IP地址以及最長發送間隔進行設置。設置完成后,將待發送測點的列表文件dip_pnt.csv存放在同一個目錄下。然后啟動接口站,待發送測點的信息就會以UDP數據包的形式發送到指定IP地址。
Matlab軟件提供了UDP對象的創建函數,本文在此基礎上根據EDPF-NT plus系統發送的UDP數據包格式編寫了數據讀取程序,并將得到的數據存入工作空間以便其他程序調用。創建UDP對象的命令為:udpB=udp(ipA,portA,‘LocalPort’,portB),其中 ipA和portA分別為DCS系統接口站的IP地址及端口號,portB為本地端口號。
由于在Matlab中通過UDP對象直接讀取的數據默認為十進制,而DCS發送來的測點實時值是32位浮點數。因此,還需要加入一段將十進制數轉化為浮點數的程序,才能正確讀取DCS測點實時值。程序的原理是先將每個十進制數轉化為8位二進制數,不足8位的用0補足;然后將4個8位二進制數連接成1個32位二進制數并通過數字編碼器轉化為浮點數。數據轉換的主要程序為:bin=strcat(bin1,bin2,bin3,bin4);q=quantizer(‘float’,[32 8]);out=bin2num(q,bin)。其中bin1、bin2、bin3、bin4 是4個8位二進制數。
Modbus的數據幀由頭部、數據區以及校驗碼組成。從站設備產生回應數據幀中的功能代碼與主站發送的功能代碼保持一致,數據區則存放主站設備請求的數據,幀尾的校驗碼用于判斷網絡傳輸是否正確[3]。
以DCS系統的COM模塊為主站設備,運行Matlab軟件的計算機為從站設備,選取Modbus功能碼03(讀取從站設備保持寄存器中的數據),實現DCS系統從Matlab軟件中獲取數據的功能。由于EDPF-NT plus系統的COM通信模塊本身就支持Modbus通信協議,所以只需用Windows中的超級終端設置模塊通信口的參數、建立通信任務列表,COM通信模塊就能開始工作[4]。Matlab端的Modbus通信程序實現了創建串口對象并進行數據幀讀取、識別主站請求、計算校驗碼、生成并發送回應數據幀。創建串口對象的主要語句為[5]:s=serial(‘COM1’,‘Baudrate’,9 600,‘DataBits’,8,‘StopBits’,1,‘Parity’,‘none’,‘FlowControl’,‘none’)
汽包給水控制回路是火力發電廠DCS系統中非常重要的控制回路,保證鍋爐汽包的正常水位是汽包鍋爐和汽輪機安全運行的重要條件之一。汽包水位受到蒸汽流量、給水流量、汽包壓力、溫度和燃燒工況等多個參數的影響,是具有多變量、大滯后強耦合及非線性的對象,且系統參數具有時變性,難以建立精確的數學模型。應用傳統方法整定的PID控制器在負荷變動等動態的情形下難以實現比較好的控制效果[6]。
模糊控制算法是一種對被控對象的非線性適應性好、魯棒性較強的控制算法。在DCS汽包水位控制系統中引入模糊控制算法,在線整定PID控制器的參數能夠改善控制系統的動態性能,同時不影響系統的穩態精度[7]。利用本文提出的通信方案,將Matlab中提供的Fuzzy工具箱與EDPF-NT plus分散控制系統相結合,可以方便地實現DCS汽包水位控制系統PID參數的在線模糊整定。
在DCS汽包水位串級3沖量控制組態的基礎上,通過與Matlab軟件的通信引入了一個二維模糊控制器[8],對主回路中PID控制器的參數進行在線整定。模糊控制器的輸入變量為水位的偏差e以及偏差變化率ec,輸出為PID控制器3個控制參數的偏置值Δkp、Δki、Δkd。當水位的偏差e以及偏差變化率ec隨著工況不同而變化時,模糊控制器輸出PID參數的偏置值Δkp、Δki、Δkd,對原 PID 參數進行在線整定,從而改善汽包水位控制系統的動態性能。
模糊自整定PID汽包水位控制系統的結構如圖2所示。

圖2 控制系統結構圖Fig.2 Structure diagram of control system
各個量的模糊集均為{NB,NM,NS,ZO,PS,PM,PB},分別表示“負大”,“負中”,“負小”,“零”,“正小”,“正中”,“正大”,論域為|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之間的模糊關系規則表此處略[9]。
為了保證數據通信以及模糊運算的實時性,在Matlab程序中采用2個定時器對通信程序和模糊控制器進行定時調用。定時器創建命令為:
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’參數是計時器的周期,即通信程序調用的周期。DCS一般的采樣周期是1 s,本文將通信周期設為0.5 s,保證了DCS數據的實時獲取。程序流程圖如圖3所示。

圖3 程序流程圖Fig.3 Flowchart of the program
針對給水流量作用下汽包水位傳遞函數[10]和蒸汽流量作用下汽包水位傳遞函數,選取采樣時間為0.1 s,采用模糊在線整定PID控制器對水位系統進行控制,其實現過程介紹如下。
①在使用EDPF-NT plus分散控制系統的某火電廠DCS汽包水位控制組態中添加PID參數偏置量測點并作為變參數調節的PID控制器算法模塊的輸入。
②設置DCS中接口站和COM模塊的通信參數。
③打開Matlab端的GUI界面,完成通信參數的設置后,界面中將會顯示汽包水位相關測點的實時值以及汽包水位的實時趨勢曲線。
④ 單擊“開始優化”按鈕,Matlab將會運行PID參數模糊整定程序,在 GUI界面中顯示 Δkp、Δki、Δkd的實時值。此時,工作狀態一欄將顯示“優化中”,但這只表示Matlab中的模糊控制器正在運行,要將模糊整定得到的參數應用于實際PID控制器還需要在DCS過程畫面中進行操作。
⑤打開DCS的工程師站PID參數優化窗口,能夠觀察到汽包水位趨勢曲線以及PID參數的初始值和優化值。單擊“開始模糊優化”按鈕,將出現10 s的操作確認窗口,確認之后優化狀態一欄將顯示綠底色的“模糊優化”字樣,表明此時汽包水位控制主回路中的PID控制器已采用模糊整定之后的優化值。若要停止優化,則單擊“停止模糊優化按鈕”并進行操作確認,此時狀態欄顯示“優化停止”。
本文提出的EDPF-NT plus分散控制系統與Matlab軟件的通信方案具有易于實現、不影響DCS系統運行的獨立性和可靠性的特點。基于Modbus和UDP通信協議的數據通信接口方案在數據通信過程中無需對DCS內部數據庫進行操作,可保證DCS運行的獨立性與可靠性。建立的DCS與Matlab軟件之間的實時數據連接,為改進和擴展現有DCS系統的功能提供了新的思路。
[1]張潔浩,李平康.基于OPC技術的控制系統PID參數優化[J].自動化儀表,2009,30(11):54 -56,60.
[2]王金東.基于UDP通信的感應電機調速方法研究[D].北京:北京交通大學,2009.
[3]曹祁,王曉萍,郭振武.Modbus協議在數據采集儀中的實現[J].機電工程,2004,21(6):49 -50.
[4]杜秀霞,張偉,李平康.基于DCS與MATLAB的車輛傳動系統仿真平臺數據通信的實現[J].測控技術,2008,27(7):67 -68,71.
[5]王明偉,李茜,湯偉.基于MATLAB串口通信的數據采集系統的設計[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在工業鍋爐汽包水位控制中的應用[J].計算機應用與軟件,2009,26(1):200 -202.
[8]張國良,曾靜,柯熙政,等.模糊控制及其Matlab應用[M].西安:西安交通大學出版社,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].內蒙古:內蒙古大學,2008.