馬志艷,李江華,章霞東,莫建霖
(1. 湖北工業大學農業機械工程研究設計院,武漢市,430068; 2. 廣西農業機械研究院有限公司,南寧市,530007)
隨著物聯網技術的快速發展,其在農業信息技術中的應用已是農業現代化發展的趨勢[1]。MQTT協議(Message Queuing Telemetry Transport 消息隊列遙測傳輸)作為物聯網的重要通訊協議,已在智能家居行業廣泛應用[2-4],其網絡傳輸開銷小,靈活的訂閱方式等特性使其成為數據傳輸的利器[5-8]。目前,物聯網技術在國內大型農機裝備信息化方面的應用開始逐漸增多,但目前仍存在較多的利用嵌入式系統進行數據采集,再通過對存儲卡的讀取來獲取對農機作業數據的傳統方式[9-11]。林聰偉等[12]設計的物聯網可視化系統利用物聯網協議的三維可視化實現了對智能制造生產可視化監控??翟拼ǖ萚13]設計的基于消息隊列遙測傳輸協議的灌溉系統,利用隊列消息實現了遠程灌溉。李旭等[14]研究的基于云平臺的綜采設備群遠程故障診斷系統,實現了井下作業設備的數據實時采集。在目前國內甘蔗收割機作業過程中,甘蔗收割機刀盤轉速、行進速度、切段轉速等作業參數與車輛工況參數對甘蔗的收割質量、車輛狀態甚至是來年的甘蔗發芽率等都具有重要意義。設計了一種基于云平臺技術的甘蔗收割機作業數據實時采集與遠程傳輸系統,該系統采用MQTT傳輸協議和TCP/IP協議實現對甘蔗收割機工況數據的采集和遠程傳輸,同時開發了基于JAVA的移動端和PC端程序,實現了遠程訪問甘蔗收割機實時數據的功能,可以讓終端用戶實時監測到甘蔗收割機的作業工況數據和車輛工況,為甘蔗收割機的智能化與信息化發展提供了重要的數據支持。
系統總體上可分為數據感知層、數據采集層、網絡傳輸層、云服務層和應用層,如圖1所示。數據感知層由多個數據傳感器組成,是甘蔗收割機實現數據采集的重要來源和方式,包含壓力、溫度、轉速、流量等傳感器;數據采集層主要是由PLC和CAN總線進行數據采集并且通過車載終端進行對感知層數據的采集然后進行處理;網絡傳輸層利用車載終端和云服務器組成,采用物聯網主流傳輸協議MQTT進行數據傳輸,該協議具有動態性和松散耦合性的特點,極大地滿足了物聯網技術的松散通訊的功能。車載終端通過MQTT協議以JSON格式將數據上傳到企業云服務器。網絡傳輸層是應用層和數據采集層的關鍵銜接層,實現了甘蔗收割機數據的上傳、存儲和發送功能;應用層由云服務端提供數據服務,最終用戶通過Web或移動端程序實現對甘蔗收割機數據的實時監測,為甘蔗收割機的工作質量改進和信息化提供了重要的數據基礎。

圖1 甘蔗聯合收割機作業遠程信息平臺框架圖
數據傳輸采用MQTT通訊協議,MQTT通訊模型示意圖如圖2所示,該協議通過客戶端和服務器端實現數據傳輸即發布者(Publish)、代理(Broker)(服務器)、訂閱者(Subscribe)。其中,消息的發布者和訂閱者都是客戶端,消息代理是服務器,消息發布者可以同時是訂閱者。MQTT會構建底層網絡傳輸,將建立客戶端到服務器的連接,提供兩者之間的一個有序的、無損的、基于字節流的雙向傳輸。其中一個MQTT數據包由:固定頭(Fixed header)、可變頭(Variable header)、消息體(payload)三部分構成。其中固定頭(Fixed header),存在于所有MQTT數據包中,表示數據包類型及數據包的分組類標識,固定報頭的第一個字節分為控制報文的類型(4bit),以及控制報文類型的標志位,固定報頭的bit0-bit3為標志位,依照報文類型有不同的含義,第二個字節開始是剩余長度字段,是用于記錄剩余報文長度的,具體格式如表3所示??勺冾^(Variable header),存在于部分MQTT數據包中位于固定的頭和負載之間,數據包類型決定了可變頭是否存在及其具體內容,較常的應用是作為包的標識,只有某些報文才擁有可變報頭,具體格式如表4所示。消息體(Payload),存在于MQTT數據包的第三部分,包含CONNECT、SUBSCRIBE、SUBACK、UNSUBSCRIBE四種類型的消息。

圖2 MQTT通訊模型示意圖

bit76543210Byte1控制報文類型控制報文類型標志位Byte2剩余長度

bit76543210Byte1報文標識符MSBByte2報文標識符LSB
甘蔗收割機實時工作數據主要分為三類:發動機工作參數、車輛作業部件工況數據和車輛GPS位置數據。其中基于CAN總線采集的發動機工作參數主要有發動機轉速、水溫、燃油剩余等;基于PLC采集的車輛工作部件工況數據主要有風機壓力、切斷壓力、行走壓力、刀盤壓力、刀盤轉速、切段轉速、風機轉速、刀盤高度、液壓油溫、行走速度等;基于Modbus實現對甘蔗收割機的實時定位數據的采集。
CAN總線因其簡單實用可靠等特點而廣泛應用于工業自動化,選用CAN總線對甘蔗收割機的車載ECU(Electronic Control Unit,電子控制器單元)進行數據讀取,從而獲得發動機相關工作數據。CAN總線數據采集宏指令主要包括通訊設置、數據寫入與讀取以及通訊停止等功能。車載終端HMI通過調用相關宏指令實現對CAN通訊參數設置,同時通過調用相關宏指令實現對ECU的數據采集,CAN數據采集模塊的變量地址分配表如表1所示,CAN通訊流程如圖5所示。

表1 CAN數據采集模塊的變量地址分配表Tab. 1 Variable address allocation table of CAN data acquisition module

圖5 CAN通訊流程圖
收割機工作部件數據采集選用西門子S7-200 EM AE08模擬量輸入模塊,具有較好的穩定性。對于自動化系統中網絡通信功能及單屏或多屏 HMI 交互的自動化系統,易于設計和實施,可快速搭建模擬量和數字量的采集系統。甘蔗收割機數據采集主要利用施耐德XSAV12373轉速傳感器、MPS拉繩式大型(7 000~15 000 mm)位移傳感器和FTN的4K-205壓力傳感器實現數據檢測并上傳到PLC從而實現數據的采集,傳感器的安裝及車載PLC采集設備如圖6所示。

(a) 轉速傳感器 (b) 壓力傳感器
按照甘蔗收割機作業工況采集需求來編寫PLC程序,在程序中建立模擬量輸入與變量地址之間的對應關系,實現模擬量信號的數據轉換,從而完成對甘蔗收割機工況數據的實時采集。車載HMI程序通過對PLC內部變量地址的訪問來獲取甘蔗收割機作業部件傳感器數據。PLC數據采集模塊的 變量地址分配表如表2所示。

表2 PLC數據采集模塊的變量地址分配表Tab. 2 Variable address allocation table of PLC data acquisition module
定位模塊選用HS6601,該型號是一款具有GPS定位和北斗定位的雙模定位終端,可以快速、精確獲取作業車輛位置。GPS/北斗定位模塊支持標準Modbus通信協議,符合國家標準GBT 19582.1—2008《基于Modbus協議的工業自動化網絡規范》。車載HMI終端采用Modbus RTU通訊協議,通過接收、解析數據總線上的幀數據,根據解析結果返回數據。Modbus幀格式如圖7所示。

圖7 Modbus 幀格式
根據定位模塊功能說明,在車載終端與定位模塊實現位置信息數據傳輸過程中,將所有的位置數據格式均設定為dddmm.mmmmm,其含義為:度度度分分.分分分分分分。在車載終端程序中通過對經緯度地址的設置,同時將相應的地址標簽加入程序地址庫,以類似PLC獲取數據的方式,實現對甘蔗收割機實時定位數據的獲取。
車載終端數據發送通過對MQTT宏指令程序的編寫實現對甘蔗收割機工況數據的打包和發布。在MQTT宏指令中cJSON_Object對象的值如果是為JSON對象,則遞歸輸出JSON格式數據,否則就直接顯示鍵和值。對于從CAN、PLC和Modbus采集到的工況數據,需要在車載端HMI程序地址標簽庫中建立一個用于MQTT數據發送的變量列表,同時按照規定的MQTT宏指令發布格式進行發布,即可實現車載端MQTT數據的發送,車載端HMI程序地址標簽庫如圖8所示。

圖8 車載端HMI程序地址標簽庫
另一方面,在車載終端網絡傳輸方式設置中,需要選擇MQTT認證平臺,通過對連接云服務器的網絡參數進行設置,如MQTT認證參數host,port,clientid,username,password等,實現將車載終端地址標簽庫的變量數據通過4G數據卡進行遠程無線發送,MQTT認證參數設置如圖9所示。

圖9 MQTT認證參數設置
遠程數據傳輸與云服務器主要包括基于MQTT的車載終端數據發送程序和云端服務器的搭建。在云服務器上需要搭建Apollo數據接收服務器、SQL Server數據庫服務器和Web服務器。
本系統通過在企業服務器上安裝Apollo服務器,創建并運行甘蔗收割機Broker文件,作為MQTT數據接收服務器來實現從車載端到云端的數據接收。在瀏覽器中對Apollo服務器配置文件apoll.xml中進行連接參數(如用戶名和密碼、IP地址等)的設置,在車載終端連接參數中與此保持一致,即可將采集到數據發送到企業服務器的Apollo數據接收服務器中。Apollo數據接收服務器設置成功后,可實時顯示各客戶端的連接情況與數據傳輸信息。
在企業服務器上安裝SQL Server2008數據庫后,還需要編寫MQTT客戶端和數據庫讀寫程序,訂閱MQTT服務器數據并完成數據自動保存。程序數據接收保存流程圖如圖10所示。其功能是MQTT服務器的連接、數據訂閱和數據庫存儲應用。通過Visual Studio2019 C#平臺開發,調用了MQTT協議相應的依賴包,調用類方法實現MQTT Client的創建,同時設置MQTT中TCP網絡連接的參數,即text Server IP、text Server Port、text User Name、text Password的設置,其分別對應MQTT服務器的地址、端口、用戶名和密碼,通過對MQTT客戶端Client的創建,同時調用MQTT中TCP網絡連接的參數可以實現對MQTT服務器的連接,MQTT客戶端通過對內部程序文件JsonData程序的編寫用來將獲取到的數據進行解析,通過在客戶端中對企業服務器的IP和端口號設置,同時輸入對應的Apollo服務器的用戶名和密碼即可實現MQTT數據的訂閱與解析。

圖10 云平臺數據接收流程圖
SQLServer數據庫的關鍵技術在于數據庫的連接、表的自動創建、消息訂閱和數據寫入數據庫。通過在C#中導入數據庫相關的依賴包并且對SQL的程序進行編寫,該過程的關鍵點在于開發者通過對連接字符串中Data Source、Initial Catalog、UID、PWD的設置從而實現對數據庫的連接,通過對Sql Connection的調用實現對數據的表的自動創建。
MQTT消息訂閱的關鍵點除了主題客戶端中各項連接參數的設置還在于訂閱肢體的設置,在主題訂閱中使用多層通配符#號,以hbsnjy/#的形式實現對hbsnjy以下多層主題的訂閱。在數據庫的數據寫入中如果對接收到的每一條消息都立刻存儲到數據庫中會導致數據庫的頻繁讀寫可能會使程序變得緩慢,為了避免高頻訪問數據庫,采用一次性寫入多條記錄的方式完成數據存儲。SQL Server數據庫實時數據存儲類型如圖11所示。

圖11 云端SQL Server數據庫數據類型圖
甘蔗聯合收割機作業遠程信息平臺Web服務器的開發基于Spring MVC框架實現,負責實現企業服務器數據與前端網頁的數據交互,其功能分為四大模塊:農機地圖、農機列表、實時數據和歷史數據。在程序中農機地圖模塊使用JAVA百度地圖API接口,將數據庫中的經緯度地址以創建標注的形式將當前顯示在地圖中,用來實時顯示甘蔗收割機的數量和位置。農機列表模塊通過在程序中對deviceList.jsp的編寫實現對甘蔗收割機設備ID、設備名稱和車輛信息與工作參數等的顯示。實時數據模塊通過在deviceListData.jsp中以設備ID為組號進行編寫用戶通過對設備ID的選取可以實現對指定甘蔗收割機各項工況數據的實時讀取。歷史數據模塊通過對deviceDataList.jsp實現以設備ID為組號,通過對機組和時間段的選取,歷史數據將會以列表的形式展示。Web功能實現如12所示。

圖12 Web端工況數據圖
在用戶端,用戶可以通過移動端和PC端查看甘蔗收割機實時數據,PC端用戶通過瀏覽器對甘蔗收割機的數據進行實時查看。在移動端的主要功能分為登錄注冊模塊和歷史數據監測模塊。在網絡正常狀態下,系統經過初始化后,利用JDBC技術訪問遠程數據獲取數據庫中管理員的信息,同時將管理員信息導入本地SQLite數據庫中,在管理員界面可以實現對普通用戶的信息管理。普通用戶通過注冊界面對SQLite數據庫的增刪實現個人信息的注冊和注銷。移動端通過連接遠程SQLserver數據庫,實現對收割機的歷史工況數據和最新的數據進行讀取。軟件系統流程圖如13所示。

圖13 移動端軟件操作流程圖
移動端的關鍵技術主要有JDBC連接遠程數據庫和LitePal數據庫框架的應用。通過Java平臺的JDBC的數據庫程序接口可以實現對數據庫的連接和數據查詢。Android平臺基于Java開發通過調用JavaAPI將復雜的SQL語句進行簡潔化的操作,本系統采用SQL server數據庫,通過對系統導入Microsoft JDBC Driver 4.0 for SQLServer依賴包,接著調用Class.forName驅動程序實現程序語句初始化,調用Connection conn =DriverManager.getConnection(url, user, password)從而實現與遠程數據的連接。最后通過調用相應的SQL語句實現對數據的相關操作。
LitePal數據庫框架關鍵技術基于Android的數據庫框架,采用通過對象間關系的映射(ORM),將數據庫功能進行封裝,開發者通過JAVA語言免除編寫SQL語句的語句便可實現對數據表的刪減和增加。極大簡化了程序的數據連接操作。
核心代碼中標簽用來表示指定的所有的映射類型的模型,其中每個映射模型用
系統在廣西省南寧市武鳴區鑼圩鎮廣西農機院全程機械化示范基地進行了試驗運行。試驗車載終端HMI采用顯控MG-070,甘蔗收割機型號4GQ-1C,功率97 kW。甘蔗收割機車載終端HMI如圖14所示。

圖14 甘蔗收割機車載終端HMI
試驗采集了甘蔗收割機從13:00~16:00共3小時的工作數據,中間包括停機測試等間斷性數據采集,數據以一秒鐘采集一次的形式,其中包括發動機工作數據、工作部件工況數據以及定位數據。實際采集時間為1.52 h,該時間段內理論接收數據5 472條,實際收到甘蔗收割機實時傳來數據5 465條,數據丟失7條,數據準確率為99.88%,丟失率為0.12%。經過測試該系統采集數據具較高的穩定性,能夠滿足甘蔗收割機數據采集的需求。
為提高甘蔗收割機作業的信息化水平,本文基于MQTT和云平臺等技術,設計了甘蔗聯合收割機作業遠程信息平臺,實現了如下功能:實現了甘蔗收割機實時工作數據的采集;實現了甘蔗收割機實時數據的傳輸和云端存儲;實現了通過移動端/PC端遠程實時訪問甘蔗收割機的數據。
為驗證甘蔗聯合收割機作業遠程信息平臺的可靠性進行了試驗運行,在有效時間內對甘蔗聯合收割機遠程信息平臺進行測試,實驗結果表明遠程信息平臺準確率為99.88%,并且穩定性較高。結果表明該系統能實現對甘蔗收割機的工作數據實時采集與傳輸、云端存儲和移動端的訪問功能,達到了預期設計目標。