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