摘要: 介紹了基于CAN總線的對等式火災(zāi)報(bào)警系統(tǒng)的設(shè)計(jì)和實(shí) 現(xiàn)方法,給出了CAN總線的硬件接口電路和軟件流程。
關(guān)鍵字:火災(zāi)報(bào)警 CAN總線 對等式
隨著新技術(shù)的不斷發(fā)展,對火災(zāi)報(bào)警控制器聯(lián)網(wǎng)的要求也越來越高。火災(zāi)報(bào)警控制器不但要 完成本機(jī)的報(bào)警、聯(lián)動等功能,還要把報(bào)警信息傳送到其它報(bào)警控制器或系統(tǒng)。本文介紹了 基于CAN總線的對等式火災(zāi)報(bào)警系統(tǒng),系統(tǒng)中任意報(bào)警控制器都可以平等地從總線上接收其 它報(bào)警控制器的報(bào)警信息,也可以對其它報(bào)警控制器發(fā)出指令,從而克服了 "主從式"通訊 中所有信息必須通過主機(jī)進(jìn)行交換的缺點(diǎn)。
1、CAN總線簡介
控制器局域網(wǎng)CAN(Controller Area Net)是一種現(xiàn)場總線,主要用于各種過程檢測及控制。 CAN最初是由德國BOSCH公司為汽車監(jiān)測和控制而設(shè)計(jì)的,目前CAN已逐步應(yīng)用到其它工業(yè)控 制中,現(xiàn)已成為ISO-11898國際標(biāo)準(zhǔn)。
CAN總線有以下特點(diǎn):
1)CAN可以是對等結(jié)構(gòu),即多主機(jī)工作方式,網(wǎng)絡(luò)上任意一個節(jié)點(diǎn)可以在任意時刻主動地向 網(wǎng)絡(luò)上其它節(jié)點(diǎn)發(fā)送信息,不分主從,通訊方式靈活。
2)CAN網(wǎng)絡(luò)上的節(jié)點(diǎn)可以分為不同的優(yōu)先級,滿足不同的實(shí)時需要。
3)CAN采用非破壞性仲裁技術(shù),當(dāng)兩個節(jié)點(diǎn)同時向網(wǎng)絡(luò)上傳送信息時,優(yōu)先級低的節(jié)點(diǎn)自動 停止發(fā)送,在網(wǎng)絡(luò)負(fù)載很重的情況下不會出現(xiàn)網(wǎng)絡(luò)癱瘓。
4)CAN可以點(diǎn)對點(diǎn)、點(diǎn)對多點(diǎn)、點(diǎn)對網(wǎng)絡(luò)的方式發(fā)送和接收數(shù)據(jù),通訊距離最遠(yuǎn)10 km(5 kb/ s),節(jié)點(diǎn)數(shù)目可達(dá)110個。
5)CAN采用的是短幀結(jié)構(gòu),每一幀的有效字節(jié)數(shù)為8個,具有CRC校驗(yàn)和其它檢測措施,數(shù)據(jù)出錯幾率小。CAN節(jié)點(diǎn)在錯誤嚴(yán)重的情況下,具有自動關(guān)閉功能,不會影響總線上其它節(jié)點(diǎn)操作。
6)通訊介質(zhì)采用廉價的雙絞線,無特殊要求,用戶接口簡單,容易構(gòu)成用戶系統(tǒng)。
2、系統(tǒng)構(gòu)成
系統(tǒng)中每個節(jié)點(diǎn)由火災(zāi)報(bào)警控制器、CAN總線控制器、CAN收發(fā)器構(gòu)成,系統(tǒng)結(jié)構(gòu)圖如圖1所 示,火災(zāi)報(bào)警控制器接收火災(zāi)報(bào)警信息并完成火災(zāi)判斷、聯(lián)動等功能;CAN控制器用于各控 制器 之間的數(shù)據(jù)傳遞;CAN收發(fā)器增強(qiáng)了控制器的驅(qū)動能力,保證了火災(zāi)報(bào)警控制器之間的通訊距離。
發(fā)送數(shù)據(jù)時,火災(zāi)報(bào)警器把需要傳送的數(shù)據(jù)寫入CAN控制器的發(fā)送緩沖區(qū),啟動發(fā)送, 數(shù)據(jù)即通過CAN收發(fā)器發(fā)送到總線上;接收數(shù)據(jù)時,CAN控制器通過CAN收發(fā)器從總線上接收 數(shù)據(jù),處理后存入接收緩沖區(qū),并給出接收中斷信號,這時,火災(zāi)報(bào)警器可以從CAN控制器 的接收緩沖區(qū)取走數(shù)據(jù)。
3、系統(tǒng)硬件設(shè)計(jì)
圖2是CAN總線節(jié)點(diǎn)(即火災(zāi)報(bào)警器節(jié)點(diǎn))的電原理圖,圖中CPU以MCS-51系列單片機(jī)為例進(jìn)行 說明。82C200是CAN通訊控制器,主要完成CAN的通訊協(xié)議。82C200需外接復(fù)位(RST)信號; 可選用6~24 MHz晶振;MODE接VDD為INTEL方式,接VSS為Motorola方式;中斷(INT)連接到 CPU的INT0;片選信號(CS)由CPU的A15控制;TX0和RX0是與CAN總線的接口;RX1需接地。82C 250是CAN收發(fā)器,用于提供對總線差動發(fā)送和接收的驅(qū)動能力;TXD和RXD用于發(fā)送和接收信號。
4、系統(tǒng)軟件設(shè)計(jì)
在軟件設(shè)計(jì)時,由于CAN通訊協(xié)議是由集成在CAN控制器82C200中的硬件電路實(shí)現(xiàn)的,因此, 通訊軟件的開發(fā)主要體現(xiàn)在應(yīng)用軟件上,主要包括兩部分:初始化程序和通訊程序。
4.1初始化
在開機(jī)和復(fù)位后,需要對CAN控制器進(jìn)行初始化,通過對82C200控制段的寄存器寫入控制字 從而確定82C200的工作方式。初始化時,首先給CAN控制器發(fā)出復(fù)位指令,然后給控制寄存 器CR、命令寄存器CMR、狀態(tài)寄存器SR、中斷寄存器IR、驗(yàn)收寄存器ACR、驗(yàn)收屏蔽寄存器AM R、總線定時寄存器BTR0、BTR1、輸出控制寄存器OCR寫入相應(yīng)的控制字。軟件流程如圖3所 示。
4.2通訊程序
在發(fā)送數(shù)據(jù)時,CPU把需要發(fā)送的一幀數(shù)據(jù)寫入CAN控制器82C200,然后啟動發(fā)送,CAN控制 器即把數(shù)據(jù)發(fā)送到總線上。在接收數(shù)據(jù)時,CAN控制器把從總線上接收的數(shù)據(jù)存入緩沖區(qū),CPU再從緩沖區(qū)讀取數(shù)據(jù)。 數(shù)據(jù)的發(fā)送和接收可以采用查詢方式和中斷方式,下面給出采用中斷方式時的中斷服務(wù)程序。軟件 流程如圖4所示。
5、結(jié)論
傳統(tǒng)的 "主從式"通訊方式中,如果主機(jī)因?yàn)槟撤N原因出現(xiàn)通訊故障,將導(dǎo)致整個網(wǎng)絡(luò)癱瘓 。在基于CAN總線的對等式火災(zāi)報(bào)警控制系統(tǒng)中,各火災(zāi)報(bào)警控制器節(jié)點(diǎn)的關(guān)系是平等的, 都可以主動地從總線接收和發(fā)送信息,真正地實(shí)現(xiàn)了系統(tǒng)信息的共享,從而較好地解決了這 個問題,網(wǎng)絡(luò)中任意節(jié)點(diǎn)都可以平等地發(fā)送和獲取需要的信息。同時,CAN總線具有抗干擾 能力強(qiáng)、傳輸距離遠(yuǎn)、價格低廉、易于維護(hù)等優(yōu)點(diǎn),可廣泛應(yīng)用于火災(zāi)報(bào)警系統(tǒng)中。