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