0 引 言
M CF52233是飛思卡爾公司推出一款主要用于工業控制的32位芯片[ 1] , 具有穩定性好、可靠性高、接口豐富、存儲空間大等優點, 并且集成了網絡模塊, 已經廣泛應用于工業控制領域。射頻識別是一種非接觸式的自動識別技術, 目前已廣泛應用于物流、制造、公共信息服務等行業[ 2]。
本系統通過射頻模塊讀取二代身份證的序列號, 然后對該序列號作如下處理: 第一, 使用快速查詢方法, 查詢MCF52233的Flash中已存儲的序列號。若查詢成功, 電子門自動打開, 授權刷卡人員進入, 具有門禁的功能。第二, 若門禁控制器處于脫機工作狀態, 則ID序列號暫存于Flash 中, 等聯機后再把ID序列號和刷卡時間上傳到服務器; 若門禁控制器處于聯機工作狀態, 則把ID 序列號和刷卡時間直接通過網絡或USB 接口上傳到服務器。
1 系統總體架構
基于二代身份證的RFID門禁考勤系統(以下簡稱門禁考勤系統)由二代身份證ID采集器、門禁控制器、服務器管理軟件和可控電子門組成, 使用二代居民身份證作為電子標簽, 無須購買專門的射頻卡, 為用戶節省成本, 使用方便。
由于門禁控制器脫機工作時, 能夠獨立識別ID 序列號,因此要預先把ID序列號下載到門禁控制器的F lash 中, 此時需要使用ID采集器預先進行ID序列號的采集。門禁控制器具有以太網和USB接口, 同時支持Type A標準(M ifire 1卡)和Type B 標準(二代身份證) 射頻卡, 能根據射頻卡上的信息自動識別持卡人是否被授權進入, 從而控制電子門的開和閉; 另外, 它還能記錄持卡人進出時間, 具備考勤的功能。圖1所示為門禁考勤系統的執行過程。
圖1 門禁考勤系統總體框圖
2 系統硬件組成
本系統選擇80引腳的M CF52233作為主控芯片, 主要是由于該芯片引腳功能比較豐富, 同時包含網絡模塊、IIC 模塊( 用于對時鐘芯片PCF8563進行數據傳輸)和QSPI模塊(用于對液晶進行控制)。該芯片雖不包含USB模塊, 但可使用飛思卡爾生產的M 68HC908JB8的USB 接口。本系統需實現的功能模塊包括: GPIO、UART、QSPI、IIC、PIT、Flash及USB模塊[ 1] 。圖2 為系統硬件組成框圖。
圖2 系統硬件組成框圖
刷卡記錄包括刷卡時間和卡號, 因此使用PCF8563時鐘芯片保存系統時間, 同時使用MCF52233內部的定時器( PIT) 模塊計時, 以延長PCF8563使用的紐扣電池的壽命。
3 系統軟件設計
3. 1 MCU方軟件設計
M CU 方軟件主要分為兩大部分: 身份證信息采集軟件和門禁控制器軟件。
身份證信息采集軟件的主要功能: 對ID序列號進行采集,并上傳到服務器方的數據庫中。
門禁控制器軟件的主要功能: ID 索引表和序列號的寫入功能、配置參數信息的寫入功能、刷卡識別并開門功能和刷卡信息上傳功能。
為了能夠在主控芯片的F lash 中快速查詢到ID序列號, 本系統對Flash區域進行了重新劃分(下文介紹), 其中兩區域分別用于存儲ID索引表和ID序列號。身份證信息的寫入程序主要是將ID索引表和ID 序列號兩部分信息寫入到門禁控制器中。該信息的寫入都要通過握手信號, 以確保正確的信息寫入到MCF52233的Flash中。下面主要介紹ID 序列號寫入F lash的過程。圖3所示為ID序列號寫入F lash的執行過程。
圖3 ID序列號的寫入流程圖
配置參數信息的寫入流程與ID序列號的寫入流程一致, 這里不再描述。
刷卡識別并開門程序主要實現以下功能: 將當前刷卡的ID序列號讀出; 檢查該ID 序列號的有效性; 若ID序列號有效, 則開電子門并將該刷卡記錄存入到Flash中。檢查身份證ID有效性的程序主要包括三部分函數: 總的查詢函數、根據特征值(由ID序列號累加求和取模得到) 到ID 索引表中取得分組首末地址函數和在分組中查詢ID序列號函數。圖4所示為查詢ID 序列號的總流程圖。
圖4 查詢ID 序列號的總流程圖
刷卡信息上傳程序主要是將刷卡的信息上傳到服務器方入庫, 以備查詢使用。上傳的信息主要包含刷卡時間和ID 序列號。如果每刷一條信息就寫入F lash, 則必定對F lash要進行頻繁的擦寫, 這樣會降低系統的效率。為了提高系統效率, 采用臨時緩沖區的方法, 只有當刷卡記錄滿一頁, 才寫入到Flash中。圖5所示為刷卡信息上傳流程圖。
圖5 刷卡信息上傳流程圖
3. 2 服務器方軟件設計
服務器方軟件主要實現以下的功能: ID序列號采集功能,對門禁控制器的操作, 人員信息和刷卡信息的數據庫操作功能。
ID序列號采集功能是采集ID序列號并保存到服務器的數據庫上。
門禁控制器的操作主要有以下幾個方面: 門禁控制器系統時間的設置、人員信息的下載、配置參數的下載和刷卡記錄的上傳等。
人員信息的數據庫操作主要包括: 人員信息的添加、修改、查詢和刪除操作。
刷卡信息的數據庫操作主要包括:刷卡記錄的查詢和刪除操作。
3. 3 服務器方數據庫設計
本系統的服務器方數據庫主要包含以下兩個表: 人員信息表和刷卡信息表。
人員信息表用于保存人員的基本信息, 必需包含字段: 人員編號、姓名、性別、ID序列號, 其中人員編號是主鍵, 用于唯一標識每條記錄。各字段的長度如下: 人員編號10字節, 姓名10 字節, 性別1字節, ID序列號16字節。
刷卡信息表用于保存刷卡信息。刷卡記錄通過以下方式獲得: 服務器讀取門禁控制器中的刷卡信息(僅包含ID序列號和刷卡時間), 根據ID序列號查詢人員信息表, 獲得人員編號和姓名,然后同刷卡時間一并存入到刷卡信息表中。刷卡信息表包含以下字段: 人員編號10字節, 姓名10字節, 刷卡時間(日期型)。
4 設計要點的討論
4. 1 F lash分配設計
M CF52233是Co ldFire 的一款芯片, 其可尋址4GB 的地址空間, 地址范圍為0x00000000 ~ 0xFFFFFFFF。該芯片具有256KB的F lash和32KB的SRAM, 其Flash存儲器的地址范圍是0x00000000~ 0x0003FFFF[3] 。本系統的Flash 存儲器劃分為5大部分: 程序區域、門禁控制器配置區域、ID索引表區域、ID 序列號區域和刷卡記錄信息區域, 具體的劃分如表1所示。
表1 Flash區域劃分
ID 索引表每項為8字節, 分別存放每組的起始地址和結束地址; 每個ID序列號為16個字節, 存放8字節的ID 號和預留8字節; 每條刷卡記錄信息為16個字節, 存放8 字節的刷卡時間和8字節的ID序列號。
4. 2 ID序列號查詢過程
為了能夠在MCF52233的Flash中快速查找到匹配的ID序列號, 作者對幾種常用的查詢方法進行比較, 發現異或和累加和取模的查詢效率比較高。通過高端軟件模擬大量數據, 計算標準差偏移程度, 最終得到累加和取模的效率更高。因此, 本系統采用累加和取模的方法得到該ID序列號的特征值, 在Flash中把ID序列號分為兩部分存儲: ID索引表和ID序列號表。ID索引表中存儲的是模相同的ID 序列號在Flash中的起始地址和結束地址。圖6所示為查詢ID序列號的詳細執行過程。
圖6 ID序列號的查詢流程圖
ID序列號查詢過程調用以下函數:
u int8 SelectID( u int8 personID[ ], u int8 n leng th)
其功能為: 根據給定的ID 序列號, 查詢Flash的ID序列號表中是否存在該ID序列號。參數personID為要查詢的ID序列號數組; n length為ID序列號的字節數。
SelectID內部又調用以下兩個函數:
( 1) u int8 FetchIDGroupAddressFrom IDIndex ( uint8 nIndexVa lue, uint32* pH eadAddr, u int32* pEndAddr)。
其功能為: 根據ID序列號的特征值取得該ID序列號所在分組的首末地址。參數nIndexValue 為ID 序列號的特征值;pH eadAddr為ID 序列號所在分組的首地址; pEndAddr為ID 序列號所在分組的末地址。
( 2) uin t8 Se lec tIDFrom IDGroup( uin t8* pH eadlAddr, u int8* pEndAddr, u int8 pe rsonID[ ], u int8 nLeng th)。
其功能為在ID序列號分組中查詢是否存在指定的ID序列號。參數pH ead lAddr為ID分組的首地址; pEndAddr為ID分組的末地址; personID為要查詢的ID 序列號的數組; leng th 為ID序列號的字節數。
5 結束語
本系統采用全國統一發行的第二代身份證作為RFID識別的電子標簽, 集成了以太網和USB 接口, 具有“脫機”和“聯機”兩種工作狀態, 同時具有門禁和考勤的功能。本系統經半年的實際使用表明能夠在現場高效、穩定地運行。本文對局域網內的嵌入式系統應用、現有只讀卡系統的升級換代以及二代身份證的應用擴展具有參考價值。