董建忠,程博倫,黃 哲
(1.新疆塔里木河流域管理局信息中心,新疆 庫爾勒 841000;2.新疆塔里木河流域巴音郭楞管理局,新疆 庫爾勒 841000;3.新疆塔里木河流域巴音郭楞管理局博斯騰湖管理處,新疆 博湖 841400)
傳統(tǒng)型RTU(遠(yuǎn)程終端設(shè)備)一直是數(shù)據(jù)通信領(lǐng)域的主流設(shè)備之一,但隨著技術(shù)的不斷發(fā)展,新型DTU可以提供更快速、更可靠的數(shù)據(jù)傳輸,同時支持更多種類的數(shù)據(jù)傳輸協(xié)議,新型DTU可以采用128位AES加密算法以加強數(shù)據(jù)傳輸?shù)陌踩?,新型DTU還可以提供更長的使用壽命,更低的故障率等,本文主要討論使用新型DTU+服務(wù)器端軟件替代通用型RTU的思路和方法。
市面上存在2種不同形式的RTU,即通用型RTU和專用型RTU。專用型RTU針對項目或某種前端設(shè)備簡化RTU設(shè)計,使之僅處理特定型號的前端設(shè)備的輸入輸出,并針對項目需求僅輸出特定規(guī)約的數(shù)據(jù)格式,成本較低;通用型RTU內(nèi)部集成各種類型前端設(shè)備的處理規(guī)則,并為了適配服務(wù)器端需求,又集成了各種規(guī)約處理方法,成本較高。
利用支持MQTT協(xié)議透傳的DTU,將通用型RTU的前端處理規(guī)則和后端規(guī)約,以配置文件的方式存儲于服務(wù)器端,當(dāng)?shù)竭_(dá)指定的時間或條件后,服務(wù)器端通過讀取配置文件,對前端DTU進行輪詢,并根據(jù)配置文件解析前端DTU返回的數(shù)據(jù),經(jīng)計算后,按照配置文件中的指定規(guī)約將數(shù)據(jù)進行打包并發(fā)送給數(shù)據(jù)接收服務(wù)器。這樣,就使用最低成本的DTU+服務(wù)器端配置文件+定時輪詢,實現(xiàn)了原來高成本的通用型RTU所具有的功能。
據(jù)測算,使用該方法成本僅為通用型RTU的1/10-1/30,具有較好的經(jīng)濟效益。可供類似工程參考。
RTU是Remote Terminal Unit的縮寫,即遠(yuǎn)程終端單元。它是一種在監(jiān)控和控制系統(tǒng)中常用的設(shè)備,主要用于收集和傳輸現(xiàn)場監(jiān)測點的數(shù)據(jù)并向控制中心發(fā)送反饋信號。
RTU通常由數(shù)據(jù)采集模塊、通訊模塊、控制模塊和電源模塊等組成。數(shù)據(jù)采集模塊負(fù)責(zé)接收傳感器的監(jiān)測數(shù)據(jù),通訊模塊負(fù)責(zé)將數(shù)據(jù)傳輸?shù)娇刂浦行幕蚱渌O(shè)備,控制模塊負(fù)責(zé)執(zhí)行控制指令,電源模塊負(fù)責(zé)為整個設(shè)備提供電力。
RTU的工作原理是,將現(xiàn)場監(jiān)測點的數(shù)據(jù)采集、存儲和處理,然后將數(shù)據(jù)通過通訊模塊傳輸?shù)竭h(yuǎn)程控制中心,控制中心根據(jù)接收到的數(shù)據(jù)進行分析和處理,然后向現(xiàn)場下發(fā)控制指令,使得現(xiàn)場設(shè)備實現(xiàn)自動化控制。RTU通過現(xiàn)場總線與各種設(shè)備進行連接,在無線電、有線電以及光纖等各類信道上傳輸數(shù)據(jù)。原理如圖1所示。
圖1 RTU的工作原理
由圖1可知,數(shù)據(jù)采集系統(tǒng)可分為4個部分:前端設(shè)備、RTU、DTU、數(shù)據(jù)接收服務(wù)器。
下面簡要分析數(shù)據(jù)采集系統(tǒng)的一般工作流程:
(1)取數(shù)。前端設(shè)備與RTU通過RS485接口連接,RTU通過RS485接口向前端設(shè)備發(fā)送取數(shù)指令,前端設(shè)備接到取數(shù)指令后,將數(shù)據(jù)通過RS485接口返回RTU
(2)封包。RTU接到前端設(shè)備返回的數(shù)據(jù)后,根據(jù)解析規(guī)則進行解析,解析后的數(shù)據(jù)根據(jù)后端數(shù)據(jù)接收服務(wù)器的數(shù)據(jù)傳輸規(guī)約進行封包,一般的封包規(guī)則例如:前綴+站碼+時間+數(shù)據(jù)含義+數(shù)據(jù)+校驗碼+結(jié)束符。
(3)傳輸。RTU喚醒DTU,通過AT指令撥號,將DTU與數(shù)據(jù)接收服務(wù)器建立連接通道,連接完成后,RTU將封包后的數(shù)據(jù)通過RS232接口發(fā)向DTU,DTU通過連接通道將封包數(shù)據(jù)發(fā)給數(shù)據(jù)接收服務(wù)器。
(4)接收及解包。數(shù)據(jù)接收服務(wù)器接收到封包數(shù)據(jù)后,首先進行校驗,校驗無誤后,按照解包規(guī)則,依次解析出站碼、時間、數(shù)據(jù)含義、數(shù)據(jù),然后將數(shù)據(jù)寫入數(shù)據(jù)庫,并記錄接收日志。
DTU是Data Terminal Unit的縮寫,即數(shù)據(jù)終端單元,它是一種用于將各種終端設(shè)備的數(shù)據(jù)集成到互聯(lián)網(wǎng)等公網(wǎng)中的設(shè)備。
DTU的工作原理是,通過各種通訊接口(如RS232、RS485、CAN等)與終端設(shè)備連接,采集設(shè)備的數(shù)據(jù),然后通過無線或有線網(wǎng)絡(luò)將數(shù)據(jù)傳輸?shù)竭h(yuǎn)端的監(jiān)控平臺或者基站。
DTU設(shè)備常用在智能家居、工業(yè)自動化、農(nóng)業(yè)、車輛追蹤、遠(yuǎn)程監(jiān)控等領(lǐng)域。在智能家居中,DTU作為智能家居系統(tǒng)與各種傳感器、攝像頭等設(shè)備連接的橋梁,實現(xiàn)設(shè)備之間的數(shù)據(jù)通訊和交互控制。在工業(yè)自動化中,DTU用于采集并傳輸各類工業(yè)設(shè)備的數(shù)據(jù),以便于管理人員對生產(chǎn)線進行監(jiān)控和控制。在農(nóng)業(yè)方面,DTU可用于對農(nóng)業(yè)設(shè)備進行遠(yuǎn)程監(jiān)控,實現(xiàn)種植、灌溉等細(xì)節(jié)的自動化控制。原理如圖2所示。
圖2 DTU的工作原理
由圖1—2可知,DTU的構(gòu)造要遠(yuǎn)比RTU簡單,前端基本無數(shù)據(jù)處理能力,以透傳模式連接前端設(shè)備與后端服務(wù)器。服務(wù)器通過透傳模式與前端設(shè)備進行通訊,以輪詢的方式查詢前端設(shè)備數(shù)據(jù),DTU僅起到牽線搭橋的作用。
RTU和DTU都是遠(yuǎn)程終端設(shè)備,但是它們的應(yīng)用場景和工作原理有所不同。
(1)應(yīng)用場景。RTU主要應(yīng)用于工業(yè)控制和自動化領(lǐng)域,用于現(xiàn)場數(shù)據(jù)的采集和處理、控制和保護;DTU主要用于物聯(lián)網(wǎng)領(lǐng)域,提供設(shè)備接入云平臺的功能。
(2)數(shù)據(jù)傳輸方式。RTU通常通過專用的現(xiàn)場通訊網(wǎng)絡(luò),如Modbus、DNP3等協(xié)議,將數(shù)據(jù)傳輸?shù)竭h(yuǎn)端控制中心;而DTU則是利用GPRS、LTE等無線網(wǎng)絡(luò)或以太網(wǎng)等有線網(wǎng)絡(luò),將設(shè)備的數(shù)據(jù)傳輸?shù)皆贫恕?/p>
(3)數(shù)據(jù)處理能力。RTU通常具有較強的實時數(shù)據(jù)處理能力,能夠在現(xiàn)場進行控制、監(jiān)測和調(diào)節(jié);而DTU則主要負(fù)責(zé)將設(shè)備采集的數(shù)據(jù)上傳云端,由云端進行數(shù)據(jù)分析和處理。
(4)價格。由于RTU需要更高的硬件配置和工業(yè)級的準(zhǔn)確度、可靠性和抗干擾性能,因此價格通常較高。而DTU的造價相對較低,主要是由于其專注于物聯(lián)網(wǎng)接入領(lǐng)域而不需要過多重視工業(yè)級的指標(biāo)。
總之,RTU主要用于工業(yè)自動化領(lǐng)域,DTU則屬于物聯(lián)網(wǎng)領(lǐng)域。其主要區(qū)別在于應(yīng)用場景、數(shù)據(jù)傳輸方式、數(shù)據(jù)處理能力和價格等方面。
如果能通過技術(shù)手段,將RTU的優(yōu)勢與DTU的低廉價格相結(jié)合,將有很好的應(yīng)用價值。
由于DTU本身數(shù)據(jù)處理能力較弱,將RTU所具有的取數(shù)規(guī)則、解析規(guī)則、封包規(guī)則等均以文件方式存放在服務(wù)器端,服務(wù)器通過DTU建立的透傳通道直接與前端設(shè)備對話,將取數(shù)指令發(fā)送給前端設(shè)備,再通過解析規(guī)則解析傳回的數(shù)據(jù),然后將解析完的數(shù)據(jù)按照封包規(guī)則將數(shù)據(jù)進行封包,最后發(fā)送給數(shù)據(jù)接收服務(wù)器,這樣,就可以完成用服務(wù)器端的軟件+DTU替代RTU進行數(shù)據(jù)采集的工作。原理如圖3所示。
圖3 +DTU的工作原理
某型RTU在塔里木河流域管理局水利系統(tǒng)中有著廣泛應(yīng)用,但其價格較為高昂,采購價格約9000元/臺,再算上安裝費用,保守估計每臺價格在1.1萬元。
由于服務(wù)商已全面將數(shù)據(jù)業(yè)務(wù)遷移到4G,2G、3G業(yè)務(wù)已停止服務(wù),因此,DTU應(yīng)支持4G全網(wǎng)通;考慮到現(xiàn)場的惡劣環(huán)境,應(yīng)支持寬電壓;在低溫和高溫環(huán)境下正常工作;支持多種網(wǎng)絡(luò)傳輸協(xié)議透傳;至少有一個RS485串口等。最簡規(guī)格參數(shù)見表1。
智嵌物聯(lián)ZQWL-GD2110YM型DTU即可滿足上述要求,采購價格210元/臺,算上安裝費用價格300元/臺。
計算機端使用USB轉(zhuǎn)485轉(zhuǎn)換器,連接4GDTU的RS485接口,在DTU的電源接口處接入9~36V直流電,待DTU正常啟動后,使用智嵌物聯(lián)提供的4GDTU配置軟件對DTU進行配置,如圖4所示。
圖4 4G DTU配置軟件
勾選MQTT,點擊設(shè)置,進入MQTT設(shè)置界面如圖5所示。
圖5 MQTT設(shè)置界面
按照下表2設(shè)置MQTT服務(wù)器參數(shù),填寫完成后確定退出,點擊圖4中的保存參數(shù),將設(shè)置保存在DTU。
表2 MQTT設(shè)置參數(shù)表
2.3.1功能分析
(1)定義MQTT服務(wù)器,數(shù)據(jù)接收服務(wù)器,站點列表文件,站點配置文件。可以選擇自己架設(shè)MQTT服務(wù)器,一般選擇APACHE ACTIVEMQ,或APACHE APPOLLO,也可以利用網(wǎng)上免費的MQTT服務(wù)器,如:broker-cn.emqx.io,端口號:1883。如果是正式的生產(chǎn)環(huán)境,建議搭建自己的MQTT服務(wù)器。之所以還要設(shè)定數(shù)據(jù)接收服務(wù)器而不是直接將接收到的數(shù)據(jù)入庫,主要是基于如下考慮:①本文只是實驗性質(zhì),小范圍試用,不宜改變原有的數(shù)據(jù)采集架構(gòu);②原有的數(shù)據(jù)接收服務(wù)器有數(shù)據(jù)校驗功能,而數(shù)據(jù)庫本身是沒有數(shù)據(jù)校驗功能的,直接入庫易假造數(shù)據(jù)。可以用JSON文件存儲配置,也可以將配置寫入數(shù)據(jù)庫,如站點較多,建議使用數(shù)據(jù)庫,本次采用JSON文件以減少復(fù)雜度。配置文件保存MQTT服務(wù)器、數(shù)據(jù)接收服務(wù)器的IP地址、端口號,訂閱和發(fā)布的頻道信息。站點列表文件保存站點列表,包括站點名稱、站點編碼等。站點配置文件保存站點名稱、站點編碼,前端設(shè)備型號,取數(shù)指令,回數(shù)指令格式,誤差值調(diào)整,回數(shù)解析公式等。
(2)定義讀取配置接口。
(3)將各功能分成不同的模塊,有助于減少每個模塊的復(fù)雜度,也便于模塊的復(fù)用。
(4)主程序?qū)崿F(xiàn)如下功能:連接MQTT服務(wù)器,訂閱DTU上傳頻道,下發(fā)取數(shù)指令到DTU,接收DTU返回指令,解析返回指令,加工數(shù)據(jù),發(fā)送數(shù)據(jù)到數(shù)據(jù)接收服務(wù)器,定時循環(huán),運行狀態(tài)寫日志,出現(xiàn)故障向釘釘群報警。
(5)后臺啟動主程序。在windows系統(tǒng)中,可以通過將程序做成服務(wù)的方式以避免不小心關(guān)閉窗口導(dǎo)致程序被關(guān)閉;而在linux系統(tǒng)中,可以通過后臺啟動程序,啟動完畢后可以在進程中發(fā)現(xiàn)主程序,這樣也能避免不小心主程序被關(guān)閉。
(6)后臺監(jiān)控主程序,一旦發(fā)現(xiàn)主程序意外退出,立刻重啟主程序。
(7)其他的一些問題。①一些RTU具有超限加報功能,從服務(wù)器端實現(xiàn)也是很方便的。首先在配置文件中對該站要設(shè)置警戒值,可以是高限,也可以是低限。當(dāng)服務(wù)器端取數(shù)指令發(fā)出后,待回數(shù)指令解析后,如數(shù)據(jù)高于高限或低于低限,則服務(wù)器進入加密采數(shù)程序,即取數(shù)間隔減小,上報間隔也減少,即實現(xiàn)了超限加報功能。當(dāng)數(shù)據(jù)處于正常值范圍,則轉(zhuǎn)入正常采集數(shù)據(jù)模塊。②RTU具有本地存儲,遠(yuǎn)程召測功能。這部分功能可以考慮將數(shù)據(jù)現(xiàn)存入DTU服務(wù)器端數(shù)據(jù)庫,如數(shù)據(jù)接收服務(wù)器故障導(dǎo)致期間數(shù)據(jù)丟失,可以從DTU服務(wù)器數(shù)據(jù)庫中查詢歷史數(shù)據(jù)后,重新將這部分?jǐn)?shù)據(jù)發(fā)送到數(shù)據(jù)接收服務(wù)器即可。DTU本身也具有一定的數(shù)據(jù)存儲能力,也可以用指令找回歷史數(shù)據(jù)發(fā)送到數(shù)據(jù)接收服務(wù)器即可。
為實現(xiàn)2.3節(jié)服務(wù)器端功能,在一臺安裝centos的linux虛擬機服務(wù)器上,以python3.7作為開發(fā)環(huán)境進行開發(fā),以paho-mqtt模塊為客戶端,逐個實現(xiàn)2.3節(jié)服務(wù)器端主程序功能,由于塔里木河流域管理局使用的《塔里木河流域水資源信息化整合項目數(shù)據(jù)采集編碼通信規(guī)約》規(guī)定了數(shù)據(jù)傳輸?shù)母袷?,以SW+站碼+時間+數(shù)據(jù)標(biāo)識+數(shù)據(jù)+校驗碼+NNN的形式進行傳輸,以python crcmod模塊的mkCrcFun實現(xiàn)校驗碼,其他數(shù)據(jù)使用python的join函數(shù)連接即可用上述的方法,使用了9臺DTU做實驗,每臺DTU6 min取一次數(shù)據(jù),每天共計取數(shù)240條,理想情況下一年回數(shù)788400條,實驗結(jié)果是786974,數(shù)據(jù)返回率99.82%,數(shù)據(jù)損失率<0.3%,滿足實際生產(chǎn)需要。
本文提出一種利用DTU+服務(wù)器端軟件替代傳統(tǒng)RTU的新方法,低成本實現(xiàn)遠(yuǎn)程數(shù)據(jù)采集系統(tǒng)。通過準(zhǔn)確定義系統(tǒng)各個部件的責(zé)任,利用DTU實現(xiàn)基本的數(shù)據(jù)采集與通信,而服務(wù)器端軟件承擔(dān)主要的控制與智能處理,大大降低了遠(yuǎn)程數(shù)據(jù)采集系統(tǒng)的成本和難度。這種軟硬件混合的結(jié)構(gòu)使系統(tǒng)在保證性能的同時顯著降低成本,極具實用價值。
當(dāng)然,本文僅是初步探索,還存在一定不足。首先,文中系統(tǒng)較為簡單,無法處理海量數(shù)據(jù)和復(fù)雜控制場景,后續(xù)需要深入研究。其次,安全性問題沒有進行深入分析,實際應(yīng)用中安全方面也需要重點考慮。再次,該結(jié)構(gòu)下系統(tǒng)的可靠性如何保證也需進一步探討。