智能门禁控制系统是保安监控系统的一个重要组成部分. 在机关单位、工厂、公司等多种场所,为了工作、生活的安全,需要进行封闭式管理. 传统的方法是由警卫人员对进出口进行验证或登记后才放行,这种方法效率低,而且占用人力[1 ] . 本文介绍一种智能门禁控制器的软件设计.
1 系统组成
门禁控制系统是在建筑物内的主要管理区的出入口、电梯厅、主要设备控制中心机房、贵重物品库房等重要部位的通道口安装门磁开门、电控锁、读卡器等控制装置,系统框图如图1 所示. 由中心控制室监控,系统采用计算机多重任务的处理,能够对各通道口的位置、通过对象及通过时间等进行实时控制,以适应小区、办公楼的公共安全管理.
2 控制器软件的设计
门禁系统的主要工作过程是:先从读卡器读取卡号,并获得读卡器号,接着根据卡号和读卡器号到持卡人信息表、读卡器表、群组表里去检索信息,然后根据门屏蔽字查门的时段表,再查门的时段属性,最后根据所得信息发送命令并保存事件信息. 为此,门禁系统可划分为五个表: (以一个能容纳20 000 人,1 000 个组,32 个门,每门64 个时段的控制器来设计) .
(1) 持卡人信息表:
其中,卡号为一个6 位的十进制数,卡类型包括卡片种类和卡片状态[2 ] . 卡片种类(级别) 分为四种:
普通卡———受时限(日期或次数) 、时段限制的卡片;
巡更卡———只记录读卡时间无其它功能的卡片;
超级卡———受时限(日期或次数) 限制,不受时段限制的卡片;
维护卡———除具有普通卡的功能,还能用于解除控制器防拆报警使之恢复正常工作状态的卡片.[nextpage]
卡片状态有5 种:
正常卡片———具有正常功效的卡片; 挂失卡片———声明遗失的卡片;禁用卡片———被停止使用的卡片;失效卡片———超过使用时限的卡片;待用卡片———
未到启用日期的卡片.
群组号表示该持卡人属于哪个群组. 时限有限天、限次和既限天又限次3 种. 其中时限中的限次和持卡人当前位置在程序中动态变化,其它项在程序中固定不变. 以上每个持卡人信息占用16 个字节,按10 000人计算,共占用160 K字节.
(2) 群组表: (平均10 人为1 组,共2 000 组)
群组表主要是用于确定每一个组所能出入的有效门和有效时段. 包括以下几个部分:
门屏蔽字节:每1bit 代表1 个门的屏蔽位,1 代表此门有效,表示本群组能使用此门. 0 表示无效,本群组不能使用此门. 共4 字节. 时段屏蔽字节:同上,每1bit 代表1 个时段有效或无效,每个门最大有64 个时段,占用8 字节. 最多32个门,占用256 字节.
以上每个组占用260 字节,1 000 个组共占用260K字节.
(3) 时段表: (每天8 个时段,8 天(1 周7 天+ 节假日1 天) )
时段表用于记录具体的每一时段的起始时间和终止时间,以及每一时段的属性. 包括以下部分:
以上每个时段占用6 个字节,每天8 个时段,8天,32 个门,共用12 K字节.
(4) 读卡器表: (最大64 个读卡器)
读卡器号用于读卡器地址和门号的对照;物理源地址表示持卡人所在区的区号;目的地址表示持卡人要前往区的区号;逻辑源地址是在要防反传时用的,表示持卡人可直接从这些区到该读卡器读卡. 每1bit 表示一个区,为1 时表示有效,为0 表示无效,最多可表示64 个区.[nextpage]
(5) 事件表:
事件表用于存放每一条事件信息. 包括以下几部分:
卡号(3 个字节) 门地址(1 个字节) 事件种类(1 个字节) 读卡时刻
其中,门地址一个字节可表示250 个门(只用32个门) ;
事件种类可表示32 种事件,现已定义的事件如下:
读卡引发事件:1. 介质出门;2. 介质开门;3. 维护;4. 超时限;5. 巡更;6. 挂失
非读卡引发事件:7. 非法开门;8. 遥控开门;9. 机箱打开;10. 机箱关闭;11. 读卡器防拆; 12. 读卡器恢复;13. 设防;14. 撤防;15. 电池失效;16. 电池投入;17.市电掉电;18. 进入常开;19. 退出常开;20. 超时未关;21. 关门.
每条事件消息将占用6 个字节(不超过4 min) ,或12 个字节(超过4 min) ;
读卡时刻的表示方法如下:
读卡时刻字节存储的是本次读卡时刻和上一次读卡时刻的差值,若差值大于254 (4. 2 min) ,则将此字节置为255 (FF) ,同时在下一个连续的6 个字节存放本次读卡的绝对时刻(年月日时分秒) .
3 软件的实现
门禁系统的软件主要由管理中心计算机上的软件和门禁控制器上的软件组成. 为叙述方便,以下门禁控制器简称为门控器.
在门禁系统中,门控器上的软件所执行的主要功能有建表,添加、更改和删除表内容,对读卡事件做判断处理和存储各种事件. 与门禁系统有关的任务有门禁系统任务(也就是读卡事件处理任务) 、网络数据接收任务、数据存储任务、系统间联动任务,还有数据采集的中断服务程序. 另外,还有个根任务,它执行硬件设备的初始化,定义几个表的结构数组,创建各任务、信号量、消息队列、实时数据缓冲池. 根任务完成这些事情后把自己删除掉,使当前优先级最高的就绪任务进入运行态[3 ] .
3. 1 读卡事件处理任务
读卡事件处理任务的过程:首先,采集数据的中断服务程序发来的事件标志激活该任务,从缓冲池中读取卡号和读卡器号,或者还有密码;其次,根据卡号、读卡器号和当前的读卡时间,到持卡人信息表、读卡器表、群组表里去检索信息;然后,根据群组表里的门屏蔽字去查门的时段表、门的时段属性;最后,根据所得信息执行命令并保存事件内容、修改使用次数和人员位置数据等. 该任务的优先级为200 ,用获取信号量的办法与网络接收数据任务互斥开. 因为该任务涉及到几个表,数据量比较大,所以堆栈空间较大,为500 K.通过发巡更事件与巡更任务通信[3 ] . 超级卡程序比普通卡的程序少一项时段判断的过程,其它的与普通卡程序一样;维护卡程序实现解除门控器防拆报警使之恢复正常工作状态;巡更卡程序发送巡更标志给巡更任务. 关于是否违反防反传规定,要视具体工程和客户的要求而定.
3. 2 巡更任务
操作员在监控管理中心设置巡更路线和巡更时间表,而后下传到门控器上. 巡更任务通过接收读卡事件处理任务发来的巡更事件标志,根据当前时间和巡更时间表,判断巡更是否到位,并向监控管理中心计算机发送信息,决定是否报警. 巡更站就是读卡机,在规定的时刻和误差范围内读卡,表示巡更到位,否则表示巡更不到位. 巡更任务的优先级较低, 取100 , 堆栈取6 000 ,该任务可抢占,时间片为50 ns.[nextpage]
3. 3 网络数据接收任务
网络数据接收任务的功能为接收管理中心计算机或其它门控器发来的数据和命令,根据这些命令和数据,执行相应的建表、添加、更改、删除、维护和读事件等操作. 该任务的优先级取190 ,堆栈设为600 K,可抢占. 采用客户/ 服务器的通信模式,接受数据的门控器为服务器,发送数据的管理中心计算机为客户.为了通信方便,我们自己定义了一套数据传输的格式,具体格式如下:
因为不能对flash 存储器进行单个字节的擦除和改写,只能一个一个模块整块擦除,再重新写,所以门禁控制器上的数据表只采用新建和重建两个命令(flash 的擦除次数可达100 万次) .
3. 4 数据存储任务和系统间联动任务
数据存储任务的主要功能是定期把SDRAM 里的事件数据保存到flash 存储器和管理计算机上. 系统间联动任务主要是响应其它系统的要求,比如火灾报警系统报警时要求把有关的门打开,而安全防范系统在遇盗时,需把有关的门关闭. 该任务的优先级要求比较高,取230.
持卡人信息表、群组表、时段属性表和读卡器表的数据结构定义的程序清单如下
4 结语
本文主要阐述了门禁控制器软件的设计及实现.详细说明了门禁控制系统的组成、基本结构、工作方式及功能功述;系统分析了门禁控制系统的工作原理. 门禁控制器系统应用于出入口管理系统,提供了较高的安防保障,并日益被推广.