袁顯明







摘 要:針對系留氣球遠程監控終端的需求,設計了一種基于MODBUS TCP通信協議的監控系統。文章詳細描述了MODBUS TCP通信協議的技術細節,并利用其開發了遠程監控客戶端,通過與系留氣球測控裝置PLC通信,實現了球體參數的采集、顯示及執行機構的控制,同時將系統的運行數據保存到Access數據庫中備查。
關鍵詞:系留氣球;MODBUS? TCP協議;遠程監控系統
中圖分類號:TP277 文獻標識碼:A 文章編號:1674-1064(2020)08-0025-02
系留氣球作為一種依靠凈浮力升空的浮空飛行器,在地面錨泊狀態下,仍需監控囊體壓力,確保球體安全。針對系留氣球地面錨泊的特點,研制了一套以PLC為核心的監控設備,代替原有系統完成囊體壓力的監控與調節,以延長球載設備的電氣壽命。為方便監控人員實時了解球體狀態,需設計一套遠程監控終端,以實現囊體壓力的遠程監控與調節[1-2]。遠程監控終端應具備如下功能:
終端設備安裝在遠距離的地面測控中心,能夠穩定地與PLC通信實現信息的交互。
操作員能夠在地面測控中心實時監控囊體壓力和風機的工作狀態,并將數據保存到數據庫以備后續審查。操作員能夠控制球載風機的開啟和關閉,系統要提供必要的聲音報警和視覺信號報警。系統需具備較高的可靠度等級,能長期穩定的工作。
文章主要介紹了一種通過網口通信實現數據的遠距離傳輸和控制的監控系統,該系統能較好地完成系留氣球遠程監控終端的任務,并具有較強的抗干擾能力和擴展性。
1 系統原理
1.1 系統結構
由于錨泊車和地面測控中心之間的布線距離較遠,為保證信號的穩定傳輸,在PLC和工控機間增設一對光纖收發器,將電信號轉換為光信號,實現數據的遠距離傳輸,如圖1所示。文章主要討論PLC與地面測控中心工控機間MODBUS TCP通信的設計與實現。
1.2 MODBUS TCP協議
MODBUS TCP/IP應用層協議的PDU與基于串行鏈路的MODBUS協議相同,區別在于ADU的結構中引入了MBAP報文頭。由于采用TCP/IP協議,各個通信設備已經分配了IP地址,MBAP報文頭中單元標示符取代了MODBUS串行鏈路上的地址域,從而用于通過網橋和網關等設備的通訊。TCP協議是建立可靠數據連接的傳輸協議,可以保證數據包傳輸的數據完整性,所以在基于TCP/IP的MODBUS協議的ADU中,不需要串行鏈路中使用的數據校驗域,如圖2所示。
MODBUS TCP協議的功能碼以MODBUS設備間互用性劃分為不同的等級。本系統主要使用到等級0和等級1的功能。等級0代表普遍使用且總體一致的功能;等級1代表有用的功能,但帶有某些特性。
2 系統實現
2.1 硬件設計
光纖收發器提供1路速度為10/100M自適應的以太網接口,工作波長分別為1310nm和1550nm,實現在一根單模光纖上信號的雙向傳輸。PLC為系統核心部件,通過AD和DI模塊對模擬量信號和數字量信號進行采集,通過DO模塊驅動受控設備進行動作。PLC通過以太網端口與遠程工控機進行通信,同時接受監控軟件的控制指令。工控機作為系統的控制中樞,選用標準機架式工控機,滿足命令響應、數據處理、存儲和顯示等功能的需求。采用單色報警燈,并帶有蜂鳴器,監控軟件通過工控機的DO口驅動報警器發出聲光報警。
2.2 軟件設計
本系統監控軟件使用C++語言開發,實現參數采集、設備控制和數據的存儲與查詢功能。軟件主要包含數據通信、數據處理和數據庫等三個單元。
監控軟件通過MODBUS TCP協議功能6(寫單個保持寄存器)向PLC寫入控制指令。如副氣囊風機狀態字保存在MODBUS地址為4X10022的保持寄存器中,狀態字為1時風機開啟,狀態字為0時風機關閉。
開啟副氣囊風機的指令格式如圖3所示。
關閉副氣囊風機的指令格式如圖4所示。
參照副氣囊風機的指令格式,可寫入其他執行機構的控制指令。編寫完成控制指令數據包TxData[]后,通過客戶端的Socket通道向PLC發送數據,通信周期為500ms。
ClientSocket->Socket->SendBuf(&TxData,sizeof(TxData));
監控軟件通過MODBUS TCP協議功能3(讀單個或多個保持寄存器)向PLC寫入讀數據請求。如讀取MODBUS首地址為4X10000的24個保持寄存器,請求指令格式如圖5所示。
完成請求數據包TxData[]后,通過客戶端的Socket通道向PLC發送數據;同時通過客戶端Socket通道讀取PLC應答數據。
ClientSocket->Socket->SendBuf(&TxData,sizeof(TxData));
ClientSocket->Socket->ReceiveBuf(RxData,sizeof(RxData));
讀保持寄存器請求的PLC應答數據包格式如圖6所示。
監控軟件通過調用庫文件工控機I-DASK.dll,實現與數據I/O卡的通信。
2.3 數據處理
數據顯示:監控軟件從RJ45接受到的數據遵從MODBUS TCP協議。去除MBAP報文頭、站地址和功能代碼后,余下的為有效字節。依據通信協議對數據進行解析后顯示在軟件界面上。狀態顯示:為了避免雷同,使得界面具有更好的美觀性,在對設備的狀態進行顯示的時候,采用了虛擬LED燈、立體按鈕等不同的視覺表達方式。數據作圖:對囊體壓力參數顯示采用虛擬儀表的作圖方式,能夠直觀地表達當前壓力狀態。故障告警:監控軟件將解析后的數據與告警閾值進行比對,若參數的值超出報警閾值,則生成相應的報警信號和報警等級。根據報警等級在報警信息欄中以黃色或紅色顯示當前報警原因,同時輸出兩路高電平控制信號,驅動報警器和報警燈工作。
2.4 數據庫操作
本系統采用Access數據庫。Access具有強大的數據處理、統計分析能力,利用Access的查詢功能,可以方便地進行各類匯總、平均統計。軟件使用ADOTable組件訪問數據庫,開發人員通過代碼進行數據庫的動態連接。
ADOTable組件只能使用字段編輯器來決定使用的字段是哪些,無法對數據庫下達SQL命令。要連接數據庫,又要對數據庫下命令需使用ADOQuery組件。ADOQuery組件與ADOTable組件一樣,使用ConnectionString屬性連接數據庫,在連接數據庫后通過SQL屬性取回數據。在設置SQL屬性之前,不可以將ADOTable組件的Active屬性設置為True。
軟件使用SQL語言進行數據的查詢操作。SQL語言是關系型數據庫中的標準化查詢語言,能夠對目標數據庫完成數據定義、數據查詢和數據控制等操作。SQL查詢命令如下:
Select 數據字段 From 表 where 限制條件1 and 限制條件2...
DataSource組件是ADOTable組件與其他具有數據感知能力的數據庫組件的溝通橋梁。通過DataSource組件才可以取得數據庫文件內的數據字段。
數據庫感知組件通過與DataSource組件的連接,取得數據庫中的記錄,并將其顯示出來。該軟件通過ADOQuery組件和SQL命令篩選出數據表中數據后,數據感知組件DBGird和DBEdit將數據內容顯示出來,實現歷史記錄的查詢。
3 結語
針對系留氣球遠程監控終端的需求,設計了上文所述的監控系統。該系統運行穩定,具有數據采集、傳輸、處理準確及時,實時性好,抗干擾能力強,軟件界面簡潔明了,操作簡單等優點。
參考文獻
[1] 楊天祥,曾騰輝,楊瀟文.系留氣球測控系統設計[J].測控技術,2016,35(3):12.
[2] 唐黎江.機動式系統氣球測控系統軟件設計與實現[J].機械與電子,2013(2):23.