重慶工程職業(yè)技術(shù)學(xué)院 張 麗
中煤科工集團(tuán)上海有限公司 馬 潔
基于CAN總線的遠(yuǎn)程溫度監(jiān)測系統(tǒng)設(shè)計(jì)
重慶工程職業(yè)技術(shù)學(xué)院 張 麗
中煤科工集團(tuán)上海有限公司 馬 潔
為了更好的采集遠(yuǎn)程的多節(jié)點(diǎn)溫度,設(shè)計(jì)了基于CAN總線的遠(yuǎn)程溫度監(jiān)測系統(tǒng),實(shí)現(xiàn)了對多點(diǎn)溫度的監(jiān)測。系統(tǒng)以STM32F103為主控制器,選用DS18B20作為溫度傳感器,基于CAN總線協(xié)議實(shí)現(xiàn)了主從節(jié)點(diǎn)的數(shù)據(jù)采集和傳輸。并且利用串口通信技術(shù)與上位機(jī)通信,實(shí)現(xiàn)了遠(yuǎn)程溫度的存儲(chǔ),歷史數(shù)據(jù)的顯示、溫度波形顯示等功能。
CAN;STM32F103;溫度采集
隨著生產(chǎn)技術(shù)的不斷發(fā)展和提高,實(shí)時(shí)溫度的采集和歷史溫度的研究對實(shí)際的生產(chǎn)生活影響越來越大?,F(xiàn)在,溫度監(jiān)測系統(tǒng)已經(jīng)廣泛地應(yīng)用于工業(yè)、農(nóng)業(yè),軍事等多個(gè)領(lǐng)域,在糧倉、大棚種植和陶瓷燒制等對溫度要求嚴(yán)格的領(lǐng)域應(yīng)用尤其廣泛。
20世紀(jì)70年代初,溫度監(jiān)測系統(tǒng)大多數(shù)是基于RS485總線實(shí)現(xiàn)的,雖然價(jià)格低廉,維護(hù)方便,但是其每個(gè)節(jié)點(diǎn)的總線地址是確定不變的,掛載的節(jié)點(diǎn)越多,效率越低,不利于減小系統(tǒng)的冗余,主節(jié)點(diǎn)的錯(cuò)誤會(huì)影響到整個(gè)系統(tǒng)的性能。而CAN總線作為一種有效支持分布式控制和實(shí)時(shí)控制的串行通信網(wǎng)絡(luò),可利用雙絞線將所有節(jié)點(diǎn)串在一起,不僅避免了單個(gè)設(shè)備與主機(jī)相連的瓶頸,而且網(wǎng)絡(luò)任意節(jié)點(diǎn)均可在任意時(shí)刻主動(dòng)與其他節(jié)點(diǎn)通信,系統(tǒng)實(shí)現(xiàn)大大簡化。
因此,本文設(shè)計(jì)了基于CAN總線的多點(diǎn)遠(yuǎn)程溫度監(jiān)測系統(tǒng),主要以STM32F103為主控制器,選用多個(gè)DS18B20實(shí)現(xiàn)主從節(jié)點(diǎn)的數(shù)據(jù)采集和傳輸,并且利用串口通信技術(shù)與PC上位機(jī)通信,實(shí)現(xiàn)遠(yuǎn)程溫度的存儲(chǔ),歷史數(shù)據(jù)的顯示、溫度波形顯示等功能。既克服了DS18B20傳輸距離短、不適宜遠(yuǎn)距離傳輸?shù)娜秉c(diǎn),也改善了傳統(tǒng)的集成溫度傳感器構(gòu)成的溫度測量系統(tǒng)連線令人困擾、造價(jià)高昂且制作過程復(fù)雜、測量誤差較大的缺點(diǎn)。
本系統(tǒng)為總線型拓?fù)浣Y(jié)構(gòu),PC機(jī)作為主節(jié)點(diǎn),多個(gè)溫度采集節(jié)點(diǎn)作為從節(jié)點(diǎn),網(wǎng)關(guān)節(jié)點(diǎn)作為協(xié)議轉(zhuǎn)換器實(shí)現(xiàn)PC機(jī)與溫度采集節(jié)點(diǎn)的無縫通信。通過溫度采集節(jié)點(diǎn)監(jiān)測多個(gè)分布在不同位置的溫度信息,把溫度采集節(jié)點(diǎn)的溫度通過CAN通信模塊由CAN總線發(fā)送至網(wǎng)關(guān)節(jié)點(diǎn),網(wǎng)關(guān)節(jié)點(diǎn)通過協(xié)議轉(zhuǎn)換,將CAN協(xié)議格式的數(shù)據(jù)轉(zhuǎn)換成為串口可以識(shí)別的數(shù)據(jù),然后通過串口發(fā)送至上位機(jī),將采集到的多點(diǎn)溫度存入數(shù)據(jù)庫,實(shí)現(xiàn)溫度的實(shí)時(shí)顯示、歷史數(shù)據(jù)的查詢和溫度波形顯示等操作。同時(shí),上位機(jī)軟件也可通過串口發(fā)送命令到溫度采集節(jié)點(diǎn),實(shí)現(xiàn)對溫度采集節(jié)點(diǎn)進(jìn)行控制。圖1即為整個(gè)系統(tǒng)的結(jié)構(gòu)框圖。
圖1 溫度監(jiān)測系統(tǒng)整體結(jié)構(gòu)框圖
溫度監(jiān)測系統(tǒng)主要分為網(wǎng)關(guān)節(jié)點(diǎn)和溫度采集節(jié)點(diǎn)兩部分。
2.1 網(wǎng)關(guān)節(jié)點(diǎn)硬件設(shè)計(jì)
網(wǎng)關(guān)節(jié)點(diǎn)模塊框圖如圖2所示,主要包括MCU模塊,電源模塊、CAN通信模塊和串口通信模塊。MCU模塊主要采用STM32F103芯片作為主控制器,由晶振電路、復(fù)位電路等組成。電源模塊為外部輸入的+5V電壓,經(jīng)過線性壓降器件AMS1117-3.3V后降為+3.3V,為STM32F103等器件提供工作電源。CAN通信模塊包括CAN控制器和CAN收發(fā)器模塊。串口通信模塊主要是采用MAX3232,具有低功耗,高數(shù)據(jù)速率等特性,可實(shí)現(xiàn)TTL電平與232電平的轉(zhuǎn)換。
2.2 溫度采集節(jié)點(diǎn)硬件設(shè)計(jì)
圖2 網(wǎng)關(guān)節(jié)點(diǎn)模塊框圖
溫度采集節(jié)點(diǎn)包括電源模塊、MCU模塊和CAN通信模塊。DS18B20作為“單總線”數(shù)字溫度傳感器,其測量溫度范圍為-55℃~+125℃,測溫分辨率可達(dá)0.0625℃,主要由64位光刻ROM、溫度傳感器、非易失性溫度報(bào)警觸發(fā)器和配置寄存器四部分組成。每個(gè)DS18B20的64位序列號光刻ROM均不同,因此在一根總線上可以掛接多個(gè)DS18B20,實(shí)現(xiàn)多點(diǎn)溫度監(jiān)測,極大節(jié)約了主控制器的I/O口資源。本系統(tǒng)采用多個(gè)DS18B20實(shí)現(xiàn)溫度采集。
本系統(tǒng)軟件包括溫度采集節(jié)點(diǎn)、網(wǎng)關(guān)節(jié)點(diǎn)和上位機(jī)軟件三部分構(gòu)成。
3.1 溫度采集節(jié)點(diǎn)軟件設(shè)計(jì)
溫度監(jiān)測節(jié)點(diǎn)的程序主要完成STM32F103初始化,DS18B20溫度讀取,LCD5110本地顯示和CAN通信等功能。實(shí)現(xiàn)的主要功能是在接收到與自己節(jié)點(diǎn)標(biāo)識(shí)符相同的網(wǎng)關(guān)節(jié)點(diǎn)發(fā)送來遠(yuǎn)程幀時(shí),根據(jù)接收到的信號不同,完成不同的功能。當(dāng)獲取的信號為控制信號時(shí),控制指定的LCD亮滅;當(dāng)獲取的信號為溫度讀取信號時(shí),將預(yù)先讀取的多個(gè)DS18B20溫度信號,通過CAN總線傳送到網(wǎng)關(guān)節(jié)點(diǎn)。
3.2 網(wǎng)關(guān)節(jié)點(diǎn)軟件設(shè)計(jì)
CAN網(wǎng)關(guān)節(jié)點(diǎn)的功能是實(shí)現(xiàn)CAN協(xié)議與串口協(xié)議的轉(zhuǎn)換??梢越邮丈衔粰C(jī)發(fā)送的命令,向溫度采集節(jié)點(diǎn)發(fā)送遠(yuǎn)程幀查詢溫度值;也可以接收溫度采集節(jié)點(diǎn)發(fā)送來的溫度數(shù)據(jù),轉(zhuǎn)換成為串口可以發(fā)送的數(shù)據(jù),然后發(fā)送至上位機(jī),實(shí)現(xiàn)上位機(jī)與溫度采集節(jié)點(diǎn)的無縫通信。CAN網(wǎng)關(guān)節(jié)點(diǎn)的主程序如圖3所示。
圖3 CAN網(wǎng)關(guān)節(jié)點(diǎn)主流程圖
3.3 上位機(jī)串口通信及監(jiān)測
上位機(jī)采用VC++6.0 MFC中的MSComm控件,來編寫串口通信程序,實(shí)現(xiàn)串口數(shù)據(jù)的傳輸和接收。采用ADO對象連接Access數(shù)據(jù)庫,將實(shí)時(shí)采集的溫度數(shù)據(jù)存入數(shù)據(jù)庫中,同時(shí)實(shí)現(xiàn)實(shí)時(shí)數(shù)據(jù)的曲線顯示;使用Data Time Picker控件作為歷史數(shù)據(jù)查詢起止時(shí)間的選擇容器,在選定歷史數(shù)據(jù)查詢時(shí)間段以后,在List control 控件中實(shí)現(xiàn)歷史數(shù)據(jù)的表格顯示。利用VC++中相關(guān)繪圖語句繪制溫度波形顯示區(qū)域,實(shí)現(xiàn)歷史數(shù)據(jù)的波形顯示。
當(dāng)程序運(yùn)行以后,選擇串口屬性后,打開串口,就可以看到實(shí)時(shí)溫度數(shù)據(jù)顯示在接收編輯框中,與此同時(shí),實(shí)時(shí)溫度將存入數(shù)據(jù)庫中,直觀明了,每隔1 min清零顯示;波形顯示區(qū)可以顯示實(shí)時(shí)溫度曲線。當(dāng)查詢歷史數(shù)據(jù)時(shí),只要選擇好查詢的歷史時(shí)間段,按下歷史溫度表格顯示按鈕,可以顯示歷史數(shù)據(jù)表格;同理,當(dāng)按下歷史數(shù)據(jù)曲線顯示時(shí),可以顯示歷史數(shù)據(jù)曲線。
本文設(shè)計(jì)了基于CAN總線的遠(yuǎn)程溫度監(jiān)控系統(tǒng),完成了遠(yuǎn)程溫度的多點(diǎn)監(jiān)測,具有功耗小,配置簡單,精度較高的優(yōu)點(diǎn),可廣泛應(yīng)用于糧倉、公司樓宇等環(huán)境中,具有很好的應(yīng)用前景。
[1]丁恩杰,馬方清.監(jiān)控系統(tǒng)與現(xiàn)場總線[D].徐州:中國礦業(yè)大學(xué),2003:55-89.
[2]STM32 Microelectronics.STM32F103_Datasheet.
[3]DDALLAS.DS18B20 DataSheet,www.a(chǎn)lldatadatasheet.com.
張麗(1981—),女,工學(xué)碩士,講師,工程師,重慶工程職業(yè)技術(shù)學(xué)院電子教研室教師,研究方向:電子技術(shù)及應(yīng)用、通信與信息系統(tǒng)。