刘红日 王敏 卢成亚 孙公亮 赵兴壮
【摘要】 考勤系统的设计开发从考勤终端以及服务器应用程序两个方面进行开发。考勤终端以STC90C58AD单片机为控制核心,利用DRF1605H无线收发模块以及MFRC522读卡模块,实现了考勤信息的采集收发等功能;服务器程序使用QT应用程序开发框架以及在ThinkPHP框架编程实现了数据的接收以及分类处理功能。实现了校园分布式环境下的考勤系统的设计与实现。也可以将本系统进行定制安装,运用在企业的考勤系统中。
【关键词】 考勤系统 考勤终端 服务器
一、引言
在高校普遍推行学分制的条件下,学生上课较分散,班主任、辅导员对学生的上课情况的了解与非学分制条件下相比有所削弱,同时部分教师淡化课堂考勤,导致一些学生因学分制课堂考勤监控不严而长期旷课[1]。目前在高校里,上课地点分散,主要的考勤方式还是教师人工点名的方式,或者是用RFID,在各个教室单独考勤,考完以后不能够及时处理考勤信息。[2],[3]等的设计也没有考虑到系统的时间同步问题。本系统将Zigbee和RFID技术相结合,将考勤信息通过Zigbee网络经过网关收集,发送到服务器。
二、总体设计方案
本系统从功能上可以分成两部分。一部分是考勤终端,负责考勤信息的采集处理、发送等过程以及负责接收服务器发来的指令,对终端考勤机进行相关的设定。另一部分是服务器,服务器上的功能由两部分组成,一部分通过Zigbee网关来接受相关的考勤信息,并处理后插入到MySQL数据库,这部分功能软件是随着服务器启动而自启动的,并且常驻内存的,提供了对考勤终端的数据进行处理、通讯设置、终端机的设置等;另一部分是基于B/S模式的WEB应用服务程序,用户可以通过浏览器登陆,根据授权查看考勤信息、修改考勤信息以及导出考勤信息等功能,如图1所示。
三、考勤终端设计方案
考勤终端硬件是以STC90C58AD为核心,包括时钟,SD卡,RFID读卡器和Zigbee等模块构成的硬件系统。RFID读卡器使用的MFRC522读卡模块;Zigbee模块采用的是使用CC2530为核心的DRF1605H无线收发模块。其中时钟系统是本系统的重要部分,关系到学生考勤时间的准确性。考勤终端的时间可以和服务器时间比较,进行修正,作为学生考勤发生的真正时间。SD卡用来保存学生的考勤信息,考虑到数据安全的因素,采取将一次课的考勤信息保存在SD卡中,在单片机内实现了FAT16文件系统。即使无线网络失败,考勤数据还可以通过PC机来读取考勤终端的SD卡里的考勤信息。同时SD卡内存储了本机的一些基本信息,例如考勤发生的地点,以方便维护。RFID读卡器读取考勤学生的学号,结合当前的时钟,作为一条信息记录在SD卡中。考勤信息通过Zigbee模块传输到网关。根据Zigbee节点的性质,本系统的网关使用的是Zigbee协调器,考勤终端使用的是Zigbee路由器,通过串口与终端连接,进行数据的收发。这样的Zigbee网络构成了一个mesh网络,增强了网络的稳定性。系统采用C语言编程实现。硬件平台设计如图2所示:
程序设计流程图如图3所示:
四、服务器端设计方案
4.1 服务器端软件的设计与实现
服务器软件主要有独立的两个软件组成,第一个软件是通过串口接收来自Zigbee网关的数据,并对其进行简单处理以后插入到数据库以及通过串口向Zigbee 协调器节点发出用于控制终端节点,此软件自启动且常驻系统内存。实现的功能有:
(1)与Zigbee网关进行通讯的相关设置,网关采用串口与服务器进行连接,所以串口通讯的常用设置,例如波特率,数据位、校验位、停止位等。(2)系统设置。例如对整个无线网络的时间的统一,当前节点的状态报告、考勤终端的SD卡数据的处理等等。(3)对某一个考勤终端的管理功能。实现的主要功包括课程管理、考勤记录管理、学期管理以及导出考勤结果等功能。考虑到有请病假的情况出现,允许任课教师对学生的某一时段的考勤记录进行修改。考勤终端节点与服务器传输考勤信息过程流图如图4所示:
本系统主要针对规模比较大的考勤场景下开发设计的系统,考勤信息的传输方式采用的分时轮询的方式。各个终端的考勤信息使用FAT16文件系统存放在SD卡中,在设定的时间里,服务器在不同的时间点向考勤终端节点发送命令,要求发送考勤信息。当数据传输完成后,将SD卡中的数据删除。同时通过后台数据处理,生成学生的考勤信息。
4.2 时间同步
因为考勤信息对时间比较敏感,所以时间同步是本系统的关键。由于本系统对时间的要求不是很高(小于1s),并且整个无线网络的数据传输是分时的,采用了DMTS(Delay Measurement Time Synchronization) 算法[4]。在终端节点接收到发送考勤信息的命令后,向服务器发送一条带有考勤终端的时间戳的数据,服务器接收到此数据后与服务器时间进行比较,对差值超过阈值的终端节点,要对考勤信息中的考勤发生时间进行处理,还要进行时间同步。在真实的环境中测试,误差不超过50μs。
4.3 通信协议的设计
考虑到本系统传输的数据及命令,所设计的协议如下所示:
(1)发送考勤信息命令
由于本系统的数据传输采用分时的方法实现,所以对对各个考勤终端的考勤内容的发送以轮询的方式进行。即服务器通过网关向各个考勤终端发送命令,各个考勤终端来根据命令来做相应的处理。
(2)考勤数据传输协议:
该协议是终端节点向服务器传输学生考勤信息的内容。设备号用来表示当前考勤发生的地点,当一个新的终端节点投入使用之前,将设备号写在SD卡中。卡号是RFID的卡号,卡号与学生姓名的对应关系存放在服务器的数据库中。考勤时间记录学生刷卡的时间,精确到秒。为了减轻微处理器的负担,采用简单的奇偶校验算法。
(3)考勤数据传输结束协议:
发送完最后一条考勤记录以后,考勤终端向服务器报告所有的考勤数据已经发送完。服务器解析完这条信息以后,转入对下一个考勤终端的考勤信息的轮询。
(4)时间同步协议:
当服务器与考勤终端的时间差超过一个设定的阈值时,服务器向该考勤终端发送一条时间同步要求,考勤终端的时间将在下一次考勤之前被修改。其他的传输协议由于篇幅关系,不再一一列举说明。
五、实现与测试
在三台考勤终端情况下的测试,测试效果如图5,图6所示。
六、结语
本考勤系统利用无线数据传输网络可以省去目前考勤系统中布线的烦琐,并支持数量庞大的读卡设备。通过设置考勤终端的SD卡内容,可以根据实际情况临时设置考勤地点。在读卡设备加入网络和离开网络时,不需要人工操作,均由Zigbee网络自动实现,部分实现了错误故障的自我诊断,易于维护,降低了维护成本。