馬淼森,董 澤,何國松,楊 碩,蘇子凡
(1.華北電力大學自動化系,河北 保定 071003;2.河北省發(fā)電過程仿真與優(yōu)化控制技術(shù)創(chuàng)新中心,河北 保定 071003)
分散控制系統(tǒng)(Distributed Control System,DCS)是一種基于通信網(wǎng)絡的多級計算機系統(tǒng),由過程監(jiān)控級與過程控制級組成,基本理念是集中操作、分散控制[1]。隨著經(jīng)濟不斷發(fā)展,工業(yè)控制系統(tǒng)應滿足不斷提高的標準,不僅要實現(xiàn)常規(guī)實時控制,還要朝著節(jié)能、高效的方向發(fā)展。優(yōu)化控制系統(tǒng)是在分散控制系統(tǒng)的基礎上設計的擁有先進控制仿真算法的輔助式外掛系統(tǒng)。在確?,F(xiàn)場正常生產(chǎn)不受影響的前提下,優(yōu)化控制系統(tǒng)通過獲取DCS 中的數(shù)據(jù),采用先進算法進行優(yōu)化計算后,將計算結(jié)果返回DCS,從而實現(xiàn)對DCS 控制的優(yōu)化[2]。優(yōu)化算法的先進程度直接決定了優(yōu)化控制系統(tǒng)的優(yōu)化效率,通過引入先進的算法容器,可以極大地提高優(yōu)化效率,既保證了系統(tǒng)的安全性,又對節(jié)能、環(huán)保具有深遠影響。
DCS 與優(yōu)化控制系統(tǒng)運行在不同的主機上,兩個系統(tǒng)之間的數(shù)據(jù)通信是實現(xiàn)優(yōu)化控制的前提?;趽碛凶灾髦R產(chǎn)權(quán)的優(yōu)化控制系統(tǒng),開發(fā)了一套運行在DCS 主機側(cè),對DCS 數(shù)據(jù)庫的數(shù)據(jù)具有讀取與寫入功能并且可以通過網(wǎng)絡與優(yōu)化控制系統(tǒng)的虛擬優(yōu)化控制站進行通信的數(shù)據(jù)接口與平臺軟件,并進行通信測試。測試結(jié)果可實現(xiàn)數(shù)據(jù)的跨平臺獲取及傳輸,驗證了數(shù)據(jù)接口與通信平臺軟件的有效性。
優(yōu)化控制系統(tǒng)一方面可以用于常規(guī)DCS 的實時控制,另一方面還能結(jié)合先進控制理論對原DCS的生產(chǎn)數(shù)據(jù)進行處理與優(yōu)化運算,提高控制效率。
優(yōu)化控制平臺運行在win10 系統(tǒng)的主機中,負責完成數(shù)據(jù)庫組態(tài)、控制邏輯組態(tài)以及監(jiān)控畫面管理等功能。虛擬優(yōu)化控制站運行在Server 2012 系統(tǒng)的服務器中,負責完成數(shù)據(jù)計算、上下位交互以及現(xiàn)場通信等功能。優(yōu)化控制平臺與虛擬優(yōu)化控制站相互配合,完成對DCS 的控制優(yōu)化。
優(yōu)化控制平臺與虛擬優(yōu)化控制站通過局域網(wǎng)進行數(shù)據(jù)交互,包含文件下裝、數(shù)據(jù)廣播和在線命令下發(fā)三部分,每部分采用不同的報文格式和通信協(xié)議。優(yōu)化控制平臺完成數(shù)據(jù)庫組態(tài)和控制邏輯組態(tài)后,通過文件傳輸協(xié)議 (File Transfer Protocol,F(xiàn)TP)將文件下發(fā)到虛擬優(yōu)化控制站。虛擬優(yōu)化控制站作為模塊運算的核心部分,在運行過程中,將實時運算結(jié)果和關(guān)鍵數(shù)據(jù)值通過用戶數(shù)據(jù)報協(xié)議(User Datagram Protocol,UDP) 廣播給優(yōu)化控制平臺?,F(xiàn)場操作人員在線修改模塊參數(shù)、強制數(shù)據(jù)庫數(shù)據(jù)點值和下發(fā)操作命令時,優(yōu)化控制平臺采用傳輸控制協(xié)議 (Transmission Control Protocol,TCP)將報文下發(fā)給虛擬優(yōu)化控制站。
虛擬優(yōu)化控制站通過使用MODBUS、OPC 等通信協(xié)議從DCS 獲取數(shù)據(jù),并將數(shù)據(jù)傳入優(yōu)化控制平臺數(shù)據(jù)庫。優(yōu)化控制系統(tǒng)結(jié)構(gòu)與通信如圖1所示。
圖1 優(yōu)化控制系統(tǒng)結(jié)構(gòu)和通信實現(xiàn)方式
DCS 由操作員站、工程師站、過程控制站、服務器、OPC 服務器組成??刂普続 與A+下掛載了COM卡件,支持485 串口。OPC 服務器可以實現(xiàn)與第三方設備的數(shù)據(jù)交互。DCS 操作員站和工程師站用于完成組態(tài)與監(jiān)控。優(yōu)化控制系統(tǒng)由優(yōu)化控制平臺與虛擬優(yōu)化控制站組成,其中虛擬優(yōu)化控制站的運算程序運行在服務器B 與B+上,歷史庫程序運行在DCS的OPC 服務器中。A、B 網(wǎng)互為冗余,DCS 與優(yōu)化控制系統(tǒng)連到A、B 網(wǎng)上,實現(xiàn)兩個系統(tǒng)內(nèi)部各自的信息交互通信。系統(tǒng)組成及布置結(jié)構(gòu)如圖2 所示。
圖2 系統(tǒng)布置結(jié)構(gòu)
DCS 中的數(shù)據(jù)存儲在實時數(shù)據(jù)庫中,通過調(diào)用數(shù)據(jù)接口訪問數(shù)據(jù)庫獲取數(shù)據(jù)值,并使用UDP 通信傳送給各進程,實現(xiàn)數(shù)據(jù)共享。
為保證訪問DCS 數(shù)據(jù)庫數(shù)據(jù)接口的通用性和開放性,采用C++語言的編譯機制將接口封裝成動態(tài)鏈接庫 (Dynamic Link Library,DLL) 文件的形式,其他進程通過調(diào)用DLL 文件,實現(xiàn)對數(shù)據(jù)庫數(shù)據(jù)點的讀取與寫入功能。動態(tài)鏈接庫實現(xiàn)了不同程序之間的函數(shù)共享,通常DLL 文件都不能直接運行,也不能接收消息,只有在其他程序調(diào)用DLL中的函數(shù)時才能發(fā)揮作用,其他程序可直接加載DLL 中的函數(shù),但不會將函數(shù)的實現(xiàn)過程對外暴露。動態(tài)鏈接庫具有節(jié)省空間、訪問安全、便于二次開發(fā)等優(yōu)點[3]。
UDP 是面向無連接的協(xié)議,在通信過程中能最大程度地進行數(shù)據(jù)交付。由于沒有擁塞控制,網(wǎng)絡擁塞不會影響源主機的發(fā)送速率,傳輸速度快,適合傳送大批量的數(shù)據(jù),保證數(shù)據(jù)傳輸?shù)膶崟r性。
DCS 數(shù)據(jù)庫中的數(shù)據(jù)點有唯一標識的點名。點名是一個string 類型的字符串,通過點名找到該數(shù)據(jù)點在內(nèi)存中的地址,從該地址讀取或者寫入相應的數(shù)據(jù)點的實時值。為了加快尋找數(shù)據(jù)點地址的速度,使用C++標準庫容器中的關(guān)聯(lián)容器Map 建立了點名與地址之間的關(guān)聯(lián)。
Map 是C++標準庫中提供的一種把鍵對象和值對象進行關(guān)聯(lián)的容器,可以提供一對一的數(shù)據(jù)處理能力[4]。在實現(xiàn)數(shù)據(jù)接口的過程中,Map 容器以點名作為鍵對象,數(shù)據(jù)點內(nèi)存地址作為值對象,在底層實現(xiàn)中采用紅黑樹的形式進行排序和存儲,紅黑樹這種數(shù)據(jù)結(jié)構(gòu)可以提高查找的速度,尤其適合本文中DCS 這種數(shù)據(jù)量龐大,數(shù)據(jù)交互頻繁的系統(tǒng)[5]。點名與Map 容器的結(jié)合組成了通信接口的數(shù)據(jù)結(jié)構(gòu),既提高了函數(shù)的執(zhí)行速度,又保證了數(shù)據(jù)的開放性和可擴展性。
數(shù)據(jù)接口實現(xiàn)了連接數(shù)據(jù)庫、批量注冊點名、批量注銷點名、批量讀取數(shù)據(jù)點值、批量寫入數(shù)據(jù)點值五種函數(shù)功能。五種函數(shù)名及功能如表1 所示。
表1 數(shù)據(jù)接口提供的5 種函數(shù)
通信平臺軟件與DCS 的監(jiān)控軟件運行在同一臺主機,優(yōu)化控制系統(tǒng)的虛擬優(yōu)化控制站運行在另一臺服務器主機,通信平臺軟件作為DCS 與優(yōu)化控制系統(tǒng)之間數(shù)據(jù)交互的通信橋梁,起著至關(guān)重要的作用。
通信平臺軟件作為一個獨立運行的進程,具有獨立的內(nèi)存單元,是對運行時程序的封裝,不受其他進程的影響,同時軟件內(nèi)部采用了多線程技術(shù),開辟了多個線程用于數(shù)據(jù)的接收與發(fā)送,保證了程序的實時性,實現(xiàn)了進程內(nèi)部的并發(fā),并且多個線程可以共享進程的內(nèi)存,使線程間的同步和通信更加容易實現(xiàn)[6]。通信平臺軟件調(diào)用通信接口函數(shù)實現(xiàn)對DCS數(shù)據(jù)庫的初始化、數(shù)據(jù)的讀寫注冊以及數(shù)值的讀取與寫入操作,采用UDP 協(xié)議與優(yōu)化控制系統(tǒng)的虛擬優(yōu)化控制站完成文件打包發(fā)送、數(shù)據(jù)交互等操作。UDP 報文格式中包含了特定的報文、報尾、報文長度、數(shù)據(jù)點數(shù)量及數(shù)值等信息,當接收方收到數(shù)據(jù)包后會向發(fā)送方發(fā)送應答報文,若發(fā)送方未收到應答報文會重新發(fā)送之前的數(shù)據(jù)包,從而保證通信的可靠性。各部分通信結(jié)構(gòu)如圖3 所示。
圖3 通信結(jié)構(gòu)
通信平臺軟件是在win10 操作系統(tǒng)上基于微軟提供的Visual Studio 2017 開發(fā)平臺使用C++語言在微軟基礎類庫(Microsoft Foundation Classes,MFC)框架下進行的設計與開發(fā)。通過調(diào)用數(shù)據(jù)接口動態(tài)鏈接庫實現(xiàn)通信平臺軟件與DCS 之間的數(shù)據(jù)交互,使用基于UDP 的進程間的網(wǎng)絡通信方式實現(xiàn)通信平臺軟件與虛擬優(yōu)化控制站間的數(shù)據(jù)交互。
優(yōu)化控制平臺數(shù)據(jù)庫增加了一類特殊的通信數(shù)據(jù)點類型用于實現(xiàn)與通信平臺軟件進行數(shù)據(jù)交互,該類型數(shù)據(jù)點在組態(tài)時應與現(xiàn)場DCS 數(shù)據(jù)庫中需要通信的數(shù)據(jù)點相匹配,數(shù)據(jù)庫文件組態(tài)完畢后下裝到虛擬優(yōu)化控制站中,優(yōu)化控制站采用UDP 將數(shù)據(jù)庫中該類卡件的數(shù)據(jù)點打包發(fā)送到通信平臺軟件。通信平臺軟件完成數(shù)據(jù)點注冊后,開辟通信線程,完成優(yōu)化控制系統(tǒng)與DCS 系統(tǒng)之間數(shù)據(jù)的接收與發(fā)送,并且將實時值顯示在窗口列表中,在完成通信后注銷數(shù)據(jù)點結(jié)束通信進程。通信平臺軟件程序執(zhí)行流程如圖4 所示。
圖4 通信平臺軟件程序執(zhí)行流程
圖5 優(yōu)化控制系統(tǒng)數(shù)據(jù)庫組態(tài)界面
為了驗證通信平臺軟件和數(shù)據(jù)接口的有效性,依據(jù)DCS 系統(tǒng)數(shù)據(jù)庫中提供的數(shù)據(jù)點進行組態(tài),在優(yōu)化控制系統(tǒng)數(shù)據(jù)庫中添加了專用類型數(shù)據(jù)點進行通信。采用爐膛溫度測點進行測試,對點名為520_W2_MA 和415_N1_MA 兩個數(shù)據(jù)點進行通信測試。優(yōu)化控制系統(tǒng)數(shù)據(jù)庫組態(tài)如圖5 所示。DCS 系統(tǒng)數(shù)據(jù)點值如圖6、圖7 所示。通信平臺軟件界面如圖8 所示。通信測試驗證了DCS 與優(yōu)化控制系統(tǒng)可通過通信平臺軟件成功進行了數(shù)據(jù)交互,實現(xiàn)了數(shù)據(jù)的跨平臺共享。
圖6 DCS 系統(tǒng)520_W2_MA 數(shù)據(jù)點值
圖7 DCS 系統(tǒng)415_N1_MA 數(shù)據(jù)點值
圖8 通信平臺軟件界面
基于優(yōu)化控制系統(tǒng)設計了一套通信平臺及對外數(shù)據(jù)接口軟件用于與DCS 進行數(shù)據(jù)交互。通信平臺軟件通過使用數(shù)據(jù)接口從DCS 數(shù)據(jù)庫讀取和寫入數(shù)據(jù)并且使用基于UDP 協(xié)議的網(wǎng)絡通信將實時值傳到優(yōu)化控制系統(tǒng)的控制站中。結(jié)果表明,通信平臺軟件可以通過數(shù)據(jù)接口實現(xiàn)與DCS 系統(tǒng)的數(shù)據(jù)交互及與優(yōu)化控制系統(tǒng)的數(shù)據(jù)共享。通信平臺軟件作為一個獨立的進程,不會依賴和影響原系統(tǒng)的運行,有效地增強了控制系統(tǒng)的開放性,為控制系統(tǒng)的可擴展能力提供了幫助。