基于CAN總線的分布式車間溫濕度檢測系統(tǒng)
摘要 闡述了一種基于CAN總線溫濕度檢測系統(tǒng)的方法,重點介紹了通信與溫濕度檢測部分的實現(xiàn)。該系統(tǒng)以PIC18F25K80單片機為主控器,選用集成溫度傳感器與濕度傳感器。高集成度的元器件使得項目開發(fā)周期大大縮短,經(jīng)試運行證實,該系統(tǒng)具有性能穩(wěn)定、通信距離遠(yuǎn)的優(yōu)勢。
關(guān)鍵詞 CAN總線;PIC18225K80;溫濕度檢測
許多行業(yè)如紡織、卷煙、化工、食品加工等對生產(chǎn)車間的溫濕度都有一定的要求,其中有些企業(yè)往往需要一種能夠獨立于空調(diào)控制系統(tǒng)的車間溫濕度檢測系統(tǒng)。這種車間溫濕度檢測系統(tǒng)作為空調(diào)控制的一種冗余設(shè)計或者說輔助手段,成本往往相對較低。
溫濕度檢測系統(tǒng)作為一種應(yīng)用廣泛的非標(biāo)準(zhǔn)化檢測系統(tǒng),不同的設(shè)計者、不同的應(yīng)用需求,使得目前此類檢測系統(tǒng)的設(shè)計方案呈現(xiàn)出種類各異、五花八門的現(xiàn)象。文獻介紹了一種應(yīng)用于蔬菜大棚的溫濕度測控系統(tǒng)的設(shè)計,以P87LPC76x單片機作為主控器,能利用PID算法,通過控制執(zhí)行器加熱、加濕起到調(diào)節(jié)蔬菜大棚溫濕度的目的,該系統(tǒng)現(xiàn)已廣泛應(yīng)用于吉林松原農(nóng)村蔬菜大棚,運行良好。文獻介紹了一種能應(yīng)用于多種工業(yè)場合的溫濕度檢測系統(tǒng)的設(shè)計,該系統(tǒng)基于AT89C52單片機開發(fā),能將傳感器采集到的溫濕度信號通過RS485網(wǎng)絡(luò)傳送至上位計算機,該系統(tǒng)簡單實用,具有良好的性價比。文獻介紹了一種應(yīng)用于檢測安裝有中央空調(diào)的建筑物的內(nèi)部環(huán)境溫濕度的數(shù)據(jù)采集器的設(shè)計,該檢澍裝置獨立于中央空調(diào)而工作,為評價中央空調(diào)運行質(zhì)量、調(diào)試空調(diào)系統(tǒng)提供基礎(chǔ)數(shù)據(jù)。該系統(tǒng)基于16位單片機MSP430F開發(fā),與PC機實時通信,能通過PC機設(shè)置數(shù)據(jù)采集器參數(shù),并控制數(shù)據(jù)采集器工作。
1 系統(tǒng)設(shè)計
系統(tǒng)自主設(shè)計了兩種模塊電路:(1)檢測模塊。每一塊檢測模塊將被安裝于車間不同的地點,用于檢測車間內(nèi)不同位置的溫濕度,系統(tǒng)最多支持64個檢測模塊同時工作。(2)通信模塊。監(jiān)視計算機與各檢測模塊之間的通信“橋梁”,一個通信模塊含有4路通信通道,每1路通信通道可連接至1個計算機COM口,實現(xiàn)監(jiān)視計算機對檢測模塊的分組輪詢。
檢測模塊與通信模塊之間通過CAN總線通信。CAN(Controller Area Network)總線于1986年由德國BOSCH公司提出,是一種多主方式的串行通訊總線,最早用于汽車電路中,經(jīng)過數(shù)十年的發(fā)展日趨完善,目前被廣泛應(yīng)用于汽車、石油、化工、制造業(yè)等許多領(lǐng)域,被譽為“最有前途的總線技術(shù)之一”。選擇CAN總線,是因為CAN總線相比傳統(tǒng)的RS485總線優(yōu)勢明顯,主要體現(xiàn)在以下3點:(1)傳統(tǒng)的RS485總線僅有電氣協(xié)議,而CAN總線則具有完善的通信協(xié)議,易于開發(fā)。(2)傳統(tǒng)的RS485總線通信距離不超過1.5 km,而CAN總線的通信距離在5 kbit·s-1速率時最遠(yuǎn)可達10 km。(3)傳統(tǒng)的RS485總線當(dāng)系統(tǒng)有錯誤出現(xiàn)多節(jié)點同時向總線發(fā)送數(shù)據(jù)時,導(dǎo)致總線呈現(xiàn)短路從而損壞某些節(jié)點,而CAN節(jié)點在錯誤嚴(yán)重的情況下具有自動關(guān)閉輸出的功能,不會影響到整個CAN總線。
在本系統(tǒng)中,通信模塊與COM口的串行通信速率成為整個系統(tǒng)的通信瓶頸,但仍然考慮使用計算機COM口采集數(shù)據(jù)而非專業(yè)接口卡,主要是出于對成本的考慮。為緩解系統(tǒng)瓶頸的考慮,計算機安裝了PCI轉(zhuǎn)RS-232串口擴展卡(SYBA 9865-4S),將計算機串口擴充為4個,同時通信模塊設(shè)計了4個通信通道,平均每個通信通道能與最多16個檢測模塊進行分組通信,以加快數(shù)據(jù)更新速率。
由于通信模塊與計算機COM口采用RS232通信方式,理論上RS232通信距離為15 m,因此通信模塊與計算機之間必須保持在15 m以下,實際安裝1.5 m以內(nèi),通信速率可保證在38.4 kbit·s-1下穩(wěn)定通信。
2 上位機監(jiān)視計算機程序的設(shè)計
計算機監(jiān)視程序采用C#2010開發(fā)控制臺程序,Access2010開發(fā)后臺數(shù)據(jù)庫。程序主要具有如下功能:(1)管理員與技術(shù)員二級用戶權(quán)限。(2)溫濕度警報上下限設(shè)定。(3)溫濕度歷史數(shù)據(jù)記錄。(4)溫濕度報表打印。
這里主要介紹監(jiān)視程序通信部分的程序設(shè)計思路:
(1)監(jiān)視程序可打開4個計算機COM口,根據(jù)設(shè)定的每個COM口輪詢的檢測模塊編號范匿向連接的COM口發(fā)送數(shù)據(jù)串并激活通信模塊輪詢各個檢測模塊,發(fā)送的數(shù)據(jù)串長度為5 Byte,如圖2所示,格式為:第1 Byte為“讀數(shù)據(jù)”命令字段,第2 Byte為與連接到COM口的通信通道所連接的第1個檢測模塊的站號,第3 Byte為與該通道所連接的最后1個檢測模塊的站號,第4個和第5 Byte為CRC校驗碼。
(2)通信模塊的每個通道主控器輪詢一遍所有與之相連接的檢測模塊之后,便主動向計算機返回一次數(shù)據(jù),刷新監(jiān)視程序顯示的溫濕度數(shù)據(jù),某通信通道返回的數(shù)據(jù)串長度由連接到該通信通道的檢測模塊數(shù)目而決定,當(dāng)檢測模塊數(shù)目為n時,如圖3所示,格式為:第1 Byte為“讀數(shù)據(jù)”命令字段,監(jiān)視計算機通過第1 Byte可辨識此數(shù)據(jù)串為下位機返回數(shù)據(jù),第2個到第3n+1 Byte為與該通信通道連接的所有檢測模塊返回的溫濕度數(shù)據(jù),連續(xù)3 Byte為一組,記錄了單個檢測模塊的返回數(shù)據(jù),第3n+2個和第3n+3 Byte為CRC校驗碼。
3 通信模塊的設(shè)計
3.1 通信模塊的硬件設(shè)計
通信模塊具有4路通信通道,可分別連接4個計算機COM口,各通信通道相互獨立,大體分為主控器(4個)、RS232/TTL電平轉(zhuǎn)換電路(2個)、CAN驅(qū)動器(4個)3部分組成,統(tǒng)一供+5 V電壓:
(1)主控器選擇Microchip公司生產(chǎn)的PIC18F25K80單片機,該單片機資源豐富,具有32 kB的程序存儲器、3 648 Byte的數(shù)據(jù)存儲器、1 024 Byte的數(shù)據(jù)EEPROM,并集成一個CAN控制器。將二路撥碼開關(guān)連接至單片機I/O口,用于設(shè)置通信模塊在CAN總線上的站號,設(shè)定站號范圍為00~11。
(2)通信模塊通過電平轉(zhuǎn)換電路AX232芯片與計算機COM口進行數(shù)據(jù)交換,由于1個MAX232支持兩組串口數(shù)據(jù)獨立收發(fā),因此可供2路通信通道同時使用。
(3)主控器PIC18F25K80自身集成一個CAN控制器,因此無需額外增加CAN控制器,僅需連接一個CAN驅(qū)動器PCA82C250即可與CAN總線進行通信。
PIC18F25K80自身集成的CAN控制器廣泛支持CAN1.2、CAN 2.0A、CAN 2.0B Passive和CAN 2.0B Active多個版本的協(xié)議,支持DeviceNet數(shù)據(jù)字節(jié)過濾,支持標(biāo)準(zhǔn)幀數(shù)據(jù)和擴展幀數(shù)據(jù),通信速率最高可達1 Mbit·s-1。
PCA82C250作為目前應(yīng)用最廣泛的CAN驅(qū)動器,其最大通信速率可達1 Mbit·s-1,最多可支持110個節(jié)點,具有多重保護功能,安全可靠。PIC18F25K80的CAN收發(fā)引腳CANRX、CANTX與PCA82C250通過2只光耦6N137連接,PCA82C250直接接入CAN總線。
3.2 通信模塊的軟件設(shè)計
通信模塊在收到來自上位機的命令后,開始輪詢與之相連接的檢測模塊。通信模塊向與之相連的第一個檢測模塊發(fā)出讀數(shù)據(jù)命令,待被詢檢測模塊返回數(shù)據(jù)后再向下一個檢測模塊發(fā)出讀數(shù)據(jù)命令,依此類推。如果被詢檢測模塊在1 000ms內(nèi)沒有返回數(shù)據(jù),則重新發(fā)送讀數(shù)據(jù)命令,重復(fù)3次后如果被詢檢測模塊依然沒有返回數(shù)據(jù),則檢測模塊便茸動將讀數(shù)據(jù)緩沖數(shù)組內(nèi)相應(yīng)單元全部置FF,并將相應(yīng)標(biāo)志位置1,在下次輪詢時,自動跳過此檢測模塊,待檢修人員排除故障后,再通過監(jiān)視計算機手動發(fā)出清除標(biāo)志位命令或者將通信模塊斷電復(fù)位,即可恢復(fù)通信模塊與所有檢測模塊的通信。最后所有檢測模塊讀取完畢,通信模塊自動將數(shù)據(jù)上傳至上位監(jiān)視計算機。程序流程圖如圖5所示。
通信模塊向檢測模塊發(fā)出的讀數(shù)據(jù)命令由2 Byte組成:第1 Byte是模塊通道的CAN站號,第2 Byte是被詢檢測模塊的CAN站號。由于檢測模塊向被詢模塊發(fā)出的命令僅有讀數(shù)據(jù)命令一條,因此無需添加命令代碼字節(jié)。
在CAN 2.0B規(guī)范中,數(shù)據(jù)幀有兩種幀格式:標(biāo)準(zhǔn)幀數(shù)據(jù)格式和擴展幀數(shù)據(jù)格式,兩者的區(qū)別在于前者具有11位標(biāo)識符而后者具有29位標(biāo)識符,如圖6所示,標(biāo)準(zhǔn)幀格式仲裁段標(biāo)識符僅有11位,而擴展幀格式仲裁段標(biāo)識符比標(biāo)準(zhǔn)幀格式仲裁段標(biāo)識符多出18個標(biāo)識符,即29個標(biāo)識符。CAN控箭器會根據(jù)用戶對寄存器的設(shè)定值按幀格式自動生成輸出脈沖序列。對于開發(fā)人員而言,前者僅需要配置2 Byte的TX識別碼,而后者需要配置4 Byte的TX識別碼,用于描述該幀數(shù)據(jù)在總線上的“數(shù)據(jù)身份”。鑒于通信與檢測模塊之間的通信關(guān)系比較簡單,這里選用標(biāo)準(zhǔn)幀數(shù)據(jù)格式,2 Byte的TX識別碼分別為數(shù)據(jù)源和數(shù)據(jù)目標(biāo)地址,即對于通信模塊而言,第1 Byte定義為通信模塊某通道的站號,第2 Byte定義為某時刻該通信通道所訪問的檢測模塊站號。
4 溫濕度檢測模塊的設(shè)計
4.1 溫濕度檢測模塊的硬件設(shè)計
檢測模塊大體可分為主控器、溫度傳感器、濕度傳感器、CAN驅(qū)動器4個部分:
(1)主控器同樣采用了PIC18F25K80單片機。6路撥碼開關(guān)連接至單片機的I/O口,用于設(shè)定檢測模塊在CAN總線上的站號,設(shè)定站號范圍為1100 0000~111l 1111。
(2)溫度傳感器采用Dallas公司生產(chǎn)的一線式數(shù)字溫度傳感器DS18B20,該傳感器它具有微型化、低功耗、高性能、抗干擾能力強等優(yōu)點,DS18B20可直接將溫度轉(zhuǎn)化成串行數(shù)字信號給單片機處理,溫度測量的范圍為-55~+125℃,測溫分辨率可達0.062 5℃,測溫范圍與精度完全符合項目要求。
(3)濕度傳感器采用Honeywell公司生產(chǎn)的HIB4000相對濕度傳感器,該傳感器內(nèi)部集成了信號處理功能電路,可將相對濕度值變換成電容值,再將電容值轉(zhuǎn)換成線性電壓輸出。PIC18F25K80單片機片內(nèi)集成一個8路輸入的A/D模塊,可將HIH4000輸出的線性電壓模擬量直接轉(zhuǎn)換為一個12位的數(shù)字量并存儲在PIC18F25K80單片機中。
(4)與通信模塊相同,PIC18F25K80的CAN收發(fā)引腳CANRX、CANTX通過2只光耦6N137與CAN驅(qū)動器PCA82C250相連,PCA82C250直接接入CAN總線。
4.2 溫濕度檢測模塊的軟件設(shè)計
檢測模塊不斷讀取溫度傳感器和濕度傳感器采集的數(shù)據(jù),每次采集完溫度與濕度數(shù)據(jù)后,檢測是否有來自通信模塊的讀數(shù)據(jù)命令,如果有則將采集的溫度與濕度數(shù)據(jù)返回給通信模塊,如果沒有則繼續(xù)讀取溫度傳感器和濕度傳感器采集的數(shù)據(jù),程序流程如圖8所示。
與通信模塊一致,檢測模塊的CAN通信數(shù)據(jù)幀格式同樣采用標(biāo)準(zhǔn)幀數(shù)據(jù)格式。其中,2的TX識別碼分別設(shè)定為數(shù)據(jù)源地址和數(shù)據(jù)目標(biāo)地址,即第1 Byte被設(shè)定為檢測模塊站號,第2 Byte被設(shè)定為與之連接的通信通道的站號;數(shù)據(jù)字節(jié)僅使用3個,第1 Byte和第2 Byte高4位共計12位用于存放來自溫度傳感器的數(shù)據(jù),第2 Byte的低4位和第3 Byte共計12位用于存放來自濕度傳感器的數(shù)據(jù),將溫濕度傳感器取得的兩
個12位數(shù)字量壓縮為3 Byte并寫入CAN驅(qū)動器發(fā)送緩沖區(qū)可有效提高數(shù)據(jù)更新速率。
5 結(jié)束語
現(xiàn)場總線技術(shù)的發(fā)展、單片機功能的增強、傳感器線性化與集成度的提高等技術(shù),為系統(tǒng)的設(shè)計帶來了便利,也為該檢測系統(tǒng)的穩(wěn)定性提供了保障;Dot Net技術(shù)的發(fā)展為快速開發(fā)穩(wěn)定可靠的計算機應(yīng)用程序提供了條件。經(jīng)開發(fā)設(shè)計,系統(tǒng)目前尚處于小規(guī)模試運行階段,經(jīng)過一段時間的試運行證明本系統(tǒng)具有穩(wěn)定可靠、通信距離遠(yuǎn)、抗干擾能力強等諸多優(yōu)點,能滿足企需求。