夏輝,錢博
沈陽理工大學信息科學與工程學院
一種面向環境監測的多傳感器協議轉換方法
夏輝,錢博
沈陽理工大學信息科學與工程學院
在使用多種不同協議的傳感器對被監測環境進行全面監測評估時,不同協議無法得到有效統一。本文提出了一種面向環境監測的多傳感器協議轉換方法。對總體框架結構、協議棧的邏輯結構和數據包結構進行了設計。采用多線程任務實現了被檢測環境的數據采集和傳輸,使多種通信協議得到轉換與融合,并對系統傳輸誤碼率進行了分析,驗證了系統的性能。
協議轉換;協議棧;數據包結構;STM32
近年來,隨著通信網絡技術和智能技術的不斷發展,越來越多的智能設備出現在了日常的生活和工作當中,為物聯網、智能家居[1]等發展建立了前提和基礎。采用計算機技術、網絡通信技術及自動化技術相結合的具有自動檢測、調節與控制、自動監測環境及通信功能的智能設備,已經逐漸被應用到了工作與生活中。
文獻[2]在Visual Studio下,用C#實現了RS232協議與TCP/IP協議的轉換。文獻[3]提出一種基于ARM9平臺的嵌入式系統來實現接口轉換。在μCLinux下進行開發,通信遵守modbus協議,實現了在硬件UC-7101與上位機網絡數據的SD卡檢索和正確及時傳輸。雖然這些設計都很好的實現了設計的要求和功能,但是都只采用了單一協議轉換方法,無法適用存在多種傳感器協議的應用環境,在一定程度上造成了成本資源的浪費和通信效率的低下。研究支持多通信接口、通用性好和實時性高的多協議轉換[4]系統,不僅可以同時進行多種協議的轉換,提高通信的效率,還大大降低了人力、物力。
綜上,為解決在不同環境中使用多種具有不同協議的傳感器與以太網互聯的問題,本文提出了一種嵌入式多傳感器協議轉換方法,用于家庭和工廠倉庫的環境監測。
2.1 總體設計
總體模型如圖1:模塊一和模塊二分別模擬兩個不同場景——家庭環境和工廠倉庫環境,主要對家庭和倉庫的安全環境進行監測,如溫濕度、光照、有害氣體等。每個場景中有以STM32[5]為中心處理器的多協議轉換系統,采用RS232、RS485、IIC等通信協議的傳感器設備連接到STM32處理器上,轉換系統對RS232、RS485、IIC等通信協議進行轉換、封裝、融合通過以太網連接到上位機。
系統對多種不同協議類型的數據進行處理,接收來自接口設備的數據流,并對其進行格式轉換、封裝、融合,使之成為可以在以太網中傳播的數據幀;對來自以太網的數據幀進行解析,并轉換成與各接口協議相匹配的數據幀送達響應設備。
2.2 傳感器數據位及協議分析
針對工廠倉庫和家庭環境的安全防護的應用,本系統涉及的傳感器有溫濕度傳感器、一氧化碳傳感器、光照傳感器、二氧化碳傳感器和聲音傳感器等,數據信息如表1:

表1 傳感器數據信息
溫濕度傳感器采集的數據中溫度、濕度數值各占8bit。一氧化碳傳感器的采集數據中一氧化碳濃度值占16bit。光傳感器的光照強度占24bit。聲音傳感器的分貝值占8bit。二氧化碳傳感器的二氧化碳濃度值占16bit。
系統涉及應用場景中的傳感器采用的通信協議主要有RS232、RS485和IIC協議,所以本文中的協議轉換主要針對RS232、RS485和IIC協議與TCP/IP協議之間的轉換。
3.1 協議棧設計
本文對嵌入式協議棧進行了設計,協議棧采用了分層結構,并對傳統的協議棧進行了簡化。協議棧的結構如圖2。

圖1 總體設計模型

圖2 協議棧邏輯結構
IIC、RS232、RS485接收驅動負責對節點設備的數據進行接收,IIC、RS232、RS485協議處理負責對數據幀進行處理,提取出有效數據。以太網接收驅動將提取出的有效數據進行封裝處理并發送出去,保證數據鏈路層的有效傳輸。IP處理、TCP處理分別對數據段添加IP首部、TCP首部并將數據幀通過網絡層發送出去。IP發送負責將IP數據報發送給下一層,同時會受ICMP、TCP、SOCK?ET API的調用。
3.2 數據包結構設計
發往以太網模塊之前需將各傳感器數據進行打包封裝,統一轉換成串行協議。數據包格式如圖3,由包頭、ID、數據長度、數據段、校驗碼和包尾等字段組成。將傳感器數據按圖3的格式進行封裝,然后再發送到以太網模塊按以太網標準幀格式進行封裝。傳感器中提取的有效數據由Id、標識符和采集數據組成,Id表示傳感器節點地址,標識符用于對傳感器數據進行標識,數據部分為傳感器采集的數據。
本系統中的傳感器最大有效數據位占31bit,如光照傳感器,其中光照強度占24bit,標識符占4bit、Id占3bit。所以在數據包結構中的數據段設為0到4個字節。對于一個字節中沒有被有效數據占用的位用0填充,用作預留位。根據被檢測環境的需求可以添加一定數量的傳感器節點,各字段的容量也可以進行適當的擴充。

圖3 數據包格式
(1)包頭:表示一個數據包的開始,本協議中包頭占一個字節,用0x0A表示。
(2)ID:表示整個ARM監控節點的地址,占一個字節,即本系統最大可以容納256個監控節點。
(3)數據長度:用于表示數據段的大小,占用一個節點。
(4)數據段:它包含了傳感器器節點的Id、數據標識符和傳感器采集的數據。
(5)校驗位:用于對整個數據包中的數據進行校驗,占一個字節。
(6)包尾:表示數據包的結束,占一個字節,用0x0F表示。
3.3 測試結果與分析
利用網口調試助手調試接口參數,并接收傳感器數據,向監測節點發送請求數據。圖4為經過協議轉換后上位機接收到的數據,數據采用16進制格式,0x0A和0x0F分別是數據包的包頭和包尾,01是監測節點的ID,04為數據長度,表明數據占4個字節,11 1B 02 25為傳感器的有效數據,53為校驗和。

圖4 上位機接收的數據
對系統的準確性進行了測試。圖5為傳輸的誤碼率,由于TCP/IP在傳輸速率上遠高于RS232、RS485和IIC,所以本文主要對RS232/485、IIC的傳輸速率進行設置,通過降低傳輸速率來測試接口的極限情況。

圖5 傳輸誤碼率
每隔100ms發送一條數據幀,每10000條數據統計一次,分別測試不同傳輸速率下的誤碼率。從誤碼率上看,當低速接口的傳輸速率降低到4800bps的時候,TCP/IP接口與RS232、RS485接口之間的誤碼率為0.33%和0.31%,TCP/IP接口與IIC接口之間的誤碼率為0.28%。主要原因是,兩端接口的傳輸速率相差過大時,會引起緩存區溢出,導致數據傳輸錯誤。這里可以通過加大緩存區存儲空間和降低數據包的生存時間來調整。
本文提出的面向環境監測的多傳感器協議轉換方法為多傳感器協議轉換、封裝、融合提供了平臺,具有很好的實際意義。大大節約了設備成本,為物聯網技術的更好發展提供了技術支持。
[1]孫曉曄,成彬.串口轉以太網模塊配置軟件設計及實現[J].微型機與應用,2015,34(22):73-75.
[2]胡杰,張飛,葉良朋.基于STM32的煤礦監控分站的設計與實現[J].煤礦機械,2016,37(07),174-176.
遼寧省教育廳科學研究資助項目(No.L2015462)。