夏輝,錢博
沈陽理工大學(xué)信息科學(xué)與工程學(xué)院
一種面向環(huán)境監(jiān)測(cè)的多傳感器協(xié)議轉(zhuǎn)換方法
夏輝,錢博
沈陽理工大學(xué)信息科學(xué)與工程學(xué)院
在使用多種不同協(xié)議的傳感器對(duì)被監(jiān)測(cè)環(huán)境進(jìn)行全面監(jiān)測(cè)評(píng)估時(shí),不同協(xié)議無法得到有效統(tǒng)一。本文提出了一種面向環(huán)境監(jiān)測(cè)的多傳感器協(xié)議轉(zhuǎn)換方法。對(duì)總體框架結(jié)構(gòu)、協(xié)議棧的邏輯結(jié)構(gòu)和數(shù)據(jù)包結(jié)構(gòu)進(jìn)行了設(shè)計(jì)。采用多線程任務(wù)實(shí)現(xiàn)了被檢測(cè)環(huán)境的數(shù)據(jù)采集和傳輸,使多種通信協(xié)議得到轉(zhuǎn)換與融合,并對(duì)系統(tǒng)傳輸誤碼率進(jìn)行了分析,驗(yàn)證了系統(tǒng)的性能。
協(xié)議轉(zhuǎn)換;協(xié)議棧;數(shù)據(jù)包結(jié)構(gòu);STM32
近年來,隨著通信網(wǎng)絡(luò)技術(shù)和智能技術(shù)的不斷發(fā)展,越來越多的智能設(shè)備出現(xiàn)在了日常的生活和工作當(dāng)中,為物聯(lián)網(wǎng)、智能家居[1]等發(fā)展建立了前提和基礎(chǔ)。采用計(jì)算機(jī)技術(shù)、網(wǎng)絡(luò)通信技術(shù)及自動(dòng)化技術(shù)相結(jié)合的具有自動(dòng)檢測(cè)、調(diào)節(jié)與控制、自動(dòng)監(jiān)測(cè)環(huán)境及通信功能的智能設(shè)備,已經(jīng)逐漸被應(yīng)用到了工作與生活中。
文獻(xiàn)[2]在Visual Studio下,用C#實(shí)現(xiàn)了RS232協(xié)議與TCP/IP協(xié)議的轉(zhuǎn)換。文獻(xiàn)[3]提出一種基于ARM9平臺(tái)的嵌入式系統(tǒng)來實(shí)現(xiàn)接口轉(zhuǎn)換。在μCLinux下進(jìn)行開發(fā),通信遵守modbus協(xié)議,實(shí)現(xiàn)了在硬件UC-7101與上位機(jī)網(wǎng)絡(luò)數(shù)據(jù)的SD卡檢索和正確及時(shí)傳輸。雖然這些設(shè)計(jì)都很好的實(shí)現(xiàn)了設(shè)計(jì)的要求和功能,但是都只采用了單一協(xié)議轉(zhuǎn)換方法,無法適用存在多種傳感器協(xié)議的應(yīng)用環(huán)境,在一定程度上造成了成本資源的浪費(fèi)和通信效率的低下。研究支持多通信接口、通用性好和實(shí)時(shí)性高的多協(xié)議轉(zhuǎn)換[4]系統(tǒng),不僅可以同時(shí)進(jìn)行多種協(xié)議的轉(zhuǎn)換,提高通信的效率,還大大降低了人力、物力。
綜上,為解決在不同環(huán)境中使用多種具有不同協(xié)議的傳感器與以太網(wǎng)互聯(lián)的問題,本文提出了一種嵌入式多傳感器協(xié)議轉(zhuǎn)換方法,用于家庭和工廠倉(cāng)庫(kù)的環(huán)境監(jiān)測(cè)。
2.1 總體設(shè)計(jì)
總體模型如圖1:模塊一和模塊二分別模擬兩個(gè)不同場(chǎng)景——家庭環(huán)境和工廠倉(cāng)庫(kù)環(huán)境,主要對(duì)家庭和倉(cāng)庫(kù)的安全環(huán)境進(jìn)行監(jiān)測(cè),如溫濕度、光照、有害氣體等。每個(gè)場(chǎng)景中有以STM32[5]為中心處理器的多協(xié)議轉(zhuǎn)換系統(tǒng),采用RS232、RS485、IIC等通信協(xié)議的傳感器設(shè)備連接到STM32處理器上,轉(zhuǎn)換系統(tǒng)對(duì)RS232、RS485、IIC等通信協(xié)議進(jìn)行轉(zhuǎn)換、封裝、融合通過以太網(wǎng)連接到上位機(jī)。
系統(tǒng)對(duì)多種不同協(xié)議類型的數(shù)據(jù)進(jìn)行處理,接收來自接口設(shè)備的數(shù)據(jù)流,并對(duì)其進(jìn)行格式轉(zhuǎn)換、封裝、融合,使之成為可以在以太網(wǎng)中傳播的數(shù)據(jù)幀;對(duì)來自以太網(wǎng)的數(shù)據(jù)幀進(jìn)行解析,并轉(zhuǎn)換成與各接口協(xié)議相匹配的數(shù)據(jù)幀送達(dá)響應(yīng)設(shè)備。
2.2 傳感器數(shù)據(jù)位及協(xié)議分析
針對(duì)工廠倉(cāng)庫(kù)和家庭環(huán)境的安全防護(hù)的應(yīng)用,本系統(tǒng)涉及的傳感器有溫濕度傳感器、一氧化碳傳感器、光照傳感器、二氧化碳傳感器和聲音傳感器等,數(shù)據(jù)信息如表1:
表1 傳感器數(shù)據(jù)信息
溫濕度傳感器采集的數(shù)據(jù)中溫度、濕度數(shù)值各占8bit。一氧化碳傳感器的采集數(shù)據(jù)中一氧化碳濃度值占16bit。光傳感器的光照強(qiáng)度占24bit。聲音傳感器的分貝值占8bit。二氧化碳傳感器的二氧化碳濃度值占16bit。
系統(tǒng)涉及應(yīng)用場(chǎng)景中的傳感器采用的通信協(xié)議主要有RS232、RS485和IIC協(xié)議,所以本文中的協(xié)議轉(zhuǎn)換主要針對(duì)RS232、RS485和IIC協(xié)議與TCP/IP協(xié)議之間的轉(zhuǎn)換。
3.1 協(xié)議棧設(shè)計(jì)
本文對(duì)嵌入式協(xié)議棧進(jìn)行了設(shè)計(jì),協(xié)議棧采用了分層結(jié)構(gòu),并對(duì)傳統(tǒng)的協(xié)議棧進(jìn)行了簡(jiǎn)化。協(xié)議棧的結(jié)構(gòu)如圖2。
圖1 總體設(shè)計(jì)模型
圖2 協(xié)議棧邏輯結(jié)構(gòu)
IIC、RS232、RS485接收驅(qū)動(dòng)負(fù)責(zé)對(duì)節(jié)點(diǎn)設(shè)備的數(shù)據(jù)進(jìn)行接收,IIC、RS232、RS485協(xié)議處理負(fù)責(zé)對(duì)數(shù)據(jù)幀進(jìn)行處理,提取出有效數(shù)據(jù)。以太網(wǎng)接收驅(qū)動(dòng)將提取出的有效數(shù)據(jù)進(jìn)行封裝處理并發(fā)送出去,保證數(shù)據(jù)鏈路層的有效傳輸。IP處理、TCP處理分別對(duì)數(shù)據(jù)段添加IP首部、TCP首部并將數(shù)據(jù)幀通過網(wǎng)絡(luò)層發(fā)送出去。IP發(fā)送負(fù)責(zé)將IP數(shù)據(jù)報(bào)發(fā)送給下一層,同時(shí)會(huì)受ICMP、TCP、SOCK?ET API的調(diào)用。
3.2 數(shù)據(jù)包結(jié)構(gòu)設(shè)計(jì)
發(fā)往以太網(wǎng)模塊之前需將各傳感器數(shù)據(jù)進(jìn)行打包封裝,統(tǒng)一轉(zhuǎn)換成串行協(xié)議。數(shù)據(jù)包格式如圖3,由包頭、ID、數(shù)據(jù)長(zhǎng)度、數(shù)據(jù)段、校驗(yàn)碼和包尾等字段組成。將傳感器數(shù)據(jù)按圖3的格式進(jìn)行封裝,然后再發(fā)送到以太網(wǎng)模塊按以太網(wǎng)標(biāo)準(zhǔn)幀格式進(jìn)行封裝。傳感器中提取的有效數(shù)據(jù)由Id、標(biāo)識(shí)符和采集數(shù)據(jù)組成,Id表示傳感器節(jié)點(diǎn)地址,標(biāo)識(shí)符用于對(duì)傳感器數(shù)據(jù)進(jìn)行標(biāo)識(shí),數(shù)據(jù)部分為傳感器采集的數(shù)據(jù)。
本系統(tǒng)中的傳感器最大有效數(shù)據(jù)位占31bit,如光照傳感器,其中光照強(qiáng)度占24bit,標(biāo)識(shí)符占4bit、Id占3bit。所以在數(shù)據(jù)包結(jié)構(gòu)中的數(shù)據(jù)段設(shè)為0到4個(gè)字節(jié)。對(duì)于一個(gè)字節(jié)中沒有被有效數(shù)據(jù)占用的位用0填充,用作預(yù)留位。根據(jù)被檢測(cè)環(huán)境的需求可以添加一定數(shù)量的傳感器節(jié)點(diǎn),各字段的容量也可以進(jìn)行適當(dāng)?shù)臄U(kuò)充。
圖3 數(shù)據(jù)包格式
(1)包頭:表示一個(gè)數(shù)據(jù)包的開始,本協(xié)議中包頭占一個(gè)字節(jié),用0x0A表示。
(2)ID:表示整個(gè)ARM監(jiān)控節(jié)點(diǎn)的地址,占一個(gè)字節(jié),即本系統(tǒng)最大可以容納256個(gè)監(jiān)控節(jié)點(diǎn)。
(3)數(shù)據(jù)長(zhǎng)度:用于表示數(shù)據(jù)段的大小,占用一個(gè)節(jié)點(diǎn)。
(4)數(shù)據(jù)段:它包含了傳感器器節(jié)點(diǎn)的Id、數(shù)據(jù)標(biāo)識(shí)符和傳感器采集的數(shù)據(jù)。
(5)校驗(yàn)位:用于對(duì)整個(gè)數(shù)據(jù)包中的數(shù)據(jù)進(jìn)行校驗(yàn),占一個(gè)字節(jié)。
(6)包尾:表示數(shù)據(jù)包的結(jié)束,占一個(gè)字節(jié),用0x0F表示。
3.3 測(cè)試結(jié)果與分析
利用網(wǎng)口調(diào)試助手調(diào)試接口參數(shù),并接收傳感器數(shù)據(jù),向監(jiān)測(cè)節(jié)點(diǎn)發(fā)送請(qǐng)求數(shù)據(jù)。圖4為經(jīng)過協(xié)議轉(zhuǎn)換后上位機(jī)接收到的數(shù)據(jù),數(shù)據(jù)采用16進(jìn)制格式,0x0A和0x0F分別是數(shù)據(jù)包的包頭和包尾,01是監(jiān)測(cè)節(jié)點(diǎn)的ID,04為數(shù)據(jù)長(zhǎng)度,表明數(shù)據(jù)占4個(gè)字節(jié),11 1B 02 25為傳感器的有效數(shù)據(jù),53為校驗(yàn)和。
圖4 上位機(jī)接收的數(shù)據(jù)
對(duì)系統(tǒng)的準(zhǔn)確性進(jìn)行了測(cè)試。圖5為傳輸?shù)恼`碼率,由于TCP/IP在傳輸速率上遠(yuǎn)高于RS232、RS485和IIC,所以本文主要對(duì)RS232/485、IIC的傳輸速率進(jìn)行設(shè)置,通過降低傳輸速率來測(cè)試接口的極限情況。
圖5 傳輸誤碼率
每隔100ms發(fā)送一條數(shù)據(jù)幀,每10000條數(shù)據(jù)統(tǒng)計(jì)一次,分別測(cè)試不同傳輸速率下的誤碼率。從誤碼率上看,當(dāng)?shù)退俳涌诘膫鬏斔俾式档偷?800bps的時(shí)候,TCP/IP接口與RS232、RS485接口之間的誤碼率為0.33%和0.31%,TCP/IP接口與IIC接口之間的誤碼率為0.28%。主要原因是,兩端接口的傳輸速率相差過大時(shí),會(huì)引起緩存區(qū)溢出,導(dǎo)致數(shù)據(jù)傳輸錯(cuò)誤。這里可以通過加大緩存區(qū)存儲(chǔ)空間和降低數(shù)據(jù)包的生存時(shí)間來調(diào)整。
本文提出的面向環(huán)境監(jiān)測(cè)的多傳感器協(xié)議轉(zhuǎn)換方法為多傳感器協(xié)議轉(zhuǎn)換、封裝、融合提供了平臺(tái),具有很好的實(shí)際意義。大大節(jié)約了設(shè)備成本,為物聯(lián)網(wǎng)技術(shù)的更好發(fā)展提供了技術(shù)支持。
[1]孫曉曄,成彬.串口轉(zhuǎn)以太網(wǎng)模塊配置軟件設(shè)計(jì)及實(shí)現(xiàn)[J].微型機(jī)與應(yīng)用,2015,34(22):73-75.
[2]胡杰,張飛,葉良朋.基于STM32的煤礦監(jiān)控分站的設(shè)計(jì)與實(shí)現(xiàn)[J].煤礦機(jī)械,2016,37(07),174-176.
遼寧省教育廳科學(xué)研究資助項(xiàng)目(No.L2015462)。