田彬,陸會明,周金龍
(1.國能智深控制技術(shù)有限公司,北京,102211;2.華北電力大學(xué)控制與計算機工程學(xué)院,北京,102206)
EDPF-NT+平臺是國產(chǎn)DCS 系統(tǒng)之一,是由國能智深控制技術(shù)有限公司研發(fā)并推出應(yīng)用的先進DCS 控制系統(tǒng)。系統(tǒng)內(nèi)的硬件設(shè)備如操作員站、工程師站等通過高速局域網(wǎng)進行連接,方便各設(shè)備之間的數(shù)據(jù)傳遞與共享。其中系統(tǒng)網(wǎng)絡(luò)連接MMI 站形成的人機界面和現(xiàn)場控制單元等節(jié)點,從而進行數(shù)據(jù)的高效雙向傳輸;控制網(wǎng)絡(luò)用于連接控制機柜內(nèi)部的各個I/O 模塊與DPU,屬于控制站內(nèi)部網(wǎng)絡(luò),通信速率為2Mb/s。I/O 與現(xiàn)場信號線纜連接,可以對現(xiàn)場數(shù)據(jù)進行采集,過程中對數(shù)據(jù)進行處理,還可以對現(xiàn)場設(shè)備進行驅(qū)動。各個I/O 模塊可以通過控制網(wǎng)與DPU 進行連接,實現(xiàn)分布式控制。由國能智深控制技術(shù)有限公司研發(fā)的EDPF-NT+DCS 分散控制系統(tǒng)已在工業(yè)各領(lǐng)域中得到廣泛應(yīng)用,尤其是火電行業(yè)。隨著系統(tǒng)應(yīng)用范圍的擴大和電站的智能化發(fā)展,帶來越來越多與第三方研發(fā)、仿真系統(tǒng)通訊的需求 。為了方便在Matlab 上開發(fā)電站過程系統(tǒng)控制算法,需要建立Matlab 與DCS 系統(tǒng)之間的聯(lián)系,實現(xiàn)兩者的實時通訊。本文以EDPF-NT+平臺為例,通過UDP 通訊接收DCS 中的數(shù)據(jù)并解析,從而獲取電站過程系統(tǒng)各項測點的數(shù)據(jù)與狀態(tài)信息,為開發(fā)智能控制算法奠基。
(1)UDP 是無連接的傳輸層協(xié)議,數(shù)據(jù)傳輸是單向的,在進行數(shù)據(jù)傳輸前不需要與接收方建立通訊連接,通訊結(jié)束時也沒有連接可釋放,因此減少了開銷和發(fā)送數(shù)據(jù)之前的延時時間。雖然可靠性有所降低,但是實時性卻大大提高。不同于TCP/IP 通信需進行多次握手,UDP 協(xié)議不保證可靠交付,基于UDP 協(xié)議的通訊主機不需要維護復(fù)雜的連接狀態(tài)。
(2)UDP 協(xié)議是面向報文的。應(yīng)用程序須選擇合適長度的報文。如果報文長度太長,UDP 協(xié)議在把它交給 IP 層后,IP 層會在傳送數(shù)據(jù)時進行分片處理,從而導(dǎo)致IP 層的效率降低;如果報文長度太短,UDP 把它交付給 IP 層后,也會產(chǎn)生 IP 層數(shù)據(jù)報的首部相對于整個數(shù)據(jù)報的長度太大的問題,這也會降低 IP 層的工作效率。
(3)UDP 不會建立復(fù)雜的交互連接,也沒有阻塞、數(shù)據(jù)丟失等情況的應(yīng)對機制。因此網(wǎng)絡(luò)出現(xiàn)擁塞、數(shù)據(jù)在傳輸過程中發(fā)生丟失等情況并不會使數(shù)據(jù)發(fā)送方的發(fā)送速率降低。這對某些實時應(yīng)用場景是很重要的。很多的實時應(yīng)用例如語音電話、視頻會議等,要求發(fā)送方主機以恒定的速率發(fā)送數(shù)據(jù),并且允許在數(shù)據(jù)傳輸出現(xiàn)問題時丟失一部分數(shù)據(jù),但卻不允許數(shù)據(jù)有太大的時延。UDP 協(xié)議丟失一部分數(shù)據(jù)并不影響其他數(shù)據(jù)發(fā)送的特點,正好符合這種實時通訊的要求。
(4)由于UDP 通訊協(xié)議無須建立連接,只需監(jiān)視特定的端口即可,因此可以實現(xiàn)一對一、多對一、一對多和多對多的交互通信、多方通訊。
Matlab 支持多種與外部設(shè)備的數(shù)據(jù)通信方法,以便收集和反饋數(shù)據(jù)。Matlab 中包含的儀表控制工具箱提供了一系列的可用于實現(xiàn)與外部設(shè)備的UDP 數(shù)據(jù)通信的函數(shù)以及Simulink 模塊。其中包括了創(chuàng)建UDP 接口對象的udp 函數(shù)。Matlab 具有強大的擴展性,為了實現(xiàn)數(shù)據(jù)的接收與發(fā)送,需要利用串口對象和UDP 對象來編寫Matlab 環(huán)境下的通信接口程序 。
為了安全地實現(xiàn)Matlab 軟件與EDPF-NT+DCS 系統(tǒng)之間的實時數(shù)據(jù)通信,在Matlab 軟件與DCS 之間使用的通信協(xié)議必須遵循外部系統(tǒng)與DCS 系統(tǒng)的數(shù)據(jù)通信要求。UDP 通信協(xié)議可以用于從DCS 到Matlab 的單方向數(shù)據(jù)通信傳輸。由于是單向通訊,不會操作組態(tài)軟件內(nèi)部文件,因此在通信過程中不會影響到DCS 系統(tǒng)運行的獨立性和可靠性。
EDPF-NT +系統(tǒng)的數(shù)據(jù)通信基于網(wǎng)絡(luò)技術(shù),通過交換機完成各控制器與人機交互計算機之間的通訊,屬于星形網(wǎng)絡(luò)結(jié)構(gòu)。該通訊方案還通過EDPF-NT+系統(tǒng)的局域網(wǎng)實現(xiàn)了仿真優(yōu)化計算機與DCS 系統(tǒng)之間的數(shù)據(jù)通訊。在DCS 系統(tǒng)中,工程師站內(nèi)建立了虛擬分散控制器及卡件,負責(zé)從Matlab 中接收數(shù)據(jù)。該通信方式成本較低,且通信測點數(shù)不會受到硬件的影響。
EDPF-NT+分散控制系統(tǒng)吸收了眾多DCS 產(chǎn)品的先進思想,各部分功能相對獨立,分為多個工作站。其中數(shù)據(jù)通訊是工程師站的功能之一。DCS 的基本信息是通過數(shù)據(jù)點測得的,數(shù)據(jù)點也是DCS 的基本數(shù)據(jù)單元,數(shù)據(jù)點的信息包括描述、名字等靜態(tài)信息和狀態(tài)、數(shù)值等實時信息,包含了模擬點,開關(guān)點,GP 點三種類型。而數(shù)據(jù)包是數(shù)據(jù)傳輸?shù)幕締卧?,?shù)據(jù)是以數(shù)據(jù)包的形式進行發(fā)送的,數(shù)據(jù)包中存放了每個點的點編號、數(shù)值和狀態(tài)等信息。為了數(shù)據(jù)通訊的安全、高效進行,EDPF-NT+DCS 系統(tǒng)有一套自己的數(shù)據(jù)通訊規(guī)范。
接口站根據(jù)預(yù)先定義的點列表文件,根據(jù)點列表文件中規(guī)定的周期定期讀取DCS 系統(tǒng)中各點的實時信息并打包發(fā)送給數(shù)據(jù)接收端,點的實時信息包括點的數(shù)值和狀態(tài)。接口站與數(shù)據(jù)接收方之間的通信方式為單方向的通訊,數(shù)據(jù)接收方和DCS 之間還設(shè)有安全隔離裝置用來保證DCS 系統(tǒng)的安全。這樣就實現(xiàn)了接口站定期地向預(yù)先指定的端口發(fā)送數(shù)據(jù)包,而數(shù)據(jù)接收方只用負責(zé)接收數(shù)據(jù)包即可,不必向接口站返回任何應(yīng)答信息。
接口程序工作時的輸入數(shù)據(jù)包含點列表文件和配置文件,其中接口程序是依據(jù)點列表文件對外發(fā)送數(shù)據(jù)的,配置文件則用于規(guī)定數(shù)據(jù)接收方的端口、IP 等信息。
2.2.1 點列表文件
接口站程序是基于點列表文件來進行數(shù)據(jù)的接收的,點列表文件會給出對應(yīng)發(fā)送端的點的名稱、編號、規(guī)定的接收周期、類型等信息。點列表文件的內(nèi)容分為點的基本信息和注釋信息,用于說明點的數(shù)據(jù)類型、要求。
點列表文件是CSV 格式,一般數(shù)據(jù)量較為龐大,通常每一條點的信息包括點名、編號、發(fā)送周期、點類型四部分。點列表文件的格式如表1 所示。
表1 點列表文件格式
■2.2.2 配置文件
配置文件規(guī)定了數(shù)據(jù)接收方的設(shè)備要求,包括每個設(shè)備的超時時間、本地IP、端口號等。
配置文件格式如圖1 所示。
圖1 配置文件格式
[general]表示數(shù)據(jù)接收設(shè)備的個數(shù),Devcnt 為客戶端個數(shù),默認值為1;[device1]為設(shè)備1 的配置信息,Timeout 為點接收數(shù)據(jù)的超時時間,單位s,超過該時間未收到發(fā)送端數(shù)據(jù),點品質(zhì)會自動置壞。
IP 地址是本地接收數(shù)據(jù)的IP 地址,端口號port 需與數(shù)據(jù)發(fā)送方端口號一致。
EDPF-NT+DCS 系統(tǒng)與Matlab 之間的數(shù)據(jù)是通過數(shù)據(jù)包的方式發(fā)送的。每個數(shù)據(jù)包最多有100 個點,每個點長度為12 字節(jié)。數(shù)據(jù)包的內(nèi)容包含頭部和數(shù)據(jù)區(qū)。其中數(shù)據(jù)包頭部長度為16 字節(jié),字段順序依次為:域號、站號、字節(jié)序、數(shù)據(jù)包的類型、數(shù)據(jù)包時間、該數(shù)據(jù)包中點的個數(shù)、點名列表文件的版本號。這些字段的順序和長度在每個數(shù)據(jù)包中都是嚴格規(guī)定的。而數(shù)據(jù)區(qū)最大可達1200 個字節(jié)。每個數(shù)據(jù)包里的點都具有相同的周期,允許各種類型的點混合存放。
數(shù)據(jù)包格式說明如表2 所示。
表2 數(shù)據(jù)包格式
站點的集合稱為域,一個電站系統(tǒng)有無數(shù)的測點,包含多個域,每個域都會有一個唯一確定的域號,且域內(nèi)包含了許多個站,每個站也都有一個域內(nèi)唯一確定的站號,但不同域內(nèi)可能存在編號相同的站。因此通過域號和站號可以在龐大的數(shù)據(jù)測點中唯一定位到某一特定站。
數(shù)據(jù)包時間的秒是時間戳,表示的是從1970 年01 月01 日到數(shù)據(jù)發(fā)送時刻為止整個過程經(jīng)歷的時間;不同的點名列表文件版本有不同的規(guī)范,故點名列表文件版本號可用于判斷點名列表是否改變。
數(shù)據(jù)包的數(shù)據(jù)區(qū)包含點的編號和實時信息,每個點的信息長度為12 字節(jié),最多包含100 個數(shù)據(jù)點,因此最大長度為1200 字節(jié),每個點的信息按順序存放,依次為長度4 字節(jié)的點編號、長度2 字節(jié)的狀態(tài)字1、長度2 字節(jié)的狀態(tài)字2、長度4 字節(jié)的數(shù)值。數(shù)據(jù)包中存放的點的類型包括模擬點、開關(guān)點、打包點三種,其中不同類型的數(shù)據(jù)點的數(shù)據(jù)的類型、存放方式、含義也各不相同,接收方在解析數(shù)據(jù)時,需要先解析出數(shù)據(jù)包中該點的點編號,利用點編號從點列表文件中查找出該點的類型,再根據(jù)不同點的類型采用與之對應(yīng)的數(shù)據(jù)解析方式 。不同類型的點數(shù)值定義規(guī)則如下:
模擬點(AP):數(shù)值是4 個字節(jié)的浮點數(shù),代表該模擬點的數(shù)值信息。
開關(guān)點(DP):數(shù)值是4 個字節(jié)的整型數(shù)據(jù),代表該開關(guān)點的數(shù)值信息。
打包點(GP):總共4 個字節(jié),包括2 個無符號短整型,包含數(shù)值和強制標(biāo)志。
由于數(shù)據(jù)包中的數(shù)據(jù)都是以二進制的形式存放,且正負數(shù)首位的差異在轉(zhuǎn)換過程中容易引起混淆,因此需要編寫一個數(shù)據(jù)轉(zhuǎn)換函數(shù),作用是將任意截取二進制數(shù)據(jù)片段轉(zhuǎn)換為十進制數(shù)值進而輸出,以使輸出數(shù)據(jù)更加直觀。
根據(jù)EDPF-NT+平臺數(shù)據(jù)包規(guī)范,分別從數(shù)據(jù)包截取域號、站號、時間(秒)、時間(毫秒)、數(shù)據(jù)包點個數(shù)、版本號和數(shù)據(jù)包,并將其轉(zhuǎn)換為十進制形式的數(shù)據(jù)信息。
根據(jù)EDPF-NT+平臺數(shù)據(jù)包規(guī)范,分別從數(shù)據(jù)包截取點編號、狀態(tài)字1、狀態(tài)字2,并根據(jù)點編號在點列表中查找點的類型,根據(jù)點的類型選擇不同的數(shù)值解析方式來將其轉(zhuǎn)換為十進制形式的數(shù)值信息。
根據(jù)EDPF-NT+平臺數(shù)據(jù)包規(guī)范,狀態(tài)字1 的8,9 號位代表了點品質(zhì)的好壞。8,9 位為00 代表品質(zhì)Good,01代表品質(zhì)Fair,10 代表品質(zhì)Poor,11 代表品質(zhì)Bad,因此該部分則通過判斷狀態(tài)字1 的8,9 號位的數(shù)據(jù)來設(shè)置每個點的品質(zhì)。
接口站程序運行時涉及點列表文件、配置文件、日志文件和接口站接收程序。日志文件是用來記錄接口站程序運行過程中的基本信息狀態(tài)以及接口站程序在執(zhí)行過程中出現(xiàn)的錯誤信息,以便工作人員尋找問題和解決問題。每條日志記錄信息包括日志發(fā)生時間和具體信息兩部分,能夠很好地定位運行中出現(xiàn)的錯誤并解釋原因。運行接口站程序,程序啟動后會自動讀取配置文件及點列表文件,進行程序初始化。程序初始化成功后,會監(jiān)視指定的端口從而接收來自發(fā)送端的數(shù)據(jù)。程序會把收到的數(shù)值和狀態(tài)分別更新到MMI上對應(yīng)的點上。接口站程序會基于點名列表文件的內(nèi)容對這些數(shù)據(jù)進行解析,并根據(jù)點名列表文件所規(guī)定的每個點的發(fā)送周期,周期性地讀取 DCS 系統(tǒng)中點的實時信息,然后打包通過網(wǎng)絡(luò)以數(shù)據(jù)包的形式發(fā)送給Matlab 端。
運行Matlab 端接口程序,創(chuàng)建UDP 對象并實時接收來自接口站的信息。測試結(jié)果如圖2 所示。
圖2 測試結(jié)果
成功接收到EDPF-NT+發(fā)送過來的數(shù)據(jù)包并解析。
分散控制系統(tǒng)(DCS)廣泛運用于國內(nèi)外各大電廠,它采用分散控制、集中管理的基本設(shè)計思想,采用多層分級、合作自治的組織架構(gòu),目前在冶金、化工、造紙尤其是電力等工業(yè)領(lǐng)域都獲得了極其廣泛的實踐,為實現(xiàn)工業(yè)的無人化、自動化控制作出了巨大貢獻。Matlab 軟件是工程領(lǐng)域的著名計算與仿真軟件,在數(shù)值分析、控制算法、控制系統(tǒng)設(shè)計與仿真、數(shù)據(jù)顯示等方面有著強大的功能和廣泛的應(yīng)用。UDP 協(xié)議的簡單方便和實時性,使其廣泛運用于自動控制、儀器儀表、傳感檢測、實時通訊等領(lǐng)域。通過UDP通訊將Matlab 與DCS 系統(tǒng)相結(jié)合,為研究者進行硬件控制、數(shù)據(jù)分析及算法優(yōu)化提供了新的方法,消除了軟件切換帶來的困難,提高了開發(fā)和仿真效率,促進了電站的智能化發(fā)展。
本文以EDPF-NT+平臺為例詳細介紹了Matlab 與DCS系統(tǒng)UDP 實時通訊的實現(xiàn)方法并成功應(yīng)用。測試結(jié)果表明:Matlab 運用UDP 通訊可以很好地接收到EDPF-NT+平臺的實時信息并解析,為電站生產(chǎn)過程系統(tǒng)的控制算法開發(fā)與測試仿真提供了便利。