基于CAN總線智能窗戶系統(tǒng)的設(shè)計實現(xiàn)
摘 要: 本系統(tǒng)基于CAN總線,以單片機(jī)P8XC592和總線收發(fā)器PCA82C250為主體組成通信控制模塊。各個控制模塊為一個節(jié)點,每個節(jié)點可以獨立進(jìn)行操作,同時受到總臺的監(jiān)控。節(jié)點和總臺PC機(jī)相連接組成一個控制器局域網(wǎng)。由于CAN總線具有較高的可靠性,實時性以及靈活性,所以運用CAN總線進(jìn)行控制可以靈活地運用于智能窗戶系統(tǒng)的開發(fā)中。
關(guān)鍵詞:CAN總線 智能窗戶 智能家居
1引言
在我國現(xiàn)有的市場里,智能窗戶作為智能家居的一部分,它主要圍繞著單個家庭進(jìn)行開發(fā)。但隨著人們對智能家居的要求越來越高,就在群控性,遠(yuǎn)程監(jiān)控性,實時性等方面提出了更高的要求。在這樣的前提下,引出了新的課題。結(jié)合CAN總線的數(shù)據(jù)通信技術(shù)具有突出的可靠性,實時性和靈活性的優(yōu)點,把CAN總線技術(shù)運用于該系統(tǒng)中,達(dá)到在控制每個單獨的窗戶的同時,監(jiān)控所有窗戶的運行情況的目的。
2 系統(tǒng)結(jié)構(gòu)設(shè)計
2.1 系統(tǒng)總體結(jié)構(gòu)
CAN總線遵循ISO/OSI標(biāo)準(zhǔn)模型,分為數(shù)據(jù)鏈接層(包括邏輯鏈路控制子層LLC和媒體訪問控制子層MAC)以及物理層。其通信接口中集成了CAN協(xié)議的物理層和數(shù)據(jù)鏈路層功能,可完成對數(shù)據(jù)的幀處理,包括位填充用戶可在其基礎(chǔ)上開發(fā)適應(yīng)系統(tǒng)實際需要的應(yīng)用層通信協(xié)議。
與一般的通信總線相比,CAN協(xié)議的一個最大特點是廢除了傳統(tǒng)的站地址編碼,而代之以對通信數(shù)據(jù)塊編碼,報文標(biāo)識符可達(dá)2032中(CAN2.0A),而擴(kuò)展標(biāo)準(zhǔn)(CAN2.0B)的標(biāo)識符幾乎不受限制,還可使不同的節(jié)點同時收到相同的數(shù)據(jù)。所以本系統(tǒng)可以由多個獨立的窗戶為基本單元,這些單元與上位計算機(jī)通過CAN現(xiàn)場總線組成了監(jiān)控網(wǎng)絡(luò),從而實現(xiàn)群控的功能。
如下圖1所示。從中我們可以看出,本系統(tǒng)被分為三層:
(1)現(xiàn)場設(shè)備層:有一個雨水傳感器以及多個窗戶節(jié)點組成的,這些輸入輸出設(shè)備作為CAN的I/O點接入現(xiàn)場總線。窗戶節(jié)點N的個數(shù)是由選取的總線驅(qū)動電路決定的。
(2)設(shè)備控制層:CAN控制器P8xC592以及CAN收發(fā)器PCA83C250,這是CAN總線控制的核心部分,CAN控制器實現(xiàn)通信及節(jié)點控制的功能;CAN收發(fā)器起到節(jié)點與總線之間通信的功能。
(3)管理監(jiān)控層:作為控制系統(tǒng)的人機(jī)交互接口,通過上位PC機(jī)實現(xiàn)對整個系統(tǒng)的監(jiān)視控制作用。
圖 1系統(tǒng)硬件結(jié)構(gòu)圖
2.2系統(tǒng)的硬件選取
在本系統(tǒng)中,總線控制器和收發(fā)器分別采用Philip公司的P8xC592和PCA83C250。P8xC592單片機(jī)是用COMS工藝制造的具有CAN功能的8位單片機(jī)其指令集與80C51完全兼容,這樣就有利于編程。PCA83C250是CAN控制器與物理總線的接口,可以提供對總線的差動發(fā)送和接收功能。在此特別注意 P8xC592單片機(jī)是一種集成CAN控制器的高性能微處理器,所以在該系統(tǒng)中,P8xC592不僅僅要與CAN相連接,同時還要對各個窗戶子系統(tǒng)進(jìn)行控制。
同時傳輸介質(zhì)只要使用雙鉸線,在短距離(40m)條件下就具有高速(1Mbit/s)數(shù)據(jù)傳輸能力,而在最大距離10000m時具有低速(5kbits/s)傳輸能力。而主控制器采用的是性價比高,結(jié)構(gòu)簡單,便于編程的89S51單片機(jī),主要用于對CAN控制器P8xC592及其串口RS232初始化,并通過對CAN控制器8xC592及其串口RS232的控制操作實現(xiàn)現(xiàn)場CAN總線與管理層PC機(jī)的數(shù)據(jù)交換等通信任務(wù)。
3 用戶通信協(xié)議設(shè)計
3.1 通信協(xié)議
這里采用的是CAN2.0A標(biāo)準(zhǔn),該協(xié)議最大的優(yōu)點是廢除了傳統(tǒng)的站地址編碼,因此CAN沒有節(jié)點地址的概念,代之以通信數(shù)據(jù)塊進(jìn)行編碼,支持以數(shù)據(jù)為中心的通信模式.當(dāng)窗戶節(jié)點不同時,只需要在總線上增減控制器的節(jié)點數(shù),并對相應(yīng)的數(shù)據(jù)幀進(jìn)行適當(dāng)?shù)男薷? CAN上的節(jié)點數(shù)主要取決于總線驅(qū)動線路,當(dāng)采用PCA82C250時,最多可達(dá)110個。
3.2 數(shù)據(jù)幀
數(shù)據(jù)幀如圖2所示,包括七個部分:幀起始,仲裁場,控制場,數(shù)據(jù)場,CRC序列,ACK場,幀結(jié)束.仲裁場包括有報文標(biāo)識符(11位)和遠(yuǎn)程發(fā)送申請位(RTR);控制場由六位組成,如圖3所示,后四位位數(shù)據(jù)長度碼,代表數(shù)據(jù)場字節(jié)數(shù),這里設(shè)為02H;傳輸信號每一幀數(shù)據(jù)長度為16位,高字節(jié)用D8到D15八位編碼表示節(jié)點在大樓的位置,低字節(jié)設(shè)為控制字,控制字各位均為高電平有效。如下圖4所示,例如:數(shù)據(jù)場為0801H,表示8號窗戶節(jié)點要求托管;0802H表示8號窗戶節(jié)點處于開啟狀態(tài),0804H表示8號窗戶處于關(guān)閉狀態(tài),0808H表示8號窗戶要執(zhí)行開窗指令,080F H表示8號窗戶要執(zhí)行關(guān)窗指令。對于上位機(jī)和下層的各個節(jié)點來說,它們需要發(fā)送的數(shù)據(jù)幀信息是不同的。
圖 4 數(shù)據(jù)場組成
3.3 多主廣播方式
總線空閑時,任意節(jié)點均可發(fā)送數(shù)據(jù),其它節(jié)點都可接收總線上的數(shù)據(jù),CAN只需通過報文濾波就可以實現(xiàn)點對點,一點對多點及全局廣播等傳收方式,無須專門調(diào)度。這里用接受碼寄存器,接收碼屏蔽寄存器實現(xiàn)報文濾波,使上位機(jī)收總線上的一切信息,而層站控制器只接受上位機(jī)的CAN控制器發(fā)出的信號,并且使不同的節(jié)點可以同時接受上位機(jī)CAN控制器發(fā)出的數(shù)據(jù)。這點非常有用,采用廣播方式,可極大地節(jié)省傳輸時間,提高傳輸速率,增強(qiáng)系統(tǒng)地實時性和可靠性。
3.4 總線仲裁
報文標(biāo)識符用于提供傳送報文和總線訪問權(quán)信息。當(dāng)多個總線控制器同時發(fā)送報文時,為避免沖突需進(jìn)行仲裁。仲裁期間,每個進(jìn)行發(fā)送的P8xC592都將其發(fā)送位電平與監(jiān)控總線電平進(jìn)行比較。如果發(fā)送一個隱性位而監(jiān)視到一個顯性位電平,那么該節(jié)點失去仲裁,放棄總線控制權(quán),停止傳送信息,P8xC592立即變成總線上較高優(yōu)先權(quán)報文的接收器,而不破壞總線上任何信息。數(shù)據(jù)場上的發(fā)送數(shù)據(jù)存在發(fā)送緩存器數(shù)據(jù)區(qū)中,同時,接收數(shù)據(jù)幀的數(shù)據(jù)將被存在接收緩存器中。每段報文包括一個唯一的標(biāo)識符和報文中描述數(shù)據(jù)類型的RTR位。標(biāo)識符和RTR位一起定義該報文的總線訪問優(yōu)先權(quán)。仲裁期間,標(biāo)識符的最高位先后被發(fā)送,而RTR位最后發(fā)送。標(biāo)識符和RTR位對應(yīng)二進(jìn)制數(shù)值最低的報文具有最高的優(yōu)先權(quán)。11位可以形成2032個不同的標(biāo)識符,而該系統(tǒng)中窗戶節(jié)點由于驅(qū)動電路的限制,最多只能有110個節(jié)點,所以采用標(biāo)識符確定優(yōu)先權(quán)綽綽有余。
4 系統(tǒng)軟件設(shè)計
上位機(jī)即操作站的網(wǎng)絡(luò)管理和應(yīng)用程序的設(shè)計思路主要是CAN接口適配卡的初始化,判斷網(wǎng)絡(luò)節(jié)點之間時候有沖突,設(shè)定節(jié)點優(yōu)先級,數(shù)據(jù)存取,與歷史數(shù)據(jù)比較,根據(jù)節(jié)點實際情況進(jìn)行處理并回送等功能。
CAN控制器P8xC592的通信軟件包括CAN初始化、報文的接收和報文發(fā)送三部分。當(dāng)控制器上電后,首先對CAN控制器P8xC592進(jìn)行初始化設(shè)置,主要包括工作方式的設(shè)置、接受濾波方式的設(shè)置、接受屏蔽寄存器和接受代碼寄存器的設(shè)置、波特率參數(shù)設(shè)置和中斷允許寄存器的設(shè)置。完成P8xC592的初始化設(shè)置后即返回工作狀態(tài),開始循環(huán)監(jiān)聽CAN總線上的信息。
從用戶的角度來看,窗戶的運行情況是與其息息相關(guān)的。對于最底層的現(xiàn)場CAN智能測控節(jié)點的軟件設(shè)計采用結(jié)構(gòu)化設(shè)計方案。如下圖5所示,P8xC592根據(jù)接收遙控器發(fā)出的信息決定運行情況,如果需要托管的話,就接受來自CAN控制器的信號并用于控制窗戶的開/關(guān)。如果不用托管的話,那么就不斷掃描遙控器,接受到信號然后執(zhí)行。同時在程序的結(jié)束部分,有一個10ms計時的操作,這樣就能保證單片機(jī)能有序地發(fā)送檢測信號給PC機(jī)。
圖 5 窗戶節(jié)點軟件流程圖
5 系統(tǒng)功能效果
在該系統(tǒng)中,用戶可以直接通過遙控器方便方便地進(jìn)行操作,遙控器板有三個按鍵,一是開窗,二是關(guān)窗,三是托管。當(dāng)遙控器的托管按鍵沒有按下去的時候,用戶就自己對關(guān)窗開窗進(jìn)行控制,當(dāng)用戶需要開/關(guān)窗的時候,就按遙控器上相應(yīng)的鍵就能實現(xiàn)功能。而當(dāng)遙控器處于托管,如果下雨的時候,雨水傳感器檢測到下雨的信號,就通過P8XC592發(fā)送信號,信號經(jīng)過CAN總線到達(dá)PC主機(jī),然后PC主機(jī)再發(fā)送關(guān)窗的指令到所有處于托管狀態(tài)的窗戶節(jié)點。
在應(yīng)用方面,智能故障診斷是非常重要的。在該系統(tǒng)里,設(shè)計一種檢測的方法,每個窗戶節(jié)點在每10ms的時間里,由P8XC592發(fā)送到檢測信號PC主機(jī)里。如果主機(jī)沒有收到該節(jié)點的檢測信號,就認(rèn)為該節(jié)點發(fā)生了故障。那么PC機(jī)就會向管理人員報警,說明該窗戶節(jié)點出現(xiàn)了故障。
6 結(jié)論
基于CAN總線技術(shù),采用P8XC592和PCA82C250芯片構(gòu)成先進(jìn)的總線智能節(jié)點控制器。在這篇文章中,筆者更多的是用智能窗戶設(shè)計作為一個支點,概述了基于CAN總線技術(shù)應(yīng)用于智能家居領(lǐng)域的設(shè)計方案。把水表,燃?xì)獗淼鹊绕渌揖悠骷Y(jié)合在單個節(jié)點控制器中,用CAN總線把各個節(jié)點連接起來,形成一個控制局域網(wǎng)絡(luò)。本文提出來的設(shè)計方案為以后智能家居系統(tǒng)的開發(fā)設(shè)計提供了新的思路和新的方法。
本文作者創(chuàng)新點在于在實現(xiàn)單個節(jié)點設(shè)計的基礎(chǔ)上,將CAN總線引入到智能家居的設(shè)計中來。實現(xiàn)對樓宇中窗戶的遠(yuǎn)程監(jiān)控和操作,從而提出了智能家居的發(fā)展新方法新思路。