王笑怡
(中國電子科技集團公司第四十七研究所,沈陽110032)
我國是糧食生產(chǎn)和消耗大國,糧食產(chǎn)后的儲糧、儲藏、運輸、加工等環(huán)節(jié)損失浪費巨大,保障國家糧食安全仍面臨著嚴峻的形勢和新的挑戰(zhàn)[1]。隨著科學技術的發(fā)展,科技手段的提高,糧食行業(yè)信息化發(fā)展得到了強有力的科技支撐[2-3]。但一直以來,糧倉儲糧信息的數(shù)據(jù)傳遞不一致,各自形成信息孤島,無法實現(xiàn)一個真正全面共享、全面聯(lián)通的信息系統(tǒng)有機體,亟需通過資源整合,溝通上下聯(lián)通,互聯(lián)互通的業(yè)務交互平臺,整合各級的數(shù)據(jù)資源,構建糧食數(shù)據(jù)大資源地,從而為大數(shù)據(jù)分析和數(shù)據(jù)應用提供數(shù)據(jù)基礎[4]。糧倉環(huán)境監(jiān)測系統(tǒng)為某糧庫整體信息化建設項目的子項目之一。項目要求監(jiān)測系統(tǒng)能夠實時采集糧倉內溫濕度、氧氣、二氧化碳氣體濃度、糧堆高度等數(shù)據(jù),并通過網(wǎng)絡專線上傳采集數(shù)據(jù),為糧情的大數(shù)據(jù)分析和應用提供數(shù)據(jù)基礎。在此,僅闡述糧倉環(huán)境監(jiān)測系統(tǒng)硬件部分的設計方法。
根據(jù)糧倉環(huán)境數(shù)據(jù)采集要求,系統(tǒng)設計為分層分布式結構[5]。系統(tǒng)結構如圖1所示。
系統(tǒng)由數(shù)據(jù)集中器和若干個傳感器模塊(包括溫濕度監(jiān)測模塊、氧氣濃度監(jiān)測模塊、二氧化碳濃度監(jiān)測模塊、測試模塊等)組成,數(shù)據(jù)集中器與傳感器模塊通過RS485總線連接。數(shù)據(jù)集中器是總線中唯一主機,各傳感器模塊均為從機,主機與從機間通過問答方式進行數(shù)據(jù)傳輸。傳感器模塊內置MCU,完成環(huán)境數(shù)據(jù)的采集和轉換。在數(shù)據(jù)集中器的請求下,傳感器模塊按約定的通訊格式,向數(shù)據(jù)集中器傳送測量數(shù)據(jù)。數(shù)據(jù)集中器的核心為MCU,采用多機通訊方式,定期向傳感器模塊發(fā)送請求,并將接收到的環(huán)境數(shù)據(jù)進行解析和存儲;同時,數(shù)據(jù)集中器內置網(wǎng)絡傳輸模塊并配置為TCP服務器模式,實時監(jiān)聽網(wǎng)絡端口是否有數(shù)據(jù)傳送請求,如接收到傳送請求,則將存儲的歷史監(jiān)測數(shù)據(jù)進行打包,通過網(wǎng)絡接口發(fā)送給中心控制臺。
傳感器模塊與數(shù)據(jù)集中器模塊中MCU程序是在Keil4集成開發(fā)環(huán)境下,使用C語言進行程序開發(fā)。與匯編相比,C語言在功能上、結構性、可讀性、可維護性上有明顯的優(yōu)勢[6]。
采用分層分布式結構一是為了滿足糧倉內環(huán)境數(shù)據(jù)多點采集的要求,二是縮短傳感器與信號轉換器之間的距離,降低了信號傳輸過程中的衰減,減少了干擾,保證了測量的準確性。
傳感器是一種能感受到被測量的信息[7],并能將感受到的信息,按一定規(guī)律變換成為電信號或其他所需形式的信息輸出,以滿足信息的傳輸、處理、存儲、顯示、記錄和控制等要求的檢測裝置[8]。
本系統(tǒng)所要監(jiān)測的環(huán)境參數(shù)均為較常用的參數(shù),因此,相應的傳感器芯片/模塊產(chǎn)品較多,從設計周期、成本角度考慮,本設計采用在成熟的傳感器基礎上進行二次開發(fā),以適應本系統(tǒng)設計要求。
采用氣調儲糧技術的糧倉,要求溫度的檢測范圍為-30℃~55℃,測量精度不低于±2℃;濕度檢測范圍的為20%~90%,精度不低于±5%RH;氧氣濃度的檢測范圍為0%~25%,精度不低于±2%;二氧化碳濃度的檢測范圍為0%~60%,精度不低于±4%。另外,為檢測糧倉內糧食是否發(fā)生沉降,還要對糧堆高度進行檢測,高度檢測范圍為0~5m,精度不低于5cm。
根據(jù)上述指標要求,選擇以下傳感器芯片/模塊來實現(xiàn)系統(tǒng)功能。
1、溫濕度傳感器芯片
溫濕度監(jiān)測選用CHT8305溫濕度傳感器芯片。CHT8305內部集成高精度帶隙基準電路,14-BIT模數(shù)轉換器電路;溫濕度數(shù)據(jù)通過I2C數(shù)字接口傳輸給MCU、藍牙芯片或其它SOC芯片,I2C總線傳輸速率高達400kHz。主要應用于環(huán)境監(jiān)測、可穿戴溫濕度監(jiān)測等場景。其主要技術指標如下:
工作電壓:2.5~5.5V
工作電流:1.5μA(典型),3.0μA(最大)
測量范圍:溫度-40℃~125℃,濕度 0~100%RH
精度:±3.0%RH(濕度),±0.5℃(溫度)
工作溫度范圍:-40℃~125℃
2、二氧化碳傳感器模塊
二氧化碳監(jiān)測選用SprintIR型二氧化碳傳感器。它可測量最高達100%的二氧化碳濃度,并配有流入式適配器,適合要求高速傳感的應用和二氧化碳濃度快速變化的測量。采用UART通訊方式輸出測試結果,接口可直接與MCU等芯片連接。它對功耗要求低,使其成為便攜式、可穿戴式及自供電應用很好選擇。其主要技術指標如下:
工作電壓:3.25~5.5V
工作電流:平均電流<15mA,峰值電流100mA
工作溫度范圍:-30°C~55°C
測量范圍:0%~60%
精度:±(70ppm+讀數(shù)的5%)
3、氧氣濃度監(jiān)測模塊
氧氣濃度監(jiān)測選用LuminOx型熒光傳感器。LuminOx是應用熒光猝滅原理測量氧氣濃度,同時可檢測氧分壓。內置溫度補償,不含鉛或其他任何有毒材料,且不受其他氣體交叉干擾的影響,無污染,非常穩(wěn)定和環(huán)保。LuminOx不需要額外的信號調節(jié)電路,可直接跟MCU的接口通過3.3V電平RS232連接,降低了成本,簡化了系統(tǒng)設計。其主要技術指標如下:
工作電壓:4.5~5.5V
工作電流:<7.5mA(1Hz數(shù)據(jù)采樣率),<20mA(峰值)
工作溫度范圍:-30℃~60℃
測量范圍:0%~25%
精度:<2%FS
4、聲吶測距模塊
通過在糧倉棚頂與糧堆頂部間的距離可反映出糧堆的下沉情況。測距模塊選用XL-MaxSonar-EZ型超聲波測距傳感器。該傳感器輸出功率高,針對變化的環(huán)境(溫度、電壓和聲學及電氣噪音)具備實時自動標定功能,確保每次采集的讀數(shù)都是最可靠(空氣中)的數(shù)據(jù)。XL-MaxSonar-EZ傳感器能在小而緊湊的外形結構中提供長短距離檢測和測距并提供數(shù)字輸出。其主要技術指標如下:
工作電壓:3.3~5.5V
工作電流:3.4mA(平均),100mA(最大)
工作溫度:-40℃~65℃
測量范圍:0~1608cm
精度:±1cm
根據(jù)分層分布式的總設計思路及傳感器輸出方式和數(shù)據(jù)格式,必須在傳感器輸出和數(shù)據(jù)集中器輸入間增加一個數(shù)據(jù)采集和格式轉換環(huán)節(jié)。本設計選用C8051F410來實現(xiàn)這一功能。
傳感器模塊原理圖如圖2所示。設計時在保證功能和可靠性前提下,盡量節(jié)省成本,因此,第一要充分利用MCU內部資源,減少外圍器件;第二將所有傳感器芯片/模塊設計在同一塊電路板上,使用時每塊PCB板僅安裝一種傳感器芯片/模塊。
圖2 傳感器模塊原理圖
圖2中U1為C8051F410,該芯片內部的復位、時鐘、UART控制器、I2C控制器、4個定時器、2個外中斷電路可供使用,因此,外圍僅增加了RS485接口芯片和必要的電源及濾波器件。本設計中氧氣、二氧化碳、聲納測距傳感器均采用UART通訊方式輸出測量結果,C8051F410在接收傳感器輸出的同時,還要與數(shù)據(jù)集中器進行數(shù)據(jù)通訊,因此需要至少2個UART端口。C8051F410芯片本身僅有1個UART端口,設計通過軟件編程,使用IO端口模擬UART通訊時序進行擴展。
數(shù)據(jù)集中器作為數(shù)據(jù)的中轉站,對下通過RS485總線收集匯總各傳感器監(jiān)測的環(huán)境數(shù)據(jù),對上通過網(wǎng)絡專線按約定格式向控制臺傳送匯總數(shù)據(jù)。當控制臺無數(shù)據(jù)傳送請求時,數(shù)據(jù)集中器還可將匯總數(shù)據(jù)保存在非易失性存儲器中。
數(shù)據(jù)集中器的核心控制器仍選擇C8051F410。非易失性存儲器選用AT24C256,該芯片除保存系統(tǒng)運行的配置數(shù)據(jù)外,還可保存1000條環(huán)境數(shù)據(jù)。S3530為I2C接口時鐘芯片,用于提供系統(tǒng)時間。以太網(wǎng)協(xié)議芯片選用CH395,該芯片自帶10/100M以太網(wǎng)介質傳輸層(MAC)和物理層(PHY),完全兼容IEEE802.3 10/100M協(xié)議。本設計中C8051F410通過SPI接口控制CH395芯片進行以太網(wǎng)通訊。數(shù)據(jù)集中器結構框圖如圖3所示。
圖3 數(shù)據(jù)集中器結構框圖
通過對UART通訊時信號狀態(tài)的分析,可以根據(jù)其信號狀態(tài)變化的規(guī)律,使用軟件控制IO端口模擬UART時序實現(xiàn)通訊。
在UART通訊中,數(shù)據(jù)線上共有兩種狀態(tài),分別用邏輯1(高電平)和邏輯0(低電平)表示。在空閑時,數(shù)據(jù)線應該保持在邏輯1狀態(tài)。在采用N,8,1設置發(fā)送數(shù)據(jù)時,首先發(fā)送一個邏輯0信號,表示傳輸字符的開始,然后是8位的數(shù)據(jù)位,最后時邏輯1的停止位,之后總線處于邏輯1狀態(tài),表示當前線路上沒有資料傳送,直到下次發(fā)送數(shù)據(jù)。數(shù)據(jù)線上起始、停止及各數(shù)據(jù)位間隔由波特率決定。
本設計中使用C8051F410的兩個IO口作為軟件UART的發(fā)送數(shù)據(jù)線SW_TXD和接收數(shù)據(jù)線SW_RXD;定時器2設置為雙8位自動重裝定時器方式,TMR2H用于產(chǎn)生發(fā)送波特率,TMR2L用于產(chǎn)生接收波特率;外中斷0(INT0)設置為下降沿觸發(fā)方式,信號輸入端口與SW_RXD復用,用于檢測SW_RXD上的起始位。
實現(xiàn)軟件UART的源程序如下:
數(shù)據(jù)集中器中C8051F410通過以太網(wǎng)協(xié)議芯片CH395與控制臺軟件進行TCP/IP通訊。CH395初始化成功后,還要進行Socket配置才能進行網(wǎng)絡通訊,本系統(tǒng)配置為TCP服務器模式。CH395初始化流程如圖4所示。將Socket設置為TCP服務器模式的流程如圖5所示。
在TCP服務器模式下,如果客戶端進行連接,Socket一直處于監(jiān)聽狀態(tài),不會產(chǎn)生超時中斷,如果TCP連接成功,CH395會產(chǎn)生SINT_STAT_CONNECT中斷,此時單片機可以發(fā)送命令CMD_GET_REMOT_IPP_SN來獲取客戶端的IP地址和端口號。
圖4 CH395初始化流程圖
圖5 設置Socket為TCP服務器模式流程圖
采用本設計方法研制的糧倉環(huán)境監(jiān)測系統(tǒng),實現(xiàn)了對I2C接口的溫濕度傳感器、UART接口的二氧化碳傳感器及聲納測距模塊、3.3V電平RS232協(xié)議的氧氣傳感器的輸出數(shù)據(jù)采集、解析功能。各傳感器采集信息按糧庫信息化平臺數(shù)據(jù)格式打包、傳輸,實現(xiàn)不同信息間數(shù)據(jù)格式和傳遞方式的有效融合,便于數(shù)據(jù)被平臺深度利用。系統(tǒng)樣機體積小、安裝簡便,在用戶現(xiàn)場試用穩(wěn)定,功能滿足用戶需求。