门禁,又称出入管理控制系统,是一种管理人员进出的数字化管理系统。目前,随着工业自动化的发展和人们对应用需求的不断提高,门禁监控系统得到了越来越多的应用,但传统的门禁监控系统一般采用门禁控制和视频图片摄录相分离的实现办法,这给现场布线带来了很多的不便,同时其成本也会大大提高。
在该方案中提到的基于ARM9与Linux的嵌入式门禁监控系统集门禁控制和图片摄录功能于一体,并详细描述了其系统的软件设计。
本门禁系统使用B/S软件架构,采用嵌入式服务器boaserver,结合CGI技术,嵌入式数据库以及嵌入式图形库来实现门禁系统的需求。
1 系统工作原理及组成
1.1 系统工作原理
本门禁监控系统采用B/S架构(Browser/Server,浏览器/服务器模式),基于B/S架构工作的门禁监控系统首先是一个具有以太网接口的门禁控制器;其次,这个门禁控制器内置了以太网TCP/IP协议和WEB服务程序;用户在系统连接时可以把门禁控制器看作是一台带有宽带网络接口的计算机,将其直接接入到网络交换机上。用户进行门禁管理时不需要安装任何附加的软件,直接通过浏览器就可以实现对门禁系统的管理,操作方便简洁。
1.2 系统组成
如图1所示,系统服务器端由基于ARM9的门禁控制器、读卡器、电锁、前端摄像头等组成,当有人员进出大门刷卡时,读卡器就能感应到有卡并将卡中的信息发送到门禁控制器,门禁控制器进行卡合法性检查,通过读取用户数据库,查看此卡号是否有对应的持卡人信息,如果存在的话,则检查此卡对应的权限信息,一切匹配成功后,决定是否进行开门动作。从而保证了系统的安全性。此时门禁控制器进行的操作还有图像摄录操作,即在开门动作的同时通过前端的摄像头摄录图片,传送到相应的存储设备,供用户访问。
图1 系统结构模型
客户端可以通过浏览器远程对门禁控制器即服务器端进行访问及相应的权限操作,可实现用户信息录入及授权管理,硬件设置,出入图像监控,房门开启,数据浏览等功能。图1为系统结构模型。
2 门禁控制器硬件设计
本系统采用ATMEL公司的AT91RM9200(以下简称9200)作为MCU,该处理器基于ARM920T内核,工作主频为180MHz,性能可达到200 MI/S,系统采用开源的LINUX OS。内核版本为2.6.25,系统采用1片Nor-Flash,容量为64 MB,2片SDRAM,容量分别为32 MB。如图2所示,本门禁控制器以ARM9200为核心,同时连接的还有LCD控制器,可连接显示屏,方便用户调试。另外,本门禁系统最多可连接256台读卡器及对应摄像头。系统硬件组成示意图如图2所示。
图2 系统硬件组成示意图
3 系统软件架构设计
整个系统分为前后台两部分,后台监控程序会时刻监控读卡器是否有刷卡信息,并对刷卡信息作出响应,前台则通过boa服务器调用CGI服务程序响应客户端访问请求。系统功能模型如图3所示。
图3 系统功能模型
3.1 前台设计
系统前台主要由运行在门禁控制器上的boa Server服务器和CGI服务程序构成,boa server会时刻监视是否有远程用户的访问,当有客户端访问请求到达后,会通过boa server配置文件到相应目录下去调用对应的CGI服务程序,在处理完成后,boa server将处理结果返回给客户端。
3.1.1 CGI简介及工作原理
CGI全称是“通用网关接口”(Colnnlon GatewayInterface),是一种基于浏览器的输入并在Web服务器上运行的程序方法。
CGI的工作原理,首先浏览器通过HTML表单或超链接请求指上一个CGI应用程序的URL。服务器接收收到请求后,执行所指定的CGI应用程序。CGI应用程序执行所需要的操作(通常是基于浏览者输入的内容),并把结果格式化为网络服务器和浏览器能够理解的文档(通常是HTML网页)。最后,网络服务器把结果返回到浏览器中。
3.1.2 嵌入式服务器boa server
boa Server是一种小型单任务嵌入式服务器,支持CGI,可执行代码只有60 kB左右,体积小,速度快,安全性好,能够满足本项目的开发。boa服务器需要交叉编译为可在ARM平台下运行的程序。在pc环境下,运用交叉编译器arm-linux-gcc对boa server进行交叉编译后,需要修改其配置文件boa.conf,关键配置有创建日志文件所在目录,创建HTML文档的主目录,将静态网页存入该目录下,创建CGI脚本所在目录,将cgi的脚本存放在该目录下。
3.2 后台设计
当系统运行后,门禁控制器会一直运行主监控程序,主监控程序存在两种工作方式,分别为调试模式和监控模式。
3.2.1 调试模式
在调试模式下,可以对门禁控制器进行一些基本的设置:包括有门禁控制器的IP设置,系统管理员用户名及密码设置,卡权限设置等操作,在此部分,需要配合图形环境方便调试,本系统采用minigui嵌入式图形库。
MiniGUI下的通讯是一种类似于Win32的消息机制,是由某公司开发的自由软件,遵循LGPL协议,可以为嵌入式linux系统建立的一个快速,稳定和轻量级的图形用户界面支持系统。
3.2.2 监控模式
在工作模式下,后台驻留程序会时刻监视是否有刷卡信息,在检测到刷卡信息后,后台驻留程序通过访问数据库进行卡信息的比对,只有当比对通过后,方可进行门打开动作。
由于在开门的同时,需要保存图片至数据库,而此时,可能会存在客户端对系统存储图片的访问,这会造成对相同数据库的访问冲突,所以系统在接收到客户端访问系统存储图片请求的时候,前端CGI服务程序通过命名管道的进程间通信方式和后台监控程序通信,以获得数据库访问句柄,在客户端访问结束后,前端CGI服务程序会释放数据库句柄。
本系统中由于涉及到频繁的数据库存取操作,基于ARM9的硬件平台,选用数据库为Berkeley DB数据库,Berkeley DB是历史悠久的嵌入式数据库系统,主要应用在UNIX/LINUX操作系统上,其设计思想是简单、小巧、可靠、高性能,满足本系统的需求。
4 系统软件功能模块设计
4.1 用户信息录入及授权管理
用户信息录入及授权管理由具有管理员权限的用户设置,在客户端,具有管理员权限的用户通过浏览器输入管理员用户名及密码,发送至门禁控制器,门禁控制器在接受到请求后,通过调用相应的CGI服务程序,检验权限是否合法,确定合法后,进入下一级页面,在此页面可以完成用户信息录入及授权管理。
主要完成的功能有录入用户个人信息,及与特定卡绑定,同时授予其卡的权限,在用户刷卡开门的时候,首先检查卡是否有对应的持卡人信息以及持卡人信息是否与系统定义的格式吻合,这样可以防止非法卡的使用。如果这一步匹配成功的话,接下来检查的是卡所对应的权限信息,包括有此卡可以控制哪些大门的开启及在哪些时间段可以控制。
4.2 数据浏览
系统注册用户可以在客户端浏览系统授权信息,同时只有管理员权限的用户才可以对系统注册用户进行删除。
4.3 硬件设置
管理员用户可以在客户端对门禁控制器系统进行远程测试和设置。分别为根据门禁控制器地址检测控制器状态,对门禁控制器设置当前时间和星期,读取当前控制器时间,开门延时,手动开门,编辑和读取设备名称,清空授权文件,清空刷卡记录等功能。
4.4 圈像监控
当持卡人在进行大门开启的时候,门禁控制器会将合法的刷卡信息记录如数据库,并将刷卡瞬间的图像保存为jpg图片存入门禁控制器的存储设备中,系统注册用户可以在客户端通过浏览器,对门禁控制器所保存的图片进行浏览。系统日志界面如图4所示。
图4 系统日志界面
4.5 后台服务
门禁控制器启动后,通过持续检测读卡器是否有信号以验证是否需要进行大门的开启,当检测到读卡器有刷卡消息时,通过读取卡内信息,调用相应数据库进行匹配,若匹配成功,则一方面摄录此刻图像,保存到数据库相应目录,房门打开;若不成功,则发出报警信号,操作者无法打开房门。
5 结束语
门禁监控系统有效保障了企事业单位的安全。基于ARM9与linux的嵌入式门禁监控系统具有稳定、可配置的特性,支持基于Internet的数据传输,系统采用B/S架构体系,用户通过浏览器访问系统的工作方式。该方案详细叙述了实现此门禁监控系统的软件思想,并对实现过程进行了详细的描述。目前,该方案在生产和科研中已经投入使用。随着嵌入式技术的发展,门禁监控系统的性能会得到更进一步地提高。