□□ , ,,
(1.山西職業(yè)技術(shù)學(xué)院,山西 太原 030006;2.濟(jì)南大學(xué) 自動(dòng)化與電氣工程學(xué)院,山東 濟(jì)南 250022)
隨著經(jīng)濟(jì)社會(huì)的發(fā)展,人們對(duì)居住和工作環(huán)境的要求越來(lái)越高,這就使城市的樓宇建設(shè)越來(lái)越復(fù)雜,其復(fù)雜程度不僅體現(xiàn)在建筑外形上,還體現(xiàn)在樓宇內(nèi)的電氣控制及自動(dòng)化程度方面。
樓宇自控系統(tǒng)應(yīng)具有可靠性高、可操作性強(qiáng)、實(shí)時(shí)性好以及性價(jià)比高等特點(diǎn)。目前,國(guó)內(nèi)大多數(shù)樓宇的各個(gè)系統(tǒng)都分立工作,沒(méi)有形成總體監(jiān)控,使樓宇的監(jiān)管和維護(hù)變得復(fù)雜繁瑣,且成本高昂[1]。為解決此問(wèn)題,本文研究了一種基于STM32單片機(jī)和CAN總線的低成本樓宇自動(dòng)化系統(tǒng)。
把空間上分立的區(qū)域定為一個(gè)獨(dú)立區(qū)域,為維持這個(gè)區(qū)域內(nèi)的適宜環(huán)境,就不得不涉及多種子系統(tǒng)。如客房區(qū)域內(nèi)的空調(diào)系統(tǒng)和照明系統(tǒng)共同工作維持室內(nèi)溫度與亮度;再如門(mén)廳走廊區(qū)域,通過(guò)消防系統(tǒng)與門(mén)禁系統(tǒng)的合作便可隔離火源、抑制火災(zāi)等。集合如此多種不同的子系統(tǒng),分別采用單片機(jī)技術(shù)來(lái)實(shí)現(xiàn)最為合適。而在眾多的單片機(jī)中,STM32單片機(jī)具有很高的性價(jià)比,因此采用該系列單片機(jī)作為各個(gè)獨(dú)立測(cè)控點(diǎn)的MCU。
1.1.1 STM32系列單片機(jī)的性能特點(diǎn)
在高性能單片機(jī)中,STM32系列單片機(jī)的性能十分突出。它采用意法半導(dǎo)體公司的ARM Cortex-M3處理器作為內(nèi)核,使其性能與普通16位單片機(jī)相比有了質(zhì)的飛躍,且與其他32位處理器相比,其低成本、低功耗的特質(zhì)又顯得尤為突出[2]。以STM32F107為例,其主要技術(shù)特點(diǎn)有:
(1)低功耗。它的內(nèi)核采用130 nm專用低泄漏電流控制工藝,在開(kāi)啟所有外設(shè)的狀態(tài)下消耗電流僅為36 mA,在可喚醒低功耗模式下降低至可忽略的2 μA。
(2)一流的外設(shè)。翻轉(zhuǎn)頻率可達(dá)到18 MHz。5個(gè)4 MHz/s的UART,3個(gè)SPI模塊,兩路12位的A/D轉(zhuǎn)換器,兩路12位D/A轉(zhuǎn)換器以及1個(gè)溫度傳感器。兩個(gè)CAN2.0B型控制器,具有USB和以太網(wǎng)模塊??蓾M足單個(gè)區(qū)域的多而復(fù)雜的檢測(cè)及控制要求。此外,新型產(chǎn)品還強(qiáng)化了音頻性能。結(jié)合USB功能,STM32可以從外部存儲(chǔ)器讀取、解碼和輸出音頻信號(hào)[3]。
1.1.2 區(qū)域控制原理
STM32單片機(jī)采用CAN總線把所有的系統(tǒng)聯(lián)系在一起,在特定的區(qū)域可能還會(huì)用到其他網(wǎng)絡(luò),比如室內(nèi)智能家用電器通過(guò)無(wú)線網(wǎng)與戶主取得聯(lián)系,還設(shè)有其他網(wǎng)絡(luò)模塊。STM32系列單片機(jī)的I/O口最高可以達(dá)到112個(gè),在設(shè)計(jì)時(shí)留出下載端口,I/O口預(yù)留10%~20%的冗余設(shè)計(jì)為可插拔端口,可在不影響原功能的前提下快捷地進(jìn)行二次開(kāi)發(fā)。圖1給出了一個(gè)獨(dú)立區(qū)域的測(cè)控原理圖。
位于獨(dú)立區(qū)域中的STM32系列的單片機(jī)除了完成本區(qū)域內(nèi)的測(cè)控任務(wù)外,還兼顧處理CAN總線上傳來(lái)的參數(shù)信息。由于每個(gè)區(qū)域內(nèi)的測(cè)控內(nèi)容不同,則每個(gè)控制點(diǎn)的基本流程也不盡相同。
圖1 測(cè)控原理圖
整個(gè)樓宇內(nèi)有很多獨(dú)立的空間,有的空間內(nèi)需測(cè)控的參數(shù)數(shù)目眾多,而有的區(qū)域間信息互聯(lián)很緊密,因此線束量也很多。還有些區(qū)域間雖信息互不緊密但相隔較遠(yuǎn),也要進(jìn)行長(zhǎng)距離的布線。此時(shí)如采用CAN總線技術(shù),便可大量節(jié)省線束使用量。
20世紀(jì)70年代后期,汽車(chē)行業(yè)蓬勃發(fā)展,汽車(chē)內(nèi)的電子控制單元越來(lái)越多,多點(diǎn)對(duì)多點(diǎn)的信息交流使得車(chē)內(nèi)的鏈接線束急劇增加。為此,德國(guó)BOSCH公司率先開(kāi)發(fā)出一種多主機(jī)的局部網(wǎng),即CAN總線局域網(wǎng),憑借其優(yōu)異的可靠性和靈活性,現(xiàn)已廣泛應(yīng)用于工業(yè)過(guò)程自動(dòng)化、樓宇自動(dòng)化、環(huán)境控制、農(nóng)業(yè)生產(chǎn)自動(dòng)化等眾多領(lǐng)域[4]。
CAN總線除了在汽車(chē)電子系統(tǒng)和樓宇自動(dòng)化方面的優(yōu)勢(shì)十分明顯外,CAN總線的層結(jié)構(gòu)使其在通訊錯(cuò)誤檢測(cè)以及抗干擾等方面的表現(xiàn)也很突出[5]。
CAN總線的主要特點(diǎn)如下:
(1)通訊介質(zhì)和傳輸距離。CAN總線可用多種媒介作為數(shù)據(jù)通信介質(zhì),最常用的是雙絞線并在連線末端加上匹配電阻,直接通訊距離可達(dá)到10 km,最高通訊速率達(dá)到1 Mbps。
(2)總線電平。CAN總線共有兩條帶電壓導(dǎo)線:CANH線和CANL線,兩條線上電壓值相同且為2.5 V時(shí),即表示邏輯狀態(tài)為0;當(dāng)CANH線上的電平升高至3.5 V,CANL線上電平降至1.5 V,電壓差到達(dá)2 V時(shí),即表示邏輯狀態(tài)為1[6]。
(3)通信協(xié)議。CAN總線屬于多節(jié)點(diǎn)串行通訊,任意節(jié)點(diǎn)以廣播的方式將信息發(fā)送至線上的其他所有節(jié)點(diǎn),其他節(jié)點(diǎn)會(huì)根據(jù)需求留下所需信息。其信息是以幀的方式進(jìn)行傳遞的,而根據(jù)功能的不同,幀分為4種:數(shù)據(jù)幀、錯(cuò)誤幀、遠(yuǎn)程幀和過(guò)載幀。每個(gè)幀的最后一個(gè)域由7個(gè)退讓位組成[7]。
CAN總線按信息傳播速度可分為高速總線和低速總線。在樓宇系統(tǒng)中,有些信息實(shí)時(shí)性很強(qiáng),如漏電信號(hào)、火險(xiǎn)信號(hào)和門(mén)禁信號(hào)等,所以把這些信號(hào)掛接在高速CAN總線上,其余的實(shí)時(shí)性不是很強(qiáng)的信號(hào)可掛接在低速CAN總線上,這樣便可將分散在不同區(qū)域或同一區(qū)域的不同測(cè)控點(diǎn)連接起來(lái)。
2.2.1 CAN總線接口硬件電路
單片機(jī)讀寫(xiě)信號(hào)線TX和DX經(jīng)過(guò)光電隔離電路后,與CAN總線收發(fā)模塊PCA82C250相連接,實(shí)現(xiàn)數(shù)據(jù)信息的傳遞,接口電路原理如圖2所示。
圖2 總線接口電路
2.2.2 CAN總線的冗余設(shè)計(jì)
在整個(gè)樓宇內(nèi),二次裝修的時(shí)間和區(qū)域是不確定的。有時(shí)施工單位的變更,很可能在不知情的情況下破壞或阻斷CAN總線,導(dǎo)致通信故障。為使整個(gè)系統(tǒng)更加穩(wěn)定可靠,CAN總線采用冗余設(shè)計(jì),即把高速總線和低速總線都做成兩條,正常工作時(shí),信號(hào)在總線1上傳遞,當(dāng)出現(xiàn)故障時(shí),在報(bào)警的同時(shí),信息轉(zhuǎn)向另一條總線[8]。
CAN總線的數(shù)據(jù)通信流程如圖3所示。
圖3 數(shù)據(jù)通信流程
CAN總線通訊的最主要部分為數(shù)據(jù)信息的發(fā)送部分和接收部分,以下是這兩部分的子程序。
2.3.1 CAN總線的數(shù)據(jù)發(fā)送子程序
Void User_CANTransmit(uint16_t val)
{
CanTxMsgTxMessage;
uint8_t TransmitMailbox;
TxMessage.StdId=val&0x7FF;
TxMessage.RTR=CAN_RTR_DATA;
TxMessage.IDE=CAN_ID_STD;
TxMessage.DLC=2;
TxMessage.Data[0]=val;
TxMessage.Data[1]=(val?8);
TransmitMailbox=CAN_Transmit(CAN1,&TxMessage);
while((CAN_TransmitStatus(CAN1,Tra nsmitMailbox)!=CANTXOK));
}
2.3.2 CAN總線的數(shù)據(jù)接收子程序
void CAN1_RX0_ISR(void)
{
if(CAN_GetITStatus(CAN1,CAN_IT_FMP0)!=RESET)
{
uint16_t ch;
CAN_ClearITPendingBit(CAN1,CAN_IT_FMP0);
CAN_Receive(CAN1,CAN_FIFO0,&RxMessage);
ch=(RxMessage.Data[1]?8)|RxMessage.Data[0];User_Uart1SendChar(ch);
}
}
根據(jù)樓宇自動(dòng)化系統(tǒng)多區(qū)域多子系統(tǒng)的特點(diǎn),本文提出了一種可以完成樓宇自動(dòng)化基本任務(wù)且成本較低的設(shè)計(jì)方案,主要依靠STM32系列單片機(jī)的高性能與低成本的特性,以及CAN總線通訊的多主機(jī)和可冗余機(jī)制。在信息化和新材料技術(shù)快速發(fā)展的21世紀(jì),樓宇自動(dòng)化系統(tǒng)的發(fā)展有著非常光明的前景,必然會(huì)成為智能建筑工程的重要基礎(chǔ)設(shè)施。同時(shí),樓宇自動(dòng)化的科技水平也將成為國(guó)家綜合國(guó)力的一個(gè)具體體現(xiàn)。
參考文獻(xiàn):
[1] 徐巖.淺談智能建筑中的樓宇自動(dòng)化系統(tǒng)[J].智能建筑電氣技術(shù),2008,2(5):15-18.
[2] 孫書(shū)鷹,陳志佳,寇超.新一代嵌入式微處理器STM32 F103開(kāi)發(fā)與應(yīng)用[J].微計(jì)算機(jī)應(yīng)用,2010,31(12):59-63.
[3] 董佳.CAN總線分析儀設(shè)計(jì)[D].廣州:華南理工大學(xué),2012.
[4] 朱帥.基于CAN總線分布式電動(dòng)汽車(chē)充電站控制系統(tǒng)研究[D].贛州:江西理工大學(xué),2012.
[5] 趙雨斌,苗滿香,陳宇.基于CAN總線的樓宇智能監(jiān)控報(bào)警系統(tǒng)研究與設(shè)計(jì)[J].核電子學(xué)與探測(cè)技術(shù),2008,28(5):915-918.
[6] 楊貴永,羅亞峰,封桂榮,等.CAN總線在樓宇自動(dòng)化系統(tǒng)中的應(yīng)用[J].工業(yè)控制計(jì)算機(jī),2013,26(5):74-75.
[7] 顧羽潔,解大,張明,等.基于CAN總線的樓宇自控系統(tǒng)設(shè)計(jì)[J].現(xiàn)代建筑電氣,2010,1(8):10-14.
[8] 禹春來(lái),許化龍,劉根旺,等.CAN總線冗余方法研究[J].測(cè)控技術(shù),2003,22(10):28-30,41.