重慶工程職業技術學院 張 麗
中煤科工集團上海有限公司 馬 潔
基于CAN總線的遠程溫度監測系統設計
重慶工程職業技術學院 張 麗
中煤科工集團上海有限公司 馬 潔
為了更好的采集遠程的多節點溫度,設計了基于CAN總線的遠程溫度監測系統,實現了對多點溫度的監測。系統以STM32F103為主控制器,選用DS18B20作為溫度傳感器,基于CAN總線協議實現了主從節點的數據采集和傳輸。并且利用串口通信技術與上位機通信,實現了遠程溫度的存儲,歷史數據的顯示、溫度波形顯示等功能。
CAN;STM32F103;溫度采集
隨著生產技術的不斷發展和提高,實時溫度的采集和歷史溫度的研究對實際的生產生活影響越來越大。現在,溫度監測系統已經廣泛地應用于工業、農業,軍事等多個領域,在糧倉、大棚種植和陶瓷燒制等對溫度要求嚴格的領域應用尤其廣泛。
20世紀70年代初,溫度監測系統大多數是基于RS485總線實現的,雖然價格低廉,維護方便,但是其每個節點的總線地址是確定不變的,掛載的節點越多,效率越低,不利于減小系統的冗余,主節點的錯誤會影響到整個系統的性能。而CAN總線作為一種有效支持分布式控制和實時控制的串行通信網絡,可利用雙絞線將所有節點串在一起,不僅避免了單個設備與主機相連的瓶頸,而且網絡任意節點均可在任意時刻主動與其他節點通信,系統實現大大簡化。
因此,本文設計了基于CAN總線的多點遠程溫度監測系統,主要以STM32F103為主控制器,選用多個DS18B20實現主從節點的數據采集和傳輸,并且利用串口通信技術與PC上位機通信,實現遠程溫度的存儲,歷史數據的顯示、溫度波形顯示等功能。既克服了DS18B20傳輸距離短、不適宜遠距離傳輸的缺點,也改善了傳統的集成溫度傳感器構成的溫度測量系統連線令人困擾、造價高昂且制作過程復雜、測量誤差較大的缺點。
本系統為總線型拓撲結構,PC機作為主節點,多個溫度采集節點作為從節點,網關節點作為協議轉換器實現PC機與溫度采集節點的無縫通信。通過溫度采集節點監測多個分布在不同位置的溫度信息,把溫度采集節點的溫度通過CAN通信模塊由CAN總線發送至網關節點,網關節點通過協議轉換,將CAN協議格式的數據轉換成為串口可以識別的數據,然后通過串口發送至上位機,將采集到的多點溫度存入數據庫,實現溫度的實時顯示、歷史數據的查詢和溫度波形顯示等操作。同時,上位機軟件也可通過串口發送命令到溫度采集節點,實現對溫度采集節點進行控制。圖1即為整個系統的結構框圖。

圖1 溫度監測系統整體結構框圖
溫度監測系統主要分為網關節點和溫度采集節點兩部分。
2.1 網關節點硬件設計
網關節點模塊框圖如圖2所示,主要包括MCU模塊,電源模塊、CAN通信模塊和串口通信模塊。MCU模塊主要采用STM32F103芯片作為主控制器,由晶振電路、復位電路等組成。電源模塊為外部輸入的+5V電壓,經過線性壓降器件AMS1117-3.3V后降為+3.3V,為STM32F103等器件提供工作電源。CAN通信模塊包括CAN控制器和CAN收發器模塊。串口通信模塊主要是采用MAX3232,具有低功耗,高數據速率等特性,可實現TTL電平與232電平的轉換。
2.2 溫度采集節點硬件設計

圖2 網關節點模塊框圖
溫度采集節點包括電源模塊、MCU模塊和CAN通信模塊。DS18B20作為“單總線”數字溫度傳感器,其測量溫度范圍為-55℃~+125℃,測溫分辨率可達0.0625℃,主要由64位光刻ROM、溫度傳感器、非易失性溫度報警觸發器和配置寄存器四部分組成。每個DS18B20的64位序列號光刻ROM均不同,因此在一根總線上可以掛接多個DS18B20,實現多點溫度監測,極大節約了主控制器的I/O口資源。本系統采用多個DS18B20實現溫度采集。
本系統軟件包括溫度采集節點、網關節點和上位機軟件三部分構成。
3.1 溫度采集節點軟件設計
溫度監測節點的程序主要完成STM32F103初始化,DS18B20溫度讀取,LCD5110本地顯示和CAN通信等功能。實現的主要功能是在接收到與自己節點標識符相同的網關節點發送來遠程幀時,根據接收到的信號不同,完成不同的功能。當獲取的信號為控制信號時,控制指定的LCD亮滅;當獲取的信號為溫度讀取信號時,將預先讀取的多個DS18B20溫度信號,通過CAN總線傳送到網關節點。
3.2 網關節點軟件設計
CAN網關節點的功能是實現CAN協議與串口協議的轉換。可以接收上位機發送的命令,向溫度采集節點發送遠程幀查詢溫度值;也可以接收溫度采集節點發送來的溫度數據,轉換成為串口可以發送的數據,然后發送至上位機,實現上位機與溫度采集節點的無縫通信。CAN網關節點的主程序如圖3所示。

圖3 CAN網關節點主流程圖
3.3 上位機串口通信及監測
上位機采用VC++6.0 MFC中的MSComm控件,來編寫串口通信程序,實現串口數據的傳輸和接收。采用ADO對象連接Access數據庫,將實時采集的溫度數據存入數據庫中,同時實現實時數據的曲線顯示;使用Data Time Picker控件作為歷史數據查詢起止時間的選擇容器,在選定歷史數據查詢時間段以后,在List control 控件中實現歷史數據的表格顯示。利用VC++中相關繪圖語句繪制溫度波形顯示區域,實現歷史數據的波形顯示。
當程序運行以后,選擇串口屬性后,打開串口,就可以看到實時溫度數據顯示在接收編輯框中,與此同時,實時溫度將存入數據庫中,直觀明了,每隔1 min清零顯示;波形顯示區可以顯示實時溫度曲線。當查詢歷史數據時,只要選擇好查詢的歷史時間段,按下歷史溫度表格顯示按鈕,可以顯示歷史數據表格;同理,當按下歷史數據曲線顯示時,可以顯示歷史數據曲線。
本文設計了基于CAN總線的遠程溫度監控系統,完成了遠程溫度的多點監測,具有功耗小,配置簡單,精度較高的優點,可廣泛應用于糧倉、公司樓宇等環境中,具有很好的應用前景。
[1]丁恩杰,馬方清.監控系統與現場總線[D].徐州:中國礦業大學,2003:55-89.
[2]STM32 Microelectronics.STM32F103_Datasheet.
[3]DDALLAS.DS18B20 DataSheet,www.alldatadatasheet.com.
張麗(1981—),女,工學碩士,講師,工程師,重慶工程職業技術學院電子教研室教師,研究方向:電子技術及應用、通信與信息系統。