趙楠 李尚君
摘要;目前,艦船各系統(tǒng)通過大量信息化監(jiān)測(cè)設(shè)備監(jiān)測(cè)全船狀態(tài),機(jī)電監(jiān)測(cè)平臺(tái)需要完成對(duì)船舶動(dòng)力、燃油移注、電力等系統(tǒng)實(shí)時(shí)狀態(tài)的監(jiān)測(cè),這對(duì)組態(tài)軟件的實(shí)時(shí)性和可靠性提出了要求。本文介紹了一種基于Wonderware的機(jī)電監(jiān)測(cè)平臺(tái),采用UDP協(xié)議獲取各系統(tǒng)狀態(tài)信息。該系統(tǒng)在滿足通信實(shí)時(shí)性要求的同時(shí),采取了校驗(yàn)和法、標(biāo)志位法等措施,保證了通信可靠性的要求。為進(jìn)一步實(shí)現(xiàn)全船信息化提供了平臺(tái)及數(shù)據(jù)支撐。
【關(guān)鍵詞】組態(tài)軟件 Wonderware 機(jī)電監(jiān)控平臺(tái)
1 引言
船舶是一個(gè)由船體、動(dòng)力系統(tǒng)、電力系統(tǒng)等多個(gè)系統(tǒng)構(gòu)成的復(fù)雜系統(tǒng),在船舶信息化的背景下,各系統(tǒng)信息化程度逐步提高。分布式的監(jiān)測(cè)不利于信息的及時(shí)傳輸和共享,降低了指揮及決策效率。因此,希望開發(fā)出一種具有同時(shí)收集船舶機(jī)電各系統(tǒng)實(shí)時(shí)狀態(tài)、多點(diǎn)信息同步投放、歷史狀態(tài)可追溯等能力的機(jī)電監(jiān)測(cè)平臺(tái)。
張建平等基于LabView編程軟件開發(fā)了一套大型船舶燃油輸送監(jiān)控系統(tǒng),滿足了系統(tǒng)的采集、監(jiān)測(cè)、控制與報(bào)警等功能。羅昌俊等基于“現(xiàn)場(chǎng)層.監(jiān)控層.調(diào)度層”三層架構(gòu),利用KEPServer和Wonderware軟件,建立了一個(gè)分布式動(dòng)力系統(tǒng)運(yùn)行監(jiān)測(cè)平臺(tái),實(shí)現(xiàn)了多源異構(gòu)的采集與處理。姜賽達(dá)等針對(duì)船舶電站得網(wǎng)絡(luò)監(jiān)控系統(tǒng),結(jié)合新型嵌入式Web技術(shù),設(shè)計(jì)和優(yōu)化了船舶電站運(yùn)行參數(shù)網(wǎng)絡(luò)監(jiān)控系統(tǒng)。魏勝杰等開發(fā)了一種分布式作戰(zhàn)系統(tǒng)數(shù)據(jù)采集模型,較好地解決了作戰(zhàn)系統(tǒng)網(wǎng)絡(luò)的數(shù)據(jù)采集分析問題。徐池等分別從系統(tǒng)架構(gòu)、組成和功能三個(gè)方面出發(fā),設(shè)計(jì)研究了一種艦船通信裝備效能監(jiān)控評(píng)測(cè)系統(tǒng)。
2 系統(tǒng)結(jié)構(gòu)
機(jī)電監(jiān)測(cè)平臺(tái)網(wǎng)絡(luò)拓?fù)鋱D如圖1所示。
機(jī)電監(jiān)測(cè)平臺(tái)以監(jiān)控層服務(wù)器機(jī)柜為硬件環(huán)境,以Windows Server 2003操作系統(tǒng)和Wonderware 2012系統(tǒng)平臺(tái)為基礎(chǔ)平臺(tái)。機(jī)電監(jiān)測(cè)平臺(tái)基于Wonderware 2012系統(tǒng)平臺(tái)進(jìn)行開發(fā)?,F(xiàn)場(chǎng)層的各系統(tǒng)向機(jī)電監(jiān)測(cè)平臺(tái)發(fā)布數(shù)據(jù),機(jī)電監(jiān)測(cè)平臺(tái)通過實(shí)時(shí)和歷史數(shù)據(jù)庫實(shí)現(xiàn)重要信息的存儲(chǔ),并對(duì)現(xiàn)場(chǎng)層提供的監(jiān)控?cái)?shù)據(jù)進(jìn)行處理、分析和存儲(chǔ),實(shí)現(xiàn)綜合信息的查詢和報(bào)警,同時(shí)實(shí)現(xiàn)日志管理、系統(tǒng)維護(hù)等功能;發(fā)布層是機(jī)電監(jiān)測(cè)平臺(tái)為系統(tǒng)用戶提供的服務(wù),它通過c/s模式和B/S模式向系統(tǒng)用戶發(fā)布平臺(tái)各系統(tǒng)的實(shí)時(shí)監(jiān)控信息,此外,它通過NTP協(xié)議向平臺(tái)各系統(tǒng)的網(wǎng)絡(luò)節(jié)點(diǎn)提供時(shí)統(tǒng)信息。
Wonderware是世界工業(yè)自動(dòng)化軟件行業(yè)中局領(lǐng)先地位的供應(yīng)商。目前,WonderwareInTouch 2012幾乎支持所有知名的硬件廠商,例如:ABB、GE;同時(shí)支持的軟件協(xié)議包括OPC、Modbus、Profibus、CAN Bus等。Wonderware 2012系統(tǒng)平臺(tái)基于Windows操作系統(tǒng),支持Windows Server 2003、Windows7、Windows Server 2008等,同時(shí)具備HMI/SCADA的豐富功能,例如數(shù)據(jù)采集和記錄、數(shù)據(jù)分析、設(shè)備控制、實(shí)時(shí)狀態(tài)和歷史趨勢(shì)、圖形界面、報(bào)警系統(tǒng)等。
3 初始化網(wǎng)絡(luò)環(huán)境及網(wǎng)絡(luò)配置
機(jī)電監(jiān)測(cè)平臺(tái)利用基于UDP協(xié)議的信息采集模塊完成對(duì)平臺(tái)各系統(tǒng)發(fā)布信息的獲取。UDP協(xié)議省略了TCP協(xié)議中繁瑣的握手及重傳機(jī)制,從而降低了該資源的消耗,提升了處理速度,系統(tǒng)可以達(dá)到很高的數(shù)據(jù)傳輸速率。使用網(wǎng)絡(luò)協(xié)議測(cè)試儀對(duì)機(jī)電監(jiān)測(cè)平臺(tái)網(wǎng)絡(luò)中UDP報(bào)文的傳輸速率進(jìn)行檢測(cè),當(dāng)端口發(fā)送流量不大于70%的情況下,端到端最大網(wǎng)絡(luò)延時(shí)≤2ms,端到端延時(shí)抖動(dòng)≤ Ims。因此,UDP協(xié)議滿足本機(jī)電監(jiān)測(cè)平臺(tái)對(duì)于高速傳輸和實(shí)時(shí)性的要求。
信息采集模塊首先會(huì)初始化系統(tǒng)環(huán)境及網(wǎng)絡(luò)配置,然后獲取各個(gè)上網(wǎng)系統(tǒng)發(fā)出的UDP報(bào)文信息。初始化網(wǎng)絡(luò)配置時(shí),以網(wǎng)絡(luò)配置文件為輸入,通過解析網(wǎng)絡(luò)配置文件,獲取服務(wù)器名稱、IP、端口號(hào)為接收各個(gè)系統(tǒng)發(fā)出的UDP做準(zhǔn)備,程序執(zhí)行流程如圖2所示。需要注意的是UDP不同于TCP,不存在請(qǐng)求連接和受理過程,因此無法區(qū)分服務(wù)器端和客戶端,只是將提供服務(wù)的主機(jī)稱為服務(wù)器端。
4 基于UDP協(xié)議的可靠數(shù)據(jù)傳輸?shù)膶?shí)現(xiàn)
標(biāo)準(zhǔn)UDP報(bào)文格式如圖3所示。
作為服務(wù)器端的系統(tǒng)會(huì)根據(jù)接口協(xié)議,在報(bào)文的指定字段寫入各數(shù)據(jù)值,收到報(bào)文后,客戶端按照接口協(xié)議對(duì)報(bào)文內(nèi)容進(jìn)行解讀,即可還原出服務(wù)器端傳出的數(shù)據(jù)。
以燃油監(jiān)控系統(tǒng)為例,其接口協(xié)議如表1所示。
其中,序列號(hào)用于記錄發(fā)送報(bào)文的序列連續(xù)性,與發(fā)方地址和收方地址的組合表示報(bào)文的序列連續(xù)特征,為0-255循環(huán)加1。確認(rèn)標(biāo)志表示該報(bào)文是否需要返回確認(rèn)報(bào)文(O表示需要,1表示不需要)。重發(fā)次數(shù)取值0-3,數(shù)字依次表示重發(fā)次數(shù)。發(fā)送時(shí)間表示發(fā)送該報(bào)文時(shí)的時(shí)刻,表示為YYYY-MM-DDHH:MM:SS對(duì)應(yīng)年.月.日.時(shí).分.秒。
不同于TCP的面向連接、可靠的流協(xié)議,UDP是一種不具備可靠性的面向無連接的數(shù)據(jù)報(bào)協(xié)議。因此,在使用UDP協(xié)議進(jìn)行通信時(shí),需要通過應(yīng)用層彌補(bǔ)其可靠性較低的缺陷。為了保證信息的可靠傳輸,采用以下兩種方法保證接收端接收到正確的數(shù)據(jù):
(1)校驗(yàn)和驗(yàn)證法;
(2)標(biāo)志位法等。
4.1 校驗(yàn)和的計(jì)算
為了數(shù)據(jù)接收端驗(yàn)證UDP首部及報(bào)文內(nèi)容的正確性,UDP協(xié)議將UDP報(bào)文首部的最后兩字節(jié)定義為校驗(yàn)和。
校驗(yàn)和由服務(wù)器端根據(jù)UDP首部及報(bào)文內(nèi)容計(jì)算獲得:首先,服務(wù)器端會(huì)將校驗(yàn)和字段的每一位初始化為“O”,并在報(bào)文的末端填充字節(jié)“0”直至報(bào)文位數(shù)N為16的倍數(shù);然后,按照每16位為一個(gè)劃分,將報(bào)文數(shù)據(jù)劃分為N/16個(gè)二進(jìn)制數(shù),將所有N/16個(gè)二進(jìn)制數(shù)進(jìn)行累加,將累加結(jié)果的進(jìn)位加到低16位上直至結(jié)果長(zhǎng)度為16位;最后,將計(jì)算結(jié)果取反存入校驗(yàn)和字段。
數(shù)據(jù)接收端在校驗(yàn)數(shù)據(jù)正確性時(shí):根據(jù)完整的報(bào)文內(nèi)容執(zhí)行校驗(yàn)和計(jì)算算法,如果獲得的16位結(jié)果中每一位的值都為“O”,則說明UDP首部及報(bào)文內(nèi)容完整可靠;否則,認(rèn)為數(shù)據(jù)錯(cuò)誤,丟棄收到的數(shù)據(jù)。
本UDP協(xié)議采用確認(rèn)和超時(shí)重發(fā)機(jī)制保證報(bào)文的可靠性傳輸,當(dāng)報(bào)文的確認(rèn)標(biāo)志為l時(shí),報(bào)文發(fā)出后需要接收端返回確認(rèn)報(bào)文,若30ms后發(fā)送端未收到確認(rèn)報(bào)文,則將重發(fā)次數(shù)置1并重發(fā),若第1次重發(fā)等待60ms后發(fā)送端未接收到確認(rèn)報(bào)文,則將重發(fā)次數(shù)置2并重發(fā),若第2次重發(fā)等待60ms后發(fā)送端未接收到確認(rèn)報(bào)文.則將重發(fā)次數(shù)置3并重發(fā),如果第三次重發(fā)后仍然未收到確認(rèn)報(bào)文,則放棄該報(bào)文。
不同于TCP協(xié)議中服務(wù)器端與客戶端保持連接,UDP的socket不會(huì)保持連接狀態(tài),因此每次傳輸數(shù)據(jù)時(shí)都要添加目的地址信息,下面兩個(gè)函數(shù)在UDP通信中用于填寫地址并完成數(shù)據(jù)交換:
4.2.1 發(fā)送函數(shù):
#include
ssize_t sendto(inr sock, void *buff, sizet nbytes, int flags, struct sockaddr *to, socklen_taddrlen);
程序中各變量的含義如下:
(1)“ssize t”表示傳輸?shù)淖止?jié)數(shù),若傳輸失敗則返回.1。
(2)“sock”表示接收端socket文件描述符。
(3)“buff”表示保存待傳輸數(shù)據(jù)的緩沖地址值。
(4)“nbytes”表示待傳輸?shù)臄?shù)據(jù)長(zhǎng)度,以字節(jié)為單位。
(5)“flags”為可選參數(shù),默認(rèn)為O。
(6)“to”表示目標(biāo)地址信息socketaddr結(jié)構(gòu)體變量的地址值。
(7)“addrlen”表示傳遞給參數(shù)to的地址擠乳溝提變量長(zhǎng)度。
4.2.2 接受函數(shù)
#include
ssize_t recvfrom(int sock, void *buff, size_tnbyres, int flags, struct sockaddr *from, socklen_t*addrlen);
程序中各變量的含義如下:
(1)“ssize t”表示接收的字節(jié)數(shù),若接收失敗則返回.1。
(2)“sock”表示發(fā)送端socket文件描述符。
(3)“buff”表示保存待傳輸數(shù)據(jù)的緩沖地址值。
(4)“nbyres”表示待傳輸?shù)臄?shù)據(jù)長(zhǎng)度,以字節(jié)為單位。
(5)“flags”為可選參數(shù),默認(rèn)為O。
(6)“from”表示發(fā)送端地址信息socketaddr結(jié)構(gòu)體變量的地址值。
(7)“addrlen”表示參數(shù)from的結(jié)構(gòu)體變量長(zhǎng)度的變量地址值。
4.3 UDP報(bào)文收發(fā)流程
UDP報(bào)文收發(fā)流程如下:
(1)利用函數(shù)sendto向服務(wù)器端發(fā)送接受請(qǐng)求;
(2)利用函數(shù)recvfrom在組播中獲取UDP報(bào)文;
(3)計(jì)算校驗(yàn)和,判斷信息正確性,若校驗(yàn)失敗則舍棄報(bào)文;若校驗(yàn)通過,則獲取報(bào)文信息,并讀取標(biāo)志位,若確認(rèn)標(biāo)志值為O,則結(jié)束;若確認(rèn)標(biāo)志值為l,則執(zhí)行步驟4;
(4)使用sendto函數(shù)向服務(wù)器端回傳確認(rèn)報(bào)文,告知其已經(jīng)收到報(bào)文。
5 數(shù)據(jù)處理
數(shù)據(jù)處理模塊主要包括模型建立、數(shù)據(jù)計(jì)算、數(shù)據(jù)存儲(chǔ)、模型部署、數(shù)據(jù)查詢5個(gè)部分,如下圖所示:
5.1 模型建立
模型建立包括系統(tǒng)模型和設(shè)備模型。系統(tǒng)模型根據(jù)系統(tǒng)內(nèi)部信息建立系統(tǒng)內(nèi)部各綜合顯示信息組成的邏輯模型;設(shè)備模型根據(jù)設(shè)備參數(shù)建立該設(shè)備運(yùn)行狀態(tài)模型。
5.2 數(shù)據(jù)計(jì)算
數(shù)據(jù)計(jì)算包括邏輯計(jì)算、數(shù)值計(jì)算和報(bào)警設(shè)置。邏輯計(jì)算模塊進(jìn)行綜合信息邏輯關(guān)系計(jì)算,實(shí)現(xiàn)其內(nèi)部信息的邏輯控制;數(shù)值計(jì)算模塊對(duì)采集到數(shù)據(jù)進(jìn)行數(shù)值計(jì)算得出最后顯示結(jié)果;報(bào)警設(shè)備模塊設(shè)置模擬量高限報(bào)警、低限報(bào)警、高高限報(bào)警和低低限報(bào)警。
在Wonderware中可以通過設(shè)置報(bào)警組的方式完成報(bào)警顯示,向組中添加變量時(shí)可以對(duì)變量進(jìn)行報(bào)警設(shè)置,設(shè)定其報(bào)警閾值范圍,當(dāng)變量超出設(shè)定閾值范圍后就會(huì)被識(shí)別為報(bào)警信息。報(bào)警信息可以通過設(shè)置顯示數(shù)據(jù)閃爍或者通過AlarmViewer控件顯示兩種方式在人機(jī)交互界面提示操作人員。使用AlarmViewer控件訪問報(bào)警組信息時(shí),需要設(shè)置數(shù)據(jù)源路徑,本地讀取報(bào)警信息時(shí)只需要設(shè)置數(shù)據(jù)庫及報(bào)警組,例如:\Galaxy!報(bào)警組名;遠(yuǎn)程讀取報(bào)警信息時(shí)則需要設(shè)置數(shù)據(jù)庫所在計(jì)算機(jī)名、數(shù)據(jù)庫及報(bào)警組,例如:、\\計(jì)算機(jī)名\Galaxy!報(bào)警組名。
5.3 數(shù)據(jù)存儲(chǔ)
數(shù)據(jù)存儲(chǔ)模塊通過Historian數(shù)據(jù)庫對(duì)重要數(shù)據(jù)進(jìn)行存儲(chǔ)。
歷史數(shù)據(jù)存儲(chǔ)有以下幾個(gè)過程:
(1)通過發(fā)出接受請(qǐng)求接受集實(shí)時(shí)數(shù)據(jù);
(2)實(shí)時(shí)數(shù)據(jù)通過內(nèi)部IDAS服務(wù)存入實(shí)時(shí)數(shù)據(jù)庫;
(3)在實(shí)時(shí)數(shù)據(jù)庫中的實(shí)時(shí)數(shù)據(jù)被存入SQL Server 2008中作為歷史書以備查詢;
(4)通過OLE DB可以直接訪問實(shí)時(shí)數(shù)據(jù)庫中的數(shù)據(jù),實(shí)現(xiàn)在顯示界面中對(duì)實(shí)時(shí)數(shù)據(jù)的實(shí)時(shí)顯示。
5.4 模型部署
將建立的模型分別部署在兩臺(tái)服務(wù)器上,兩臺(tái)服務(wù)利用災(zāi)備技術(shù)實(shí)現(xiàn)互為熱備份。
5.5 查詢管理
查詢各組件的工作狀態(tài)和采集到數(shù)據(jù)的值。
人機(jī)界面截圖如圖4所示,截圖界面中顯示數(shù)據(jù)經(jīng)過接口對(duì)接試驗(yàn)驗(yàn)證與數(shù)據(jù)源保持一致,并能夠保證與數(shù)據(jù)源同步更新。
6 Wonderware界面投射功能
Wonderware提供了多點(diǎn)信息同步投放能力,這種功能可以通過C/S模式和B/S模式兩種方式實(shí)現(xiàn)。
在Wonderware 2012系統(tǒng)平臺(tái)的基礎(chǔ)上,綜合信息發(fā)布軟件通過讀取實(shí)時(shí)數(shù)據(jù)庫中存儲(chǔ)的數(shù)據(jù),實(shí)時(shí)獲取平臺(tái)各系統(tǒng)的運(yùn)行狀態(tài),并通過C/S發(fā)布到駕駛室等艙室的綜合信息屏主機(jī)上,主機(jī)端需要部署Inrouch Viewer其結(jié)構(gòu)如圖5所示。
機(jī)電監(jiān)測(cè)平臺(tái)通過UDP協(xié)議向各系統(tǒng)發(fā)出收?qǐng)?bào)請(qǐng)求;通過數(shù)據(jù)采集模塊解析出報(bào)文內(nèi)容后,將數(shù)據(jù)存入實(shí)時(shí)數(shù)據(jù)庫及歷史數(shù)據(jù)庫;C/S客戶端通過訪問實(shí)時(shí)數(shù)據(jù)庫,獲取各測(cè)點(diǎn)值并顯示到人機(jī)交互界面上。
用戶也可以通過其他住艙主機(jī)借助Web訪問機(jī)電監(jiān)測(cè)平臺(tái)通過B/S發(fā)布的信息。
綜合信息在其他艙室通過Web瀏覽器進(jìn)行訪問,服務(wù)器端需要部署WAS服務(wù)器。綜合信息B/S發(fā)布是基于Wonderware系統(tǒng)平臺(tái)提供的Archestra Web Explorter將C/S發(fā)布結(jié)果進(jìn)行后續(xù)處理,將Intouch View監(jiān)控畫面轉(zhuǎn)化為XML文件格式并發(fā)布到Web服務(wù)器。其結(jié)構(gòu)如圖6所示。
7 結(jié)語
針對(duì)船舶機(jī)電監(jiān)測(cè)系統(tǒng)提出的可靠、快速等需求,本文提出了一種基于Wonderware開發(fā)的機(jī)電監(jiān)測(cè)平臺(tái),該平臺(tái)采用了UDP通信協(xié)議完成了數(shù)據(jù)的采集工作,在保證了信息采集快速性的同時(shí),借助校驗(yàn)和法和標(biāo)志位法克服了UDP協(xié)議傳輸可靠性不高的問題,完成了信息的集中采集。借助Wonderware信息投放功能完成了多點(diǎn)信息同步投放功能,同時(shí)歷史數(shù)據(jù)庫功能滿足了歷史狀態(tài)可追溯的要求。
參考文獻(xiàn)
[1]張建平,庹艾莉,辛字,大型船舶燃油輸送監(jiān)控系統(tǒng)設(shè)計(jì)[J].中國艦船研究,2014,9 (02):111-116.
[2]羅昌俊,馬永一,王安勇等.風(fēng)洞試驗(yàn)高壓氣源監(jiān)測(cè)計(jì)量系統(tǒng)研究與實(shí)現(xiàn)[J].測(cè)控技術(shù),2017 (08): 47-50.
[3]姜賽達(dá),趙康,基于嵌入式Web的艦船電站運(yùn)行參數(shù)網(wǎng)絡(luò)監(jiān)控系統(tǒng)研究[J].艦船科學(xué)技術(shù),2017 (12):102-104.
[4]魏勝杰,謝偉,秦克等.一種分布式作戰(zhàn)系統(tǒng)數(shù)據(jù)采集模型[J].中國艦船研究,2011,06 (02):61-64.
[5]徐池,肖博凱,韓東.艦船通信裝備效能監(jiān)控評(píng)測(cè)系統(tǒng)設(shè)計(jì)研究[J].艦船電子工程,2017, 37 (12): 98-101.
[6]籍慧文.B\S和c\s的架構(gòu)分析[J],電子技術(shù)與軟件工程,2017 (05): 202.[
7]王文嘉,崔宏磊.艦用網(wǎng)絡(luò)授時(shí)技術(shù)設(shè)計(jì)分析[J].艦船電子工程,2011,31 (11):15- 18.
[8] Wonderware官方網(wǎng)站[EB/OL].http://www.wonderware.com.
[9]王森,基于多總線冗余機(jī)制的船舶功率管理系統(tǒng)的研究[D].東南大學(xué),2 01 7.
[lO]Chang-Jing U,Yong D U,Zhang W J,et al.Oilfield of Remote MonitoringSystem Based on the WonderwareSys tem[J].Measurement & ControlTechnology, 2012, 31 (08): 98-99.
[11]耿恒水,馮玉田,鄭偉波.UDP數(shù)據(jù)傳輸技術(shù)在空間科學(xué)實(shí)驗(yàn)的應(yīng)用[J].電子測(cè)量技術(shù),2017 (09):197-200.
[12]何潤(rùn)岸.基于UDP進(jìn)行大規(guī)模數(shù)據(jù)傳輸?shù)目煽總鬏斚到y(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].山東大學(xué),2015.
[13]Li S Q,Wang C A,Zhu W G,et al.Ensureteleoperation data transmissionreliability based on UDP[J].Automation&Instrumentation;, 2013.
[14]劉仕華.Wonderware Historian數(shù)據(jù)庫的基本操作[J].信息與電腦(理論版),2015 (10):47-52.