基于CAN總線的溫室測(cè)控系統(tǒng)的研究與設(shè)計(jì)
為了提高系統(tǒng)的實(shí)時(shí)性,報(bào)文接收模塊采用中斷接受方式。該模塊包括主程序和接受中斷服務(wù)程序兩部分組成,主程序必須在中斷控制報(bào)文接受之前使能CAN的接受中斷和微控制器QG8的全局中斷。當(dāng)報(bào)文發(fā)送完之后會(huì)產(chǎn)生一個(gè)中斷通知來(lái)接收?qǐng)?bào)文。首先應(yīng)該看一下中斷標(biāo)志類型,如果是報(bào)文成功發(fā)送產(chǎn)生的中斷,將報(bào)文讀入濾波器中,否則產(chǎn)生報(bào)文出錯(cuò)標(biāo)志,CANINTF.MERRF位被置1.將接收到報(bào)文的標(biāo)示符字段與濾波寄存器中的值進(jìn)行比較,如果兩者匹配,將該報(bào)文載入相應(yīng)的接受緩沖器,否則產(chǎn)生一個(gè)無(wú)效報(bào)文。如果緩沖器慢將會(huì)產(chǎn)生溢出錯(cuò)誤,EFLG.RXOOVER位置1.報(bào)文接受成功且處理完畢后,MCU將清除中斷標(biāo)志,返回主程序以接受下一條報(bào)文。具體的流程圖如圖5所示。另外整個(gè)報(bào)文接受過(guò)程都可以在接受中斷服務(wù)程序中完成,不需要與主程序發(fā)生交互作用。本文引用地址:http://www.ex-cimer.com/article/161817.htm
3.2 CAN總線應(yīng)用層軟件實(shí)現(xiàn)
目前國(guó)內(nèi)還沒有CAN通訊的應(yīng)用層協(xié)議標(biāo)準(zhǔn),而國(guó)外現(xiàn)有流行的CANopen、DeviceNet和CANkingdom等應(yīng)用層協(xié)議對(duì)于本系統(tǒng)的要求來(lái)說(shuō)實(shí)現(xiàn)復(fù)雜會(huì)造成資源浪費(fèi)。本文定義了一個(gè)簡(jiǎn)單的通信協(xié)議來(lái)完成系統(tǒng)所需求的功能。
該協(xié)議中采用29位(ID.28-ID.0)標(biāo)識(shí)符的擴(kuò)展幀格式,這些位的發(fā)送順序是從ID.28到ID.0,最高7位ID.28~I(xiàn)D.22不能全是隱性1。每一個(gè)標(biāo)識(shí)符對(duì)應(yīng)一條信息,只有與自己標(biāo)識(shí)符相同的信息才被接收端接收。標(biāo)識(shí)符ID號(hào)的大小還決定了發(fā)送的優(yōu)先級(jí)和等待時(shí)間,標(biāo)識(shí)符越小的報(bào)文幀優(yōu)先被發(fā)送。本協(xié)議中ID號(hào)位28~24的五位表示信息采集節(jié)點(diǎn),包括各種傳感器模塊,ID號(hào)為23~18的四位表示顯示節(jié)點(diǎn),包括各種數(shù)據(jù)的顯示和報(bào)警節(jié)點(diǎn)。ID號(hào)為19~14的六位為執(zhí)行控制節(jié)點(diǎn),包括CO2發(fā)生器、循環(huán)風(fēng)扇等控制設(shè)備節(jié)點(diǎn)。ID15~13為信息類別,包塊各種命令信息和狀態(tài)信息等信息節(jié)點(diǎn)。ID12~I(xiàn)D0為預(yù)留。
4 系統(tǒng)測(cè)試
為了測(cè)試本設(shè)計(jì)的性能,在實(shí)驗(yàn)室里進(jìn)行了CAN總線節(jié)點(diǎn)之間的溫度測(cè)試,如圖6所示。在18點(diǎn)和19點(diǎn)(橫坐標(biāo)表示時(shí)間)之間進(jìn)行了溫度的測(cè)試,在18點(diǎn)鐘到18點(diǎn)30分之間A和B節(jié)點(diǎn)一直顯示實(shí)驗(yàn)室的室內(nèi)溫度(15~17℃之間),過(guò)半個(gè)小時(shí)后將B節(jié)點(diǎn)放入22℃的溫水中,然后取出。從圖中可以看到紅色曲線(A節(jié)點(diǎn)溫度曲線)一直是恒溫狀態(tài)(15~17℃之間),而白色曲線(B節(jié)點(diǎn)溫度曲線)在18點(diǎn)30分鐘溫度升到22℃,隨著溫度傳感器被取出,溫度也在下降到15~17℃之間。
5 結(jié)束語(yǔ)
本文根據(jù)目前溫室系統(tǒng)存在的問題,提出了用CAN總線構(gòu)成溫室測(cè)控系統(tǒng)傳輸網(wǎng)絡(luò),并根據(jù)系統(tǒng)需要設(shè)計(jì)了簡(jiǎn)單的應(yīng)用層通信協(xié)議和進(jìn)行了CAN節(jié)點(diǎn)之間溫度測(cè)試。測(cè)試結(jié)果表明:本設(shè)計(jì)傳輸網(wǎng)絡(luò)結(jié)構(gòu)簡(jiǎn)單、可靠性高。另外該測(cè)控模塊也可以運(yùn)用在鍋爐控制、樓宇控制等各種工業(yè)現(xiàn)場(chǎng)測(cè)控系統(tǒng)中,實(shí)用性強(qiáng)、應(yīng)用范圍廣。
評(píng)論