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