摘要:本文介紹了一種基于CAN總線的溫濕度監(jiān)控系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)。系統(tǒng)利用CAN總線構(gòu)成了多節(jié)點(diǎn)監(jiān)控網(wǎng)絡(luò),實(shí)現(xiàn)了對倉庫多點(diǎn)溫濕度的監(jiān)控。本文介紹了監(jiān)控系統(tǒng)的整體結(jié)構(gòu),并重點(diǎn)闡述了現(xiàn)場子節(jié)點(diǎn)的硬件以及軟件設(shè)計(jì)。實(shí)踐證明,該系統(tǒng)具有良好的擴(kuò)展性、可靠性以及廣泛的利用價(jià)值。
關(guān)鍵詞:CAN;溫濕度;分布式系統(tǒng);數(shù)據(jù)采集
中圖分類號:TP273文獻(xiàn)標(biāo)識碼:A文章編號:1009-3044(2008)08-10ppp-0c
1 引言
CAN全稱為“Controller Area Network”,即控制器局域網(wǎng),是目前國際上應(yīng)用最廣泛的現(xiàn)場總線之一。CAN可提供高達(dá)1Mbit/s 的數(shù)據(jù)傳輸速率,并提供了硬件的錯(cuò)誤檢定特性,增強(qiáng)了CAN的抗電磁干擾能力。
利用CAN總線的優(yōu)點(diǎn),本文介紹了一種基于CAN總線設(shè)計(jì)的用于倉庫等場合的現(xiàn)場溫濕度監(jiān)控系統(tǒng)。該系統(tǒng)采用CAN總線構(gòu)成了多點(diǎn)監(jiān)控網(wǎng)絡(luò),實(shí)現(xiàn)了多現(xiàn)場節(jié)點(diǎn)的數(shù)據(jù)采集、傳輸、存儲及分析功能,具有良好的可靠性、可擴(kuò)展性以及廣泛的應(yīng)用價(jià)值。
2 系統(tǒng)整體結(jié)構(gòu)
圖1是溫濕度監(jiān)控系統(tǒng)的整體結(jié)構(gòu)。整個(gè)系統(tǒng)由主控節(jié)點(diǎn)、子節(jié)點(diǎn)組成,構(gòu)成了一個(gè)總線型結(jié)構(gòu)網(wǎng)絡(luò)。
圖1 系統(tǒng)的整體結(jié)構(gòu)
主控節(jié)點(diǎn)是整個(gè)系統(tǒng)的核心,其一方面實(shí)現(xiàn)了CAN協(xié)議與RS-232協(xié)議的轉(zhuǎn)換,與上位機(jī)之間進(jìn)行數(shù)據(jù)通訊,將監(jiān)控?cái)?shù)據(jù)上傳至上位機(jī);另一方面,主控節(jié)點(diǎn)通過CAN總線,向各個(gè)子節(jié)點(diǎn)發(fā)送控制命令,輪詢各節(jié)點(diǎn)狀態(tài),并讀取各子節(jié)點(diǎn)監(jiān)控?cái)?shù)據(jù)。
子節(jié)點(diǎn)是分布于監(jiān)測點(diǎn)現(xiàn)場各個(gè)位置的節(jié)點(diǎn),主要實(shí)現(xiàn)了對監(jiān)測點(diǎn)的溫度、濕度等環(huán)境變量進(jìn)行采集,并將根據(jù)主控節(jié)點(diǎn)的命令,將節(jié)點(diǎn)狀態(tài)、傳感器信息等數(shù)據(jù)通過CAN網(wǎng)絡(luò)發(fā)送給主控節(jié)點(diǎn)。
3系統(tǒng)子節(jié)點(diǎn)設(shè)計(jì)
3.1 系統(tǒng)子節(jié)點(diǎn)整體結(jié)構(gòu)
子節(jié)點(diǎn)主要功能是實(shí)現(xiàn)對現(xiàn)場監(jiān)測點(diǎn)溫度、濕度等環(huán)境參數(shù)進(jìn)行采集,并響應(yīng)主控節(jié)點(diǎn)命令,通過CAN總線向主控節(jié)點(diǎn)發(fā)送檢測點(diǎn)信息。因此,一個(gè)完整的子節(jié)點(diǎn)需要包含傳感器調(diào)理電路、A/D轉(zhuǎn)換器電路以及通訊電路等,子節(jié)點(diǎn)的結(jié)構(gòu)如圖2所示:
圖2 子節(jié)點(diǎn)的結(jié)構(gòu)圖
子節(jié)點(diǎn)單片機(jī)采用89C51,溫度與濕度傳感器信號經(jīng)過調(diào)理電路后,進(jìn)入多路選擇開關(guān),單片機(jī)通過控制多路開關(guān)實(shí)現(xiàn)通道選擇,并通過A/D轉(zhuǎn)換器得到相應(yīng)通道的數(shù)據(jù);SJA1000和PCA80C250構(gòu)成了CAN總線通訊部分,與CAN總線相連。
3.1.1 CAN總線通訊設(shè)計(jì)
子節(jié)點(diǎn)CAN總線通訊部分包含了SJA1000CAN總線控制器以及PCA80C250總線收發(fā)器。SJA1000是一款獨(dú)立的CAN 總線控制器,實(shí)現(xiàn)CAN總線協(xié)議的轉(zhuǎn)換,而PCA80C250則實(shí)現(xiàn)了總線電平的變換;圖3所示的是子節(jié)點(diǎn)CAN總線部分的硬件原理圖。
圖3 CAN總線電路原理
圖中,SJA1000與單片機(jī)總線相連,當(dāng)其發(fā)送成功或接收到總線數(shù)據(jù)后,將向單片機(jī)發(fā)出中斷;為了提高系統(tǒng)穩(wěn)定性,系統(tǒng)中利用6N137高速光耦將系統(tǒng)信號與總線信號隔離;05S05S為DC-DC轉(zhuǎn)換器,用于電源隔離;隔離信號通過PCA80C250與CAN網(wǎng)絡(luò)相連;R3,R4用于總線限流。
3.1.2 傳感器電路設(shè)計(jì)
子節(jié)點(diǎn)需要對監(jiān)測點(diǎn)的溫度及濕度進(jìn)行采集。其中溫度傳感器采用的是PT100。圖4所示的是子節(jié)點(diǎn)PT100的信號調(diào)理電路的原理圖,可以同時(shí)對16路溫度信號進(jìn)行采集。
圖4 PT100信號調(diào)理電路
圖4中U1,U2為CD4067為16選1的多路開關(guān),其通道選擇為同一組信號;LM334為精密恒流源,通過圖中R26~R29產(chǎn)生1mA電流;當(dāng)單片機(jī)發(fā)出選通某路的信號時(shí),將同時(shí)選通U1,U2的相應(yīng)通道,此時(shí),LM334產(chǎn)生的1mA電流將通過U1流至U2的相應(yīng)通道上,并流經(jīng)PT100產(chǎn)生電壓信號,進(jìn)入U(xiǎn)2的輸入端;電壓信號由U2公共輸出端輸出,該信號與PT100的阻值為線性關(guān)系;LM358可以對U2輸出的電壓信號進(jìn)行放大,通過電阻R33可以調(diào)整放大倍數(shù),以適應(yīng)不同場合采集的要求。
圖5所示的是濕度傳感器變送電路:
圖5 濕度傳感器變送電路
圖中RH為濕度傳感器,U1A構(gòu)成韋恩振蕩電路,產(chǎn)生正弦波。U1B則是對振蕩信號的振幅調(diào)整,使得輸出的交流信號為250Hz,0.5Vrms的正弦波;U2A則對信號進(jìn)行放大、整流、濾波,并送入A/D轉(zhuǎn)換器。
3.1.3 A/D轉(zhuǎn)換器電路設(shè)計(jì)
系統(tǒng)中A/D轉(zhuǎn)換器采用的是TLC2543,電路原理如圖6所示:
圖6 A/D轉(zhuǎn)換器電路
TLC2543為11通道串行12位A/D,與單片機(jī)相連只需要4根線,電路比較簡單。圖中利用TL431構(gòu)成5V精密參考電壓,供A/D轉(zhuǎn)換器使用。通道使用A0,A1分別作為溫度輸入和濕度輸入通道。
4 系統(tǒng)軟件設(shè)計(jì)
4.1 主控節(jié)點(diǎn)軟件設(shè)計(jì):
通過分析系統(tǒng)功能,可知主控節(jié)點(diǎn)的主要工作為:1.接收上位機(jī)的命令,并將命令發(fā)送給相應(yīng)節(jié)點(diǎn);2.定時(shí)向子節(jié)點(diǎn)發(fā)送查詢命令,查詢子節(jié)點(diǎn)工作狀態(tài);3.定時(shí)向子節(jié)點(diǎn)發(fā)送傳輸命令,讀取子節(jié)點(diǎn)采集數(shù)據(jù);4.將子節(jié)點(diǎn)采集數(shù)據(jù)通過串口發(fā)送給上位機(jī)。
因此,在主控節(jié)點(diǎn)軟件設(shè)計(jì)中采用了事件驅(qū)動(dòng)的方式;其主要流程如下:
圖7 主控節(jié)點(diǎn)流程
主控節(jié)點(diǎn)在完成系統(tǒng)初始化和網(wǎng)絡(luò)的初始化后,主程序?qū)⑤喸兏鞣N事件標(biāo)志;各種事件標(biāo)志由單片機(jī)的各種中斷服務(wù)程序設(shè)置;中斷服務(wù)程序中只對相應(yīng)的事件標(biāo)志進(jìn)行設(shè)置,并不對事件處理,如串行通訊中斷、CAN總線通訊中斷,定時(shí)器中斷等;主程序查詢到事件標(biāo)志首先確定事件功能,并調(diào)用相應(yīng)的處理程序處理。
4.2 系統(tǒng)子節(jié)點(diǎn)軟件設(shè)計(jì)
相對于主控節(jié)點(diǎn),系統(tǒng)子節(jié)點(diǎn)的工作要簡單的多。系統(tǒng)中子節(jié)點(diǎn)在上電復(fù)位后主要工作為:(1)對系統(tǒng)進(jìn)行初始化;(2)向主控節(jié)點(diǎn)發(fā)送初始狀態(tài);(4)查詢主控節(jié)點(diǎn)命令;(5)根據(jù)命令將監(jiān)測點(diǎn)的相關(guān)數(shù)據(jù)通過CAN總線發(fā)送給主控節(jié)點(diǎn)。(6)輪詢各通道數(shù)據(jù)采集,并保存。子節(jié)點(diǎn)的主要流程軟件如圖8所示:
圖8 子節(jié)點(diǎn)流程圖
圖中系統(tǒng)初始化包括了:節(jié)點(diǎn)自檢,CAN通訊初始化、傳感器初始化、A/D初始化、各種系統(tǒng)標(biāo)志初始化以及看門狗初始化等。
子節(jié)點(diǎn)完成系統(tǒng)初始化后,向主控節(jié)點(diǎn)發(fā)送初始狀態(tài)數(shù)據(jù),以通知主控節(jié)點(diǎn)加入網(wǎng)絡(luò);完成各種初始處理后,子節(jié)點(diǎn)進(jìn)入輪詢時(shí)間標(biāo)志的循環(huán)中,如有需要將相應(yīng)數(shù)據(jù)發(fā)送給主控節(jié)點(diǎn)。
4 結(jié)束語
本文中所述的基于CAN總線的溫濕度監(jiān)控系統(tǒng)經(jīng)過調(diào)試,已經(jīng)在糧庫、藥品倉庫以及多種工業(yè)場合倉庫中得到使用。由于CAN總線具有極強(qiáng)的抗干擾能力,系統(tǒng)在使用現(xiàn)場數(shù)據(jù)通訊非??煽浚⑶彝ㄟ^往網(wǎng)絡(luò)中加入CAN中繼器可以進(jìn)一步提高通訊質(zhì)量和距離,時(shí)間證明,該系統(tǒng)具有很高的實(shí)用價(jià)值和發(fā)展前景。
參考文獻(xiàn):
[1]鄔寬明.CAN總線原理與應(yīng)用技術(shù)[M].北京:北京航空航天大學(xué)出版社,1996.80-153.
[2]鄧立康,等.基于CAN總線的多點(diǎn)通訊系統(tǒng)[J].東北農(nóng)業(yè)大學(xué)學(xué)報(bào),2006,37(6):847-849.
[3]包秀榮,等.基于CAN總線的液位數(shù)據(jù)采集傳輸系統(tǒng)設(shè)計(jì)[J].內(nèi)蒙古大學(xué)學(xué)報(bào)(自然科學(xué)版),2006,37(6):679-684.