国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

農(nóng)村供水監(jiān)控?cái)?shù)據(jù)共享交互方法研究

2022-05-17 09:00:26李曉琴
關(guān)鍵詞:序列化水廠供水

李曉琴,孫 毅,梁 玉,孫 穎,李 珊

(1.中國(guó)水利水電科學(xué)研究院,北京 100048; 2.國(guó)家節(jié)水灌溉北京工程技術(shù)研究中心,北京 100048;3.遼寧省水利事務(wù)服務(wù)中心, 遼寧 沈陽(yáng) 110003; 4.盤錦市水利服務(wù)中心, 遼寧 盤錦 124000;5.北京市門頭溝區(qū)水務(wù)建設(shè)項(xiàng)目事務(wù)中心,北京 102302)

農(nóng)村供水監(jiān)控?cái)?shù)據(jù)缺乏共享交互,各個(gè)企業(yè)建成的不同水廠農(nóng)村供水自動(dòng)化監(jiān)控系統(tǒng)往往各自為戰(zhàn),獨(dú)立的系統(tǒng)、分散的數(shù)據(jù)很難向數(shù)字化、網(wǎng)絡(luò)化、智能化的方向轉(zhuǎn)變,需要花費(fèi)較大的代價(jià)來(lái)實(shí)現(xiàn)數(shù)據(jù)共享交互。本研究主要服務(wù)于水廠中心上位機(jī)系統(tǒng)、云端農(nóng)村供水自動(dòng)化監(jiān)控系統(tǒng)、上級(jí)農(nóng)村供水相關(guān)業(yè)務(wù)系統(tǒng)之間的數(shù)據(jù)共享交互,在農(nóng)村供水水廠自動(dòng)化監(jiān)控系統(tǒng)、農(nóng)村供水業(yè)務(wù)系統(tǒng)建設(shè)之初,明確數(shù)據(jù)共享交互方法,提前定義好數(shù)據(jù)指標(biāo)、數(shù)據(jù)結(jié)構(gòu),方便農(nóng)村供水監(jiān)控?cái)?shù)據(jù)共享交互。

世界各地通信設(shè)備有提前約定好的通信協(xié)議,遵循這些協(xié)議實(shí)現(xiàn)設(shè)備層面控制器之間、控制器經(jīng)由網(wǎng)絡(luò)和其他設(shè)備之間的數(shù)據(jù)共享交互[1]。國(guó)際電工組織(IEC)選定和規(guī)定了一些應(yīng)用廣泛、通用安全高效的工業(yè)通信協(xié)議,作為全球通信器材制造和各類通信協(xié)議標(biāo)準(zhǔn)[2]。如目前應(yīng)用最廣泛的Modbus RTU協(xié)議,轉(zhuǎn)換接口便宜、實(shí)施簡(jiǎn)單方便、性價(jià)比較高[3],也是《村鎮(zhèn)供水工程自動(dòng)化監(jiān)控技術(shù)規(guī)程》[4](T/CECS 493—2017)規(guī)定的設(shè)備層面的接口[5]。還有開(kāi)放式的Profibus協(xié)議,不依賴于設(shè)備生產(chǎn)商的現(xiàn)場(chǎng)總線標(biāo)準(zhǔn)[6]。明確了通信協(xié)議,針對(duì)具體的業(yè)務(wù)實(shí)現(xiàn),需要進(jìn)一步定義好數(shù)據(jù)規(guī)約,才能真正實(shí)現(xiàn)數(shù)據(jù)交互共享。國(guó)內(nèi)水文或水資源部門,發(fā)布了《水資源監(jiān)測(cè)數(shù)據(jù)傳輸規(guī)約》[7](SZY206—2012)、《水文監(jiān)測(cè)數(shù)據(jù)通信規(guī)約》[8](SL651—2014),約定了傳感器與遙測(cè)終端、各測(cè)站與中心站之間的報(bào)文數(shù)據(jù)通信協(xié)議和規(guī)約。通過(guò)約定的報(bào)文和協(xié)議實(shí)現(xiàn)數(shù)據(jù)共享交互,有效避免工程項(xiàng)目的重復(fù)建設(shè)。

然而,在設(shè)備層之上,PLC主站與水廠中心上位系統(tǒng)、水廠中心上位系統(tǒng)與供水管網(wǎng)監(jiān)控系統(tǒng)或區(qū)域上級(jí)信息化監(jiān)管系統(tǒng)之間,要使其能協(xié)同工作、實(shí)現(xiàn)信息交互和資源共享,更需要制定互相接受的信息規(guī)則。國(guó)內(nèi)外常用的數(shù)據(jù)共享交互方式有數(shù)據(jù)交互軟件、數(shù)據(jù)庫(kù)交互[9]、標(biāo)準(zhǔn)數(shù)據(jù)交互方法等多種方式實(shí)現(xiàn)。數(shù)據(jù)交互軟件方式,花費(fèi)代價(jià)比較大,一般普通的PLC都需要配備一臺(tái)特定的前置機(jī)設(shè)備才能實(shí)現(xiàn)數(shù)據(jù)共享交互,而近期新式的一些PLC能夠提供諸如OPC UA等標(biāo)準(zhǔn)接口,使得數(shù)據(jù)對(duì)接變得很方便,但這些設(shè)備價(jià)格一般都比較昂貴,并且設(shè)備上的資源對(duì)于一般自動(dòng)化場(chǎng)合顯得過(guò)多。中間數(shù)據(jù)庫(kù)技術(shù),重要的數(shù)據(jù)信息資源通過(guò)數(shù)據(jù)庫(kù)交互實(shí)現(xiàn)統(tǒng)一管理[10]。中間數(shù)據(jù)庫(kù)數(shù)據(jù)共享有很大的方便,但其缺點(diǎn)也突出,一是當(dāng)數(shù)據(jù)共享對(duì)接的系統(tǒng)較多的時(shí)候,由于數(shù)據(jù)庫(kù)連接池的限制,許多系統(tǒng)無(wú)可用的連接或者需要依托龐大的數(shù)據(jù)庫(kù)系統(tǒng);二是數(shù)據(jù)庫(kù)暴露在多個(gè)系統(tǒng)的公共區(qū)域,每個(gè)系統(tǒng)都有特定的訪問(wèn)權(quán)限,數(shù)據(jù)庫(kù)容易受到攻擊,安全隱患比較大。

隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展和通信網(wǎng)絡(luò)的普遍應(yīng)用,采用Http、消息隊(duì)列等進(jìn)行數(shù)據(jù)交互的方法應(yīng)用廣泛[11]。這種方式下,采用Xml、Protocol Buffer、Json等數(shù)據(jù)交互技術(shù)實(shí)現(xiàn)[12],是簡(jiǎn)單快捷、實(shí)施方便、運(yùn)維代價(jià)最小的一種數(shù)據(jù)交互方式。有了數(shù)據(jù)交互技術(shù)的支持,還需要研究制定跟業(yè)務(wù)匹配的數(shù)據(jù)共享交互方法,約定相關(guān)業(yè)務(wù)的指標(biāo)定義、統(tǒng)一的信息編碼規(guī)則、數(shù)據(jù)結(jié)構(gòu)等內(nèi)容,才能實(shí)現(xiàn)信息的唯一性和同一性,避免信息的多源、失真和缺失。

農(nóng)村供水管網(wǎng)監(jiān)控系統(tǒng)由于農(nóng)村供水工程點(diǎn)多、面廣、運(yùn)行管理單位多樣等特點(diǎn),系統(tǒng)建設(shè)水平參差不齊,不同單位建設(shè)系統(tǒng)、不同層級(jí)的系統(tǒng)之間數(shù)據(jù)傳輸協(xié)議、共享數(shù)據(jù)內(nèi)容、數(shù)據(jù)結(jié)構(gòu)不明確,缺少數(shù)據(jù)共享交互方法,兼容性和數(shù)據(jù)交互共享不足,信息利用率低、系統(tǒng)之間共享度較差[13]。因此,本研究在對(duì)比分析目前數(shù)據(jù)交互方法基礎(chǔ)上,選擇Json格式,分別從數(shù)據(jù)指標(biāo)定義、Json數(shù)據(jù)結(jié)構(gòu)兩方面,構(gòu)建農(nóng)村供水監(jiān)控?cái)?shù)據(jù)交互方法,并結(jié)合實(shí)際案例對(duì)交互效果進(jìn)行對(duì)比分析。

1 數(shù)據(jù)交互方法選擇

1.1 數(shù)據(jù)交互方法對(duì)比

當(dāng)前的數(shù)據(jù)交互技術(shù)主要包含Xml、Protocol Buffer、Json等,但是未針對(duì)農(nóng)村供水業(yè)務(wù)開(kāi)展標(biāo)準(zhǔn)化定義,需要選用一種成熟的數(shù)據(jù)交互技術(shù),根據(jù)農(nóng)村供水業(yè)務(wù)定義數(shù)據(jù)指標(biāo)、數(shù)據(jù)格式、安全機(jī)制,保證數(shù)據(jù)高質(zhì)量低代價(jià)快速度地交互共享。

(1) Xml(Extensible Markup Language,可擴(kuò)展標(biāo)記語(yǔ)言)是常用的、也是較早出現(xiàn)的一種數(shù)據(jù)交換格式[14],能對(duì)文檔和數(shù)據(jù)進(jìn)行結(jié)構(gòu)化處理,通過(guò)對(duì)結(jié)構(gòu)性文件的標(biāo)記實(shí)現(xiàn)數(shù)據(jù)交互。Xml語(yǔ)言以樹(shù)結(jié)構(gòu)為基礎(chǔ)對(duì)數(shù)據(jù)進(jìn)行描述,或者,主要用于數(shù)據(jù)共享、數(shù)據(jù)傳輸和平臺(tái)兼容,由于規(guī)范的標(biāo)記使得不同系統(tǒng)之間能更好地實(shí)現(xiàn)數(shù)據(jù)傳輸、存儲(chǔ)、搜索和描述,具有描述性強(qiáng)、規(guī)范完整、擴(kuò)展方便的特點(diǎn)[15]。數(shù)據(jù)共享更容易:Xml數(shù)據(jù)純文本的存儲(chǔ)形式,與硬件或者軟件獨(dú)立;數(shù)據(jù)傳輸簡(jiǎn)單:不受操作系統(tǒng)、應(yīng)用程序的限制,在不同的操作系統(tǒng)、應(yīng)用程序之間,通過(guò)Xml可以很容易地交換數(shù)據(jù),降低數(shù)據(jù)交換復(fù)雜性;平臺(tái)兼容性更好:一般平臺(tái)升級(jí)數(shù)據(jù)轉(zhuǎn)換過(guò)程會(huì)丟失一些不兼容的數(shù)據(jù),而Xml數(shù)據(jù)不會(huì)丟失,不受平臺(tái)升級(jí)改造影響,更容易擴(kuò)展升級(jí)。

(2) Protocol Buffer,以二進(jìn)制格式存儲(chǔ),支持?jǐn)?shù)據(jù)結(jié)構(gòu)的自定義,還有專門的工具,Protobu編譯器能轉(zhuǎn)換為C++、Java、Python等語(yǔ)言的源代碼,是一種效率高、兼容性好的二進(jìn)制數(shù)據(jù)傳輸格式。由于二進(jìn)制的格式是最直白的計(jì)算機(jī)語(yǔ)言,所以Protocol Buffer比Xml數(shù)據(jù)體積小、傳輸速度快、更容易擴(kuò)展。但正是由于二進(jìn)制語(yǔ)言,沒(méi)有文本語(yǔ)言直接和形象,對(duì)于程序員來(lái)說(shuō),編寫起來(lái)比Xml復(fù)雜,轉(zhuǎn)換時(shí)間較長(zhǎng)。

(3) Json(JavaScript Object Notation,對(duì)象簡(jiǎn)譜),也是一種文本方式的數(shù)據(jù)交換格式,它源自于JavaScript,以{Key:Value}鍵值的形式描述對(duì)象[16]。Json是歐洲計(jì)算機(jī)協(xié)會(huì)(European Computer Manufacturers Association)腳本程序(ECMA Script)制定的一個(gè)子集,它的層次簡(jiǎn)潔清晰,閱讀和編寫容易,機(jī)器解析與生成方便,任何JavaScript對(duì)象都可以轉(zhuǎn)換為Json,然后將Json發(fā)送到服務(wù)器。同樣,從服務(wù)器接收的任何Json也可以轉(zhuǎn)換為JavaScript對(duì)象[17]。它是一種簡(jiǎn)潔、容易、快速、理想的數(shù)據(jù)交換語(yǔ)言,能有效地提升網(wǎng)絡(luò)傳輸效率。

三種數(shù)據(jù)交互格式從可讀性、通用性、便捷性方面的區(qū)別和特點(diǎn)分析如下:

(1) 可讀性方面:Xml和Json都是文本語(yǔ)言,序列化后的內(nèi)容可讀性都非常好,排查錯(cuò)誤和糾錯(cuò)容易。當(dāng)出現(xiàn)數(shù)據(jù)交互錯(cuò)誤時(shí),可以用模擬數(shù)據(jù)測(cè)試[18]。Protocol Buffer是二進(jìn)制格式,序列化以后的內(nèi)容不可讀,它的可讀性最差,容易出現(xiàn)錯(cuò)誤且排查糾錯(cuò)困難。

(2) 通用性方面:Xml和Json都比較成熟,是目前比較常用的數(shù)據(jù)交互格式,Protocol Buffer的應(yīng)用相對(duì)較少,不適于廣大業(yè)務(wù)系統(tǒng)的實(shí)際應(yīng)用。

(3) 便捷性方面:Json數(shù)據(jù)格式相對(duì)于Xml來(lái)說(shuō)更加簡(jiǎn)單、易于讀寫,且數(shù)據(jù)格式經(jīng)過(guò)壓縮,所以占用帶寬小、傳輸速度快,更適于不同層級(jí)供水監(jiān)控?cái)?shù)據(jù)的交互;Json數(shù)據(jù)格式的序列化和反序列化便于服務(wù)器端的解析[19],服務(wù)器端代碼能直接使用,這樣也簡(jiǎn)化了服務(wù)器和客戶端的代碼開(kāi)發(fā)量,易于維護(hù)[20-22]。表1為Xml和Json描述相同管網(wǎng)數(shù)據(jù)的更新。

由表1可以看出,相同的數(shù)據(jù),Xml的冗余信息遠(yuǎn)多于Json,特別是對(duì)于數(shù)組,Json格式只需要一個(gè)標(biāo)記即可描述整個(gè)數(shù)組,而Xml格式需要對(duì)數(shù)組的每個(gè)元素添加一對(duì)標(biāo)簽,因此數(shù)組元素越多,冗余越多。Xml與Json的冗余信息對(duì)比見(jiàn)表2。

表1 相同管網(wǎng)數(shù)據(jù)Xml和Json封裝對(duì)比

表2 Xml與Json冗余信息對(duì)比

通過(guò)綜合比選,選定Json格式進(jìn)行不同層級(jí)農(nóng)村供水監(jiān)控?cái)?shù)據(jù)的交互。

1.2 Json數(shù)據(jù)交互方法/理論

在當(dāng)前的數(shù)據(jù)交互技術(shù)Xml、Protocol Buffer、Json中,選擇了書(shū)寫簡(jiǎn)單、易于讀寫、解析速度快、占用帶寬小的Json交互方法。Json主要有兩種表示結(jié)構(gòu):一是“key:value”鍵值對(duì)的集合,不同的語(yǔ)言中,它被理解為對(duì)象、記錄、結(jié)構(gòu)、字典、哈希表等數(shù)據(jù)結(jié)構(gòu);二是值的有序列表(An Ordered List of Values),也可以理解為數(shù)組,這種數(shù)據(jù)結(jié)構(gòu)是Json節(jié)省冗余的關(guān)鍵所在。

方式1:

[

{"name":"流量1", "value":"1.1"},

{"name":"流量2", "value":"1.2"},

{"name":"流量3", "value":"1.3"},

{"name":"流量4", "value":"1.4"},

{"name":"流量5", "value":"1.5"},

]

方式2:

{

"name":["流量1","流量2","流量3","流量4","流量5"],

"value":[1.1,1.2,1.3,1.4,1.5]

}

監(jiān)測(cè)數(shù)據(jù)和Json字符串之間,通過(guò)Json序列化和反序列化實(shí)現(xiàn)轉(zhuǎn)換。在數(shù)據(jù)交互的兩端,數(shù)據(jù)結(jié)構(gòu)可以完全不同,傳輸過(guò)程中的Json字符串能被正確的生成和解析,則整個(gè)過(guò)程是有效的。所以在序列化和反序列化的兩端,可以用不同的語(yǔ)言、架構(gòu)、方法,為不同系統(tǒng)之間的數(shù)據(jù)交互提供了可能。Json數(shù)據(jù)序列化和反序列化過(guò)程如圖1。

序列化(Serialization)是將監(jiān)控?cái)?shù)據(jù)信息轉(zhuǎn)換為Json字符串的過(guò)程。具體執(zhí)行步驟如下:(1) 上位機(jī)定時(shí)采集供水監(jiān)控?cái)?shù)據(jù),將數(shù)據(jù)作為數(shù)據(jù)對(duì)象匯總;(2) 上位機(jī)將數(shù)據(jù)對(duì)象序列化為Json數(shù)據(jù)包;(3) 上位機(jī)發(fā)送Json數(shù)據(jù)包給服務(wù)器接口;(4) 服務(wù)器接收J(rèn)son數(shù)據(jù)包;(5) 服務(wù)器執(zhí)行Json反序列化,解析出具體的監(jiān)控?cái)?shù)據(jù)對(duì)象;(6) 服務(wù)器進(jìn)行數(shù)據(jù)處理,將處理結(jié)果歸入中心數(shù)據(jù)庫(kù)。

反序列化(Deserialization)是將Json字符串重新轉(zhuǎn)換為監(jiān)控?cái)?shù)據(jù)信息的過(guò)程。具體執(zhí)行步驟如下:(1) 服務(wù)器接收客戶指令,轉(zhuǎn)換為數(shù)據(jù)對(duì)象;(2) 服務(wù)器將數(shù)據(jù)對(duì)象序列化為Json數(shù)據(jù)包;(3) 服務(wù)器將Json數(shù)據(jù)包發(fā)送給上位機(jī);(4) 上位機(jī)接收到服務(wù)器推送的Json數(shù)據(jù)包;(5) 上位機(jī)執(zhí)行Json反序列化,解析出具體的控制指令;(6) 上位機(jī)將控制指令發(fā)送給具體的監(jiān)控設(shè)備。

圖1 Json數(shù)據(jù)序列化和反序列化過(guò)程

2 數(shù)據(jù)指標(biāo)定義

選擇Json數(shù)據(jù)交互格式,需要按照一定規(guī)則對(duì)農(nóng)村供水監(jiān)控?cái)?shù)據(jù)進(jìn)行指標(biāo)定義,以期快速、高效、低成本實(shí)現(xiàn)不同廠家、不同設(shè)備的數(shù)據(jù)共享交互。

根據(jù)傳感器指標(biāo)監(jiān)控的不同環(huán)節(jié),分三級(jí)定義監(jiān)控?cái)?shù)據(jù)指標(biāo),包括傳感器指標(biāo)——設(shè)備設(shè)施所屬——分類屬性,明確每個(gè)傳感器所處的供水環(huán)節(jié)、具體位置和類型。傳感器指標(biāo)定義最底層傳感器監(jiān)控的指標(biāo)名稱、標(biāo)識(shí)符、數(shù)值類型和數(shù)值單位。設(shè)備設(shè)施所屬規(guī)定了設(shè)備設(shè)施所屬的供水環(huán)節(jié),包括水源、輸水管網(wǎng)、水廠、配水管網(wǎng)、管網(wǎng)末梢、用水戶6個(gè)供水環(huán)節(jié)。分類屬性是針對(duì)同一個(gè)供水環(huán)節(jié)不同位置或者不同類型進(jìn)行的定義,如水廠環(huán)節(jié)的水處理、調(diào)節(jié)構(gòu)筑物、泵站位置的區(qū)分,如水源環(huán)節(jié)是地表水還是地下水的區(qū)分。數(shù)據(jù)指標(biāo)劃分和定義層級(jí)如圖2所示。

圖2 數(shù)據(jù)指標(biāo)劃分和定義層級(jí)

2.1 傳感器指標(biāo)(indicator)

傳感器指標(biāo)是不同傳感器采集的指標(biāo)。每個(gè)傳感器指標(biāo)有唯一的標(biāo)識(shí)符,該標(biāo)識(shí)符為字符串類型,且不區(qū)分大小寫。在數(shù)據(jù)流轉(zhuǎn)過(guò)程中,可通過(guò)該標(biāo)識(shí)符對(duì)傳感器指標(biāo)進(jìn)行引用。每個(gè)傳感器指標(biāo)還有對(duì)應(yīng)的中英文術(shù)語(yǔ)名稱、中英文單位、數(shù)據(jù)類型、單位等信息,傳感器指標(biāo)定義見(jiàn)表3所示。

表3 常見(jiàn)傳感器指標(biāo)定義

2.2 設(shè)備設(shè)施所屬(part_of)

農(nóng)村供水工程從取輸凈配四個(gè)工藝環(huán)節(jié)分解出水源、輸水管網(wǎng)、水廠、配水管網(wǎng)、管網(wǎng)末梢、用水戶等6個(gè)供水環(huán)節(jié),每種設(shè)備設(shè)施都從屬于這6個(gè)供水環(huán)節(jié)其中之一,所從屬的環(huán)節(jié)就是設(shè)備設(shè)施(device)的所屬(part_of),表4為設(shè)備設(shè)施所屬part_of屬性定義。

2.3 分類屬性(props)

水廠供水不同環(huán)節(jié)的傳感器或設(shè)備設(shè)施還可能有多種分類方式,如水源類型有地表水、地下水;構(gòu)筑物有水處理、排泥、調(diào)節(jié)構(gòu)筑物等;為滿足這種更細(xì)致的分類劃分,這里對(duì)設(shè)備設(shè)施的定義進(jìn)行了擴(kuò)展,即分類屬性props定義。

表4 設(shè)備設(shè)施part_of定義

引入分類屬性定義props,為設(shè)備設(shè)施和傳感器定義提供更好的靈活性和兼容性。props屬性為數(shù)組格式,可以對(duì)當(dāng)前設(shè)備設(shè)施定義多個(gè)附加屬性,用于兼容更細(xì)致的分類。如某工程水源為地表水,且為水庫(kù)水,則其part_of定義為wss,同時(shí)可以定義props為sw-re,表示水源為地表水-水庫(kù)水。再如水源取水泵站的定義,其part_of為wss,可以添加props定義ips。設(shè)備設(shè)施的props屬性及其part_of限定值見(jiàn)表5。

表5 設(shè)備設(shè)施device的props屬性及其part_of限定

(1) props針對(duì)泵站的特殊設(shè)定。所有泵站的設(shè)備設(shè)施必須有props屬性。如下所示泵站定義:

"id":"pump_out",//設(shè)備設(shè)施標(biāo)識(shí)

"name":"配水泵房"

"part_of":"wsp",//設(shè)施所屬

"props":["dps"],//表明當(dāng)前泵站的類型為配水泵站,必須包含該屬性

(2) 兼容不同位置安裝。監(jiān)測(cè)環(huán)節(jié)和安裝位置不一致時(shí),可在“props”中增加安裝位置指標(biāo),且可以設(shè)置多個(gè)。

如某個(gè)設(shè)備設(shè)施監(jiān)測(cè)水源濁度指標(biāo),安裝在水廠,水源為地表水,且為水庫(kù)水,則part_of定義為wss,props定義為["sw-re","wsp"]。表明該設(shè)備安裝于水廠,且為地表水-水庫(kù)水。

3 Json數(shù)據(jù)結(jié)構(gòu)

定義好數(shù)據(jù)指標(biāo)后,本章明確了設(shè)備設(shè)施定義、新增或更新傳感器數(shù)據(jù)、視頻安防監(jiān)控?cái)?shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)和消息類型。

3.1 消息類型定義

基本數(shù)據(jù)格式包括唯一標(biāo)識(shí)id,版本號(hào)ver,類型type三個(gè)屬性,且均為必填屬性,對(duì)應(yīng)的json格式為:

{

"id":"xxx", //消息唯一標(biāo)識(shí)id

"ver":"1.0",

"type":"def",//消息類型

//根據(jù)不同類型,消息其他部分

}

針對(duì)不同的type類型,消息定義的具體內(nèi)容不同。消息類型定義如表6。

表6 消息類型定義

3.2 設(shè)備設(shè)施定義數(shù)據(jù)結(jié)構(gòu)

設(shè)備設(shè)施定義消息格式,類型為def,具體消息內(nèi)容按照供水工程(fields)→設(shè)備設(shè)施(devices)→傳感器(sensors)三級(jí)定義。一個(gè)消息數(shù)據(jù)可包含多個(gè)供水工程,一個(gè)供水工程可包含多個(gè)設(shè)備設(shè)施,一個(gè)設(shè)備設(shè)施可包含多個(gè)傳感器。fields字段為水廠或者供水工程列表,可以包含多個(gè)水廠或者供水工程的監(jiān)控?cái)?shù)據(jù)。單個(gè)工程標(biāo)識(shí)為field。devices字段為單個(gè)供水工程所包含的監(jiān)控設(shè)備設(shè)施,可以是一個(gè)監(jiān)控柜、控制箱或者監(jiān)控點(diǎn)。sensors字段為單個(gè)設(shè)備設(shè)施所包含的多個(gè)監(jiān)控傳感器,如流量計(jì)、壓力表等。

(1) fields。fileds包含唯一標(biāo)識(shí)id,供水工程名稱name,工程編號(hào)prj_id,經(jīng)緯度lng,lat四個(gè)屬性。

id,每個(gè)field對(duì)應(yīng)一個(gè)唯一水廠標(biāo)識(shí)。規(guī)則是:省_市_縣_水廠字母進(jìn)行組合。如: ln_pj_ps_ds遼寧盤錦盤山縣東升水廠。name,供水工程名稱,與全國(guó)農(nóng)村供水信息管理系統(tǒng)名稱必須一致。prj_id,部級(jí)系統(tǒng)對(duì)供水工程統(tǒng)一標(biāo)識(shí),由全國(guó)農(nóng)村供水信息管理系統(tǒng)統(tǒng)一分配。lng,lat經(jīng)緯度,水廠經(jīng)緯度浮點(diǎn)數(shù)。

(2) devices。devices包括唯一標(biāo)識(shí)id,設(shè)備設(shè)施名稱name,part_of,props,經(jīng)緯度lng,lat五個(gè)屬性。

id,每個(gè)device id在field下面必須唯一,可以以a-z字母開(kāi)頭,后續(xù)可以是a-z,0-9,_等字符組成,盡可能簡(jiǎn)短,如:sor1,fac等。name,設(shè)備設(shè)施名稱。part_of,定義設(shè)備設(shè)施的供水環(huán)節(jié),包括水源,輸水管網(wǎng),水廠,配水管網(wǎng),管網(wǎng)末梢,用水戶六部分,如:{"part of":"wss"},由供水工程不同環(huán)節(jié)定義的所屬,唯一。props,當(dāng)供水環(huán)節(jié)part_of的描述不能準(zhǔn)確定義設(shè)備設(shè)施時(shí),需要增加props屬性,如:{"props":"sw-re"},水源屬于地表水水庫(kù),可以是數(shù)組。lng,lat經(jīng)緯度,使用浮點(diǎn)數(shù)值表達(dá)。

(3) sensors。sensors包括id,name,iid,indicator,props五個(gè)屬性。

id,每個(gè)sensor id在device下面必須唯一,可以a-z字母開(kāi)頭,后續(xù)可以是a-z,0-9,_等字符組成,盡可能簡(jiǎn)短,如:flow1 lvl1等。name,指標(biāo)名稱。iid,定義內(nèi)部唯一id,是整數(shù),內(nèi)部定位指標(biāo)。Indicator,傳感器sensor的indicator屬性。Props,分類屬性定義,如:indicator是水質(zhì)可以增加方向?qū)傩詉n/out。

3.3 新增或更新傳感器數(shù)據(jù)

自動(dòng)化監(jiān)測(cè)數(shù)據(jù)格式類型以mdata消息類型為基礎(chǔ),每個(gè)消息數(shù)據(jù)可以包含多個(gè)供水工程,每個(gè)供水工程內(nèi)部的多個(gè)傳感器指標(biāo)在某個(gè)時(shí)間的監(jiān)測(cè)值更新。

(1)數(shù)據(jù)格式允許多個(gè)field的更新數(shù)據(jù),每個(gè)field只需要id屬性區(qū)分即可,此id在def中被定義。在每個(gè)field對(duì)象中,有一個(gè)updates屬性,值為Json對(duì)象數(shù)組,數(shù)組中每個(gè)對(duì)象都是一個(gè)指標(biāo)在某個(gè)時(shí)間的值。

(2)每個(gè)監(jiān)控指標(biāo)對(duì)象,都有一個(gè)id或iid。其中,id是在def中定義的fieldid_deviceid_sensorid組合而成的全路徑唯一標(biāo)識(shí),而iid是def內(nèi)部定義的唯一整數(shù)壓縮標(biāo)識(shí),如:{"id":"sor1.p1_st","dt":345234524,"v":0.5}。

(3)每個(gè)數(shù)據(jù)項(xiàng)都有時(shí)間dt屬性,是long值,起始1970.1.1到現(xiàn)在的毫秒數(shù),如:{"iid":11,"dt":345234524,"v":0.5}。

(4)如果某個(gè)數(shù)據(jù)項(xiàng)是無(wú)效的,則有valid:false的屬性,如:{"iid":14,"dt":345234524,valid:false}。

(5)如果某個(gè)數(shù)據(jù)項(xiàng)是有效的,則有數(shù)據(jù)值屬性v。其中值的類型由sensor中的indicator限定。

3.4 視頻安防監(jiān)控?cái)?shù)據(jù)

視頻安防監(jiān)控消息格式,類型為video,具體消息內(nèi)容按照供水工程(fields)→視頻監(jiān)控點(diǎn)(monitorpoints)→監(jiān)控?cái)z像頭(cameras)三級(jí)設(shè)定。一個(gè)供水工程可包含多個(gè)視頻監(jiān)控點(diǎn);一個(gè)視頻監(jiān)控點(diǎn)可包含多個(gè)監(jiān)控?cái)z像頭;每個(gè)消息數(shù)據(jù)可包含多個(gè)供水工程的視頻監(jiān)控?cái)?shù)據(jù)。

fields字段為水廠或者供水工程列表,可以包含多個(gè)水廠或者供水工程的視頻監(jiān)控?cái)?shù)據(jù),單個(gè)工程標(biāo)識(shí)為field。monitorpoints字段為單個(gè)水廠或者供水工程所包含的所有視頻監(jiān)控點(diǎn)。cameras字段為單個(gè)視頻監(jiān)控點(diǎn)所包含的所有監(jiān)控?cái)z像頭信息。

(1) fields。fields包括prj_id,monitorpoints兩個(gè)屬性,且均為必填屬性。

prj_id,必傳,用于區(qū)別監(jiān)控設(shè)備屬于哪個(gè)水廠或供水工程。該id由系統(tǒng)下發(fā),不能自定義。Monitorpoints,必傳,用于定義或者更新視頻監(jiān)控點(diǎn)。

(2) monitorPoints,monitorpoints包括id,name,lng lat,part_of,props,cameras六個(gè)屬性。

id,視頻監(jiān)控點(diǎn)id,必傳,自定義,在水廠或供水工程范圍內(nèi)不重復(fù),如:{"id":"bengfang01"}。name,視頻監(jiān)控點(diǎn)名稱,非必傳,自定義,在水廠或供水工程范圍內(nèi)不可重復(fù),如:{"name": "一號(hào)泵房"}。lng,lat:視頻監(jiān)控點(diǎn)位置信息,包含經(jīng)度和緯度,經(jīng)緯度應(yīng)盡量精確,支持小數(shù)點(diǎn)后6-8位數(shù)據(jù)存儲(chǔ),如:{"lng":120.455675, "lat":37.854796}。part_of,視頻監(jiān)控點(diǎn)的設(shè)備設(shè)施所屬,必傳,用標(biāo)識(shí)符來(lái)標(biāo)識(shí),如:{"part_of":"wsp"}。props,細(xì)化的設(shè)備設(shè)施所屬,非必傳,如:{"props": "wss"}。cameras,監(jiān)控?cái)z像頭列表,必傳,給定所有攝像頭。

(3) cameras。cameras包括id,name,live,brand,model,sn六個(gè)屬性,可自定義。

id,視頻攝像頭id,必傳,在所屬視頻監(jiān)測(cè)點(diǎn)范圍內(nèi)不可重復(fù),如:{"id":"01"}。name,視頻攝像頭名稱,必傳,在所屬視頻監(jiān)測(cè)點(diǎn)范圍內(nèi)不可重復(fù),如:{"name":"東南"},第一次必傳,后續(xù)有變化時(shí)再傳。live,視頻攝像頭名稱,必傳,如:{"流暢":"https://open.ys7.com/ "}。brand,攝像頭品牌,非必傳,如:{"brand":"??低?}。model,攝像頭型號(hào),非必傳,如:{"model":"iDS-7816NX-Z2/X"}。sn,攝像頭序列號(hào),非必傳,如:{"sn":"F72305733"}。

4 與之前交互方式對(duì)比分析

農(nóng)村供水Json數(shù)據(jù)共享交互方法,支持多個(gè)水廠供水管網(wǎng)監(jiān)控?cái)?shù)據(jù)的交互共享,已在遼寧、重慶、寧夏等多處水廠監(jiān)控系統(tǒng)中應(yīng)用,對(duì)接傳感器設(shè)備數(shù)量100個(gè)左右。系統(tǒng)運(yùn)行后,數(shù)據(jù)對(duì)接過(guò)程中,不同水廠,不同設(shè)備廠商,只需在上位機(jī)按照標(biāo)準(zhǔn)協(xié)議進(jìn)行監(jiān)測(cè)設(shè)備的定義,并配置數(shù)據(jù)的定時(shí)上傳即可實(shí)現(xiàn)系統(tǒng)的正常運(yùn)轉(zhuǎn),無(wú)需額外的開(kāi)發(fā)工作,節(jié)省了開(kāi)發(fā)時(shí)間和成本。同時(shí),基于Json的交互方式,相同信息量傳輸?shù)淖止?jié)更少,與之前的數(shù)據(jù)共享措施相比,系統(tǒng)響應(yīng)的速度更快。

圖3 遼寧東港供水管網(wǎng)監(jiān)控

表7是基于Json的數(shù)據(jù)交互與之前的數(shù)據(jù)共享措施的對(duì)比。結(jié)果表明,單個(gè)供水工程布設(shè)周期縮短50%以上,平均上行數(shù)據(jù)包大小縮小33%。

表7 兩種交互方式對(duì)比

5 結(jié) 論

本研究創(chuàng)建了一套農(nóng)村供水Json數(shù)據(jù)共享交互標(biāo)準(zhǔn)格式?;贘son交互技術(shù),定義了傳感器指標(biāo)、設(shè)備設(shè)施所屬及其分類屬性,構(gòu)建了自動(dòng)化監(jiān)控設(shè)備設(shè)施定義、新增或更新傳感器數(shù)據(jù)、視頻安防監(jiān)控?cái)?shù)據(jù)的結(jié)構(gòu)類型,數(shù)據(jù)采集與應(yīng)用體系使用相同的數(shù)據(jù)接口,無(wú)需重復(fù)開(kāi)發(fā),可統(tǒng)一維護(hù),大幅降低了開(kāi)發(fā)和維護(hù)成本。該數(shù)據(jù)共享交互方法與傳統(tǒng)方法相比,單個(gè)供水工程布設(shè)周期縮短50%以上,平均上行數(shù)據(jù)包大小縮小33%,破解了農(nóng)村供水監(jiān)控?cái)?shù)據(jù)缺乏共享交互方法、已建系統(tǒng)數(shù)據(jù)共享費(fèi)用高、維護(hù)成本高的難題。

猜你喜歡
序列化水廠供水
如何建構(gòu)序列化閱讀教學(xué)
甘肅教育(2020年14期)2020-09-11 07:58:36
毗河供水一期工程
超濾膜在再生水廠應(yīng)用工程實(shí)踐
水廠自動(dòng)化技術(shù)的應(yīng)用解析
水廠環(huán)狀管網(wǎng)平差計(jì)算與分析
分區(qū)分壓供水在雕鶚?biāo)畯S供水中的應(yīng)用
Java 反序列化漏洞研究
供水產(chǎn)銷差的組成與管控建議
作文訓(xùn)練微格化、序列化初探
甘肅引洮供水二期工程年內(nèi)開(kāi)建
微山县| 庆云县| 姚安县| 丁青县| 奎屯市| 钟山县| 离岛区| 磐石市| 疏勒县| 鄄城县| 宣武区| 隆昌县| 邮箱| 舒城县| 中山市| 荣昌县| 恩施市| 丰都县| 郴州市| 沙洋县| 横峰县| 晋江市| 农安县| 清河县| 万山特区| 勐海县| 长岛县| 华亭县| 保康县| 博客| 绥阳县| 沂水县| 西藏| 旬邑县| 丽水市| 札达县| 靖宇县| 新宁县| 东乡族自治县| 田林县| 诏安县|