摘要:針對(duì)高端電梯控制系統(tǒng),設(shè)計(jì)一種VIP功能模塊。該模塊具有安全穩(wěn)定、功能豐富、擴(kuò)展性強(qiáng)的特點(diǎn),重點(diǎn)研究了VIP信息讀取、通過(guò)TWI總線查詢EEPROM內(nèi)信息等關(guān)鍵技術(shù);經(jīng)過(guò)現(xiàn)場(chǎng)實(shí)際測(cè)試,該模塊運(yùn)行良好,有較好的推廣前景。
關(guān)鍵詞:高端電梯;VIP;TWI;韋根協(xié)議;CAN總線
Design and Implementation of VIP Functional Module of Advanced Elevators
CHEN Zhen-qin, LIU Tun-dong
(Xiamen University, Xiamen 361005, China)
Abstract: A VIP functional module designed for advanced elevator control system. The module has safe, stable, and high extendibility characteristic. Several key technologies emphasized such as reading VIP information, querying information by TWI bus. Through the on-site test, the module proved to be running well, and with a good promotion prospects.
Key words: advanced elevator; VIP; TWI; wiegand protocol; CAN bus
電梯控制系統(tǒng)是居民小區(qū)、辦公寫(xiě)字樓等的重要組成部分,隨著電梯功能的日益增加,電梯的安全性日益受到重視,要求對(duì)進(jìn)出樓層人員進(jìn)行必要的管制,使其僅能到達(dá)被允許進(jìn)入的樓層范圍,從而實(shí)現(xiàn)對(duì)現(xiàn)代樓宇安全有序的管理。隨著科學(xué)技術(shù)的推廣與應(yīng)用、人們安全意識(shí)的增強(qiáng),現(xiàn)代的樓宇大部分有VIP管理系統(tǒng),期望以此來(lái)提高管理檔次、降低管理成本。因此,將VIP技術(shù)與電梯控制系統(tǒng)有機(jī)結(jié)合起來(lái)便可以實(shí)現(xiàn)對(duì)電梯的智能化控制與管理,從而達(dá)到上述期望的目標(biāo)。
當(dāng)前應(yīng)用于對(duì)電梯系統(tǒng)進(jìn)行安全管制的方式主要有:設(shè)置密碼、接觸式卡、非接觸式IC卡和生物技術(shù)。設(shè)置密碼的方式因存在較大的安全隱患而較少使用,接觸式卡因其卡片容易在使用中磨損,導(dǎo)致維護(hù)和成本的增加,生物識(shí)別技術(shù)因開(kāi)發(fā)難度大與價(jià)格高的原因,至今沒(méi)有普及型的產(chǎn)品,而非接觸式IC卡綜合了各種方式的優(yōu)點(diǎn),是目前在智能門(mén)禁系統(tǒng)中應(yīng)用最為廣泛的技術(shù)。[1]因此,研究基于非接觸式IC卡的電梯系統(tǒng)VIP功能模塊不僅有較強(qiáng)的技術(shù)支持,而且也有較好的發(fā)展應(yīng)用前景。
1 VIP功能模塊基本架構(gòu)
本文所使用的電梯控制系統(tǒng)包括主控板、內(nèi)呼板、外呼板。主控板負(fù)責(zé)實(shí)現(xiàn)電梯的主要控制邏輯和控制功能;外呼板負(fù)責(zé)采集轎外呼梯信號(hào)及電梯運(yùn)行狀態(tài)顯示;內(nèi)呼板負(fù)責(zé)采集電梯運(yùn)行中的部分開(kāi)關(guān)量信號(hào)以及轎廂內(nèi)的呼梯信號(hào),并將這些信號(hào)通過(guò)CAN總線傳遞給主控板,主控板也通過(guò)CAN總線對(duì)內(nèi)呼板發(fā)送指令,使得內(nèi)呼板對(duì)相應(yīng)的開(kāi)關(guān)量進(jìn)行輸出控制。內(nèi)呼板CPU采用Atmel公司的AT90CAN128,它自帶CAN控制器,支持TWI總線、SPI總線,內(nèi)含128K Flash ROM及4K RAM,是一款性能優(yōu)秀的高速M(fèi)CU。[2]
VIP功能模塊是電梯控制系統(tǒng)中的一個(gè)模塊,它包括非接觸式射頻讀卡器、AT24C256芯片、LED數(shù)碼顯示,通過(guò)I/O端口控制鍵盤(pán)的鎖定,與主控板、內(nèi)呼板通過(guò)CAN總線互相通信,架構(gòu)圖如圖1。
VIP功能模塊通過(guò)非接觸式讀卡器讀入VIP信息,然后MCU將讀入的信息與EEPROM(AT24C256)進(jìn)行比對(duì),進(jìn)而開(kāi)放相應(yīng)的權(quán)限并執(zhí)行內(nèi)呼板上相應(yīng)的功能,從而實(shí)現(xiàn)電梯的身份管制、VIP特殊待遇等功能。下文將分別從硬件和軟件兩個(gè)方面來(lái)介紹VIP功能模塊。
2 VIP功能模塊硬件設(shè)計(jì)
在VIP功能模塊中,每次通過(guò)射頻終端讀入卡號(hào)信息,都必須與系統(tǒng)內(nèi)存儲(chǔ)的卡號(hào)信息進(jìn)行比對(duì),找出該卡號(hào)所對(duì)應(yīng)的權(quán)限,以便電梯控制系統(tǒng)做出相應(yīng)的動(dòng)作。因此在本VIP模塊中,引入一個(gè)高速、大容量EEPROMAT24C256,用于預(yù)先存儲(chǔ)大量的卡號(hào)及權(quán)限信息。
非接觸式射頻卡終端與MCU通過(guò)兩條線DATA0、DATA1相連,終端將刷卡所得信息通過(guò)韋根協(xié)議,送入MCU的INT2、INT3兩個(gè)外部中斷端口。AT24C256的SCL(串行時(shí)鐘)、SDA(串行數(shù)據(jù)/地址)、WP(寫(xiě)保護(hù))分別接到MCU的PD0、PD1、PC4, VSS接地,VDD接5V電源。A0-A2為器件地址輸入。這些管腳為硬連線或者不連接。對(duì)于單總線系統(tǒng),最多可尋址8個(gè)AT24C256 器件。當(dāng)這些引腳沒(méi)有連接時(shí)其默認(rèn)值為0。
3 VIP功能模塊軟件設(shè)計(jì)
3.1 軟件總體設(shè)計(jì)
管理中心給每個(gè)用戶分配一張VIP卡,根據(jù)用戶的個(gè)人資料和要求,分配給用戶可到達(dá)樓層的權(quán)限,用戶只能到達(dá)權(quán)限所指定的樓層。用戶進(jìn)入電梯轎廂后刷卡,讀卡控制模塊獲取持卡人ID號(hào),將ID號(hào)傳輸給MCU,MCU對(duì)照已做好的映射表查詢到該用戶可到達(dá)樓層的權(quán)限,根據(jù)權(quán)限的要求,解鎖電梯內(nèi)權(quán)限描述的按鍵鍵盤(pán),等待用戶按下所要到達(dá)的樓層號(hào)。用戶按下某個(gè)解鎖的鍵盤(pán)后,按鍵就會(huì)立即被鎖上,等待下一個(gè)用戶刷卡,同時(shí)MCU通過(guò)定時(shí)掃描將用戶最終到達(dá)的樓層號(hào)發(fā)送給主控板,再由主控板傳輸?shù)絇C機(jī),PC 機(jī)將記錄該用戶最終到達(dá)的樓層號(hào)以及日期時(shí)間,以備日后需要時(shí)查詢。
3.2 詳細(xì)軟件設(shè)計(jì)
3.2.1 VIP信息讀取
MCU與射頻卡終端通過(guò)兩線制總線連接,線上采用韋根(Wiegand)協(xié)議。Wiegand(韋根)協(xié)議是由摩托羅拉公司制定的一種通訊協(xié)議,它適用于涉及門(mén)禁控制系統(tǒng)的讀卡器和卡片的許多特性。韋根協(xié)議對(duì)實(shí)時(shí)性要求比較高,如果用查詢的方法接收會(huì)出現(xiàn)丟幀的現(xiàn)象。因此,單片機(jī)在接收數(shù)據(jù)時(shí),采用外部中斷的方式接收每個(gè)字節(jié)。
韋根協(xié)議有多種數(shù)據(jù)格式,本設(shè)計(jì)采用的是26-bit格式。該格式如表1。
表1中第2到第9位為分組碼,分組碼共有8個(gè)二進(jìn)制位,有256個(gè)狀態(tài);第10到第25位為標(biāo)識(shí)碼,標(biāo)識(shí)碼共16個(gè)二進(jìn)制位,有65536個(gè)狀態(tài);第1位是第2到第13位的偶校驗(yàn)位;第26位是第14到第25位的奇校驗(yàn)位。
將讀卡器的DATA0和DATA1線,連到MCU的中斷接口INT2和INT3。刷卡一次,產(chǎn)生26位0或1數(shù)據(jù),由INT2和INT3接口進(jìn)行采集。采集后存在數(shù)組VIPInPut[]中。VIPInPut[1]存儲(chǔ)第一位,第[2]、[3]、[4]字節(jié)分別存儲(chǔ)8位信息,VIPInPut [5]存儲(chǔ)最后一位。
部分程序?qū)崿F(xiàn)如下:
ISR(INT2_vect)//用INT2采集數(shù)據(jù)0
{VIPi++;//變量VIPi用于計(jì)算讀入數(shù)據(jù)的位數(shù)
if(VIPi==1)
{VIPInPut[VIPcount]=0;VIPcount++;} //讀入第一位數(shù)據(jù)
if((VIPi>1)(VIPi<=25))
{ VIPInPut[VIPcount]=VIPInPut[VIPcount]<<1;//將相應(yīng)的數(shù)據(jù)位寫(xiě)零
if((VIPi-1)%8==0) VIPcount++; //讀入數(shù)據(jù)超過(guò)8位,字節(jié)數(shù)加1
}
if(VIPi==26)
……
}
3.2.2 通過(guò)TWI總線寫(xiě)EEPROM
TWI(Two-wire Serial Interface)總線集成于AVR系列的單片機(jī)。該總線具有I2C總線的特點(diǎn),接線簡(jiǎn)單,外部硬件只需兩個(gè)上拉電阻,使用SDA(串行數(shù)據(jù)地址線)和SCL(串行時(shí)鐘線)就可以將128個(gè)不同的設(shè)備互連到一起;支持主機(jī)和從機(jī)操作,器件可以工作于發(fā)送器模式或接收器模式,數(shù)據(jù)傳輸率高達(dá)400 kHz。[4]
MCU往AT24C256寫(xiě)數(shù)據(jù)有字節(jié)寫(xiě)和頁(yè)寫(xiě)兩種方式,兩種方式的實(shí)現(xiàn)過(guò)程相似,頁(yè)寫(xiě)比字節(jié)寫(xiě)更為復(fù)雜,下面對(duì)頁(yè)寫(xiě)進(jìn)行詳細(xì)地介紹。
在頁(yè)寫(xiě)模式下單個(gè)寫(xiě)周期內(nèi)AT24C256最多可以寫(xiě)入64個(gè)字節(jié)數(shù)據(jù)。頁(yè)寫(xiě)操作的啟動(dòng)和字節(jié)寫(xiě)一樣,不同在于傳送了一字節(jié)數(shù)據(jù)后,主器件允許繼續(xù)發(fā)送63個(gè)字節(jié)。每發(fā)送一個(gè)字節(jié)后AT24C256將響應(yīng)一個(gè)應(yīng)答位,且內(nèi)部低6位地址加1,高位地址保持不變。如果主器件在發(fā)送停止信號(hào)之前發(fā)送大于64 個(gè)字節(jié),地址計(jì)數(shù)器將自動(dòng)翻轉(zhuǎn),先前寫(xiě)入的數(shù)據(jù)被覆蓋。
當(dāng)所有64字節(jié)接收完畢,主器件發(fā)送停止信號(hào),內(nèi)部編程周期開(kāi)始。此時(shí)所有接收到的數(shù)據(jù)在單個(gè)寫(xiě)周期內(nèi)寫(xiě)入AT24C256。
部分程序?qū)崿F(xiàn)如下:
int TWIBlockWrite(unsigned char *twidata, unsigned char WordAddH, unsigned char WordAddL, unsigned char DataNum)
{ ……
TWI_Init();//初始化TWI總線
TWIStart();
while(!(TWCR(1< if((TWSRMSK_TWSR_Prescale)==TW_START) { TWDR=AT24C256Write; // 器件地址1010000+write0 TWCR=(1< while(!(TWCR(1< TWDR=WordAddH; // 寫(xiě)第一個(gè)字地址 TWCR=(1< while(!(TWCR(1< TWDR=WordAddL;//寫(xiě)第二個(gè)字地址 TWCR=(1< while(!(TWCR(1< for(twicount=1;twicount<=DataNum;twicount++) //寫(xiě)數(shù)據(jù) { TWDR=twidata[twicount]; TWCR=(1< while(!(TWCR(1< } return(WriteResult);//返回寫(xiě)數(shù)據(jù)狀態(tài) } } 3.2.3 通過(guò)TWI總線讀EEPROM AT24C256 讀操作的初始化方式和寫(xiě)操作時(shí)一樣,僅把R/W 位置為1。有三種不同的讀操作方式:立即/當(dāng)前地址讀,選擇/隨機(jī)讀和連續(xù)讀。考慮到篇幅的要求,本文只介紹連續(xù)讀操作。 連續(xù)讀操作可通過(guò)立即讀或選擇性讀操作啟動(dòng)。在AT24C256發(fā)送完一個(gè)8位字節(jié)數(shù)據(jù)后,主器件產(chǎn)生一個(gè)應(yīng)答信號(hào)來(lái)響應(yīng),告知AT24C256主器件要求更多的數(shù)據(jù),對(duì)應(yīng)每個(gè)主機(jī)產(chǎn)生的應(yīng)答信號(hào)AT24C256將發(fā)送一個(gè)8位數(shù)據(jù)字節(jié)。當(dāng)主器件不發(fā)送應(yīng)答信號(hào)而發(fā)送停止位時(shí)結(jié)束此操作。 從AT24C256輸出的數(shù)據(jù)按順序由N到N+1輸出。讀操作時(shí)地址計(jì)數(shù)器在AT24C256整個(gè)地址內(nèi)增加,這樣整個(gè)寄存器區(qū)域在可在一個(gè)讀操作內(nèi)全部讀出。當(dāng)讀取的字節(jié)超過(guò)E,計(jì)數(shù)器將翻轉(zhuǎn)到零并繼續(xù)輸出數(shù)據(jù)字節(jié)。[5] 部分程序?qū)崿F(xiàn)如下: unsigned char TWIByteRead(unsigned char WordAddH, unsigned char WordAddL) { ……//與TWIBlockWrite()相似 TWIStart(); while(!(TWCR(1< if((twst=TW_STATUS)==TW_REP_START) { TWDR=AT24C256Read; // 器件地址1010000+write0 TWCR=(1< while(!(TWCR(1< if(TW_STATUS==TW_MR_DATA_NACK) { ByteRead=TWDR; TWIStop(); PORTC|=EEPROM_Write_Prohibit; return(ByteRead); } } return(ByteRead); //返回讀數(shù)據(jù)狀態(tài) } 4 軟件測(cè)試 軟件測(cè)試在廈門(mén)漢京電梯控制系統(tǒng)有限公司的電梯模擬控制臺(tái)上進(jìn)行。模擬電梯在正常、檢修、消防等模式下運(yùn)行,不同權(quán)限的用戶進(jìn)入電梯轎廂后刷卡,電梯能夠?qū)崿F(xiàn)解鎖對(duì)應(yīng)權(quán)限的鍵盤(pán);當(dāng)按鍵登記后,鍵盤(pán)能夠重新上鎖,電梯能夠順利將用戶運(yùn)送到目標(biāo)樓層;經(jīng)測(cè)試,在各種模式下VIP功能模塊均能正常使用,滿足軟件測(cè)試的要求。 5 結(jié)論 使用非接觸式卡所設(shè)計(jì)的電梯VIP功能模塊結(jié)構(gòu)簡(jiǎn)單,便于安裝,易于實(shí)現(xiàn),讀卡器控制模塊在整個(gè)框架中起到了一個(gè)很好的橋梁作用和控制作用,整個(gè)系統(tǒng)的設(shè)計(jì)完全可以兼容原有的電梯控制系統(tǒng),并且可以自動(dòng)實(shí)現(xiàn)對(duì)進(jìn)出小區(qū)或辦公寫(xiě)字樓人員的有效管制,從而為住戶提供更加可靠的安全保障。本文所設(shè)計(jì)的電梯智能控制系統(tǒng)已實(shí)際應(yīng)用于辦公寫(xiě)字樓,以后還將繼續(xù)應(yīng)用于居民小區(qū)等相關(guān)領(lǐng)域,該系統(tǒng)必將有著廣闊的應(yīng)用前景。 參考文獻(xiàn): [1] 王剛.基于非接觸IC卡的智能門(mén)禁系統(tǒng)設(shè)計(jì)與研究[D].上海:上海海事大學(xué),2006. [2] Atmel Corporation.AT90CAN128[EB/OL]http://www.atmel.com/dyn/resources/prod_documents/doc7679.pdf. [3] 岳云峰.韋根(Wiegand)協(xié)議及其應(yīng)用[J].齊齊哈爾大學(xué)學(xué)報(bào),2002(2):55. [4] 郭祥軍.AVR單片機(jī)的TWI總線的原理及應(yīng)用[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2006(8):37-39. [5] Atmel Corporation.AT24C256[EB/OL]http://www.atmel.com/dyn/resources/prod_documents/doc0670.pdf.