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