来源:中国一卡通网 作者:陈钰龙 发布时间:2010-12-01 11:30:06 字体:[大 中 小]
摘 要:传统门禁控制系统并不支持出入口控制器系统的网络化,本文通过引入通信平台,给出了一种实现TCP/IP的新方法,通信平台在操作软件客户端和控制器之间架起了TCP通道,通过对串口数据和客户端TCP/IP数据包进行转换可以任意客户端访问网络节点上的硬件服务器,实现TCP/IP通信,减少系统施工布线.
门禁系统,主要应用于出入口通道的控制和管理。门禁系统常规的通信结构都是通过RS422/485与计算机通信。但随着网络的发展,综合布线早已被广泛应用,采用TCP/IP通信协议,通过构建综合布线网络,实现跨楼层、跨建筑、跨城市的远程联网及数据传输,免去了在同一建筑内楼层间,或建筑群之间的总线敷线施工,现在这已成为大家追求的目标。
门禁控制器实现网络控制的方式大约有以下几种:
•控制器直接支持TCP/IP功能,这种门禁控制器目前较少。
•通过固件完成TCP/IP功能:目前已经出现了32位CPU,以及一些通信转换模块,通过此模块可以将RS232数据转换为TCP/IP功能的通信平台。
•通过软件实现TCP/IP功能:大部分的门禁控制器都是采用8位的单片机进行控制,所以无法直接进行TCP/IP通信。本文提出的即是一种可以通过软件技术使控制器实现TCP/IP功能的通信平台。
通信平台的设计与实现
通过软件技术实现TCP/IP功能,可以在硬件控制器以及控制器端的接线不做任何改变的基础上完成。所以对兼容早期门禁控制器产品具有很大的实际意义,其具体的设计细节如下所述。
通信平台功能
•支持多用户多客户端通信模式;
•接受客户端通信数据并通过RS422/485发送到门禁控制器;
•接受从RS422/485发送上来的门禁控制器数据,打包成TCP/IP包后发送给远程客户端;
•数据主动回收。
通信平台的系统结构
通信平台作为业务层与主控制器之间的通信纽带,在用户局域网里,多个工作站上运行业务层的应用程序,通过TCP/IP与通信平台通信,可同时访问Intranet网络内的多个主控制器。这样既可以高效稳定地完成多用户的请求需要,又可做到快速地与主控制器通信。
通信平台同时担当起串口通信与TCP/IP通信的角色,以异步通信方式,多线程处理TCP/IP通信与串口通信接发包。可以做到多监控系统同平台同时运行,实时接发数据。因此在这平台上,只要串口数目允许的情况下,业务可以自由扩展。目前,通信平台只支持串口通信,USB口以及并口以后再予完善。
除了自动回收记录数据外,对于其它的通信数据包,通信平台不起解释协议的作用,只是负责套接字与串口之间的转发包。所以在套接字之间需一套协议,串口之间需一套底层硬件通信协议,与串口的底层主控制器的通信协议一成没变的采用原来的旧协议。
自动回收记录数据功能,因为监控系统里,出入记录、事件、告警记录是最重要的通信数据,所以为了安全快捷,通信平台增加自动定时回收数据的功能。回收数据的间隔时长由用户自行设定,例如每1秒、2秒等回收一次数据。回收到的记录数据通过解释协议,解析包以后把有效数据存入到数据库里,如果写数据库失败,则把数据写入到文本文件里。
因为本平台用在通信主控机上,所以作为通信轴钮,安全与稳定性特别重要。所以为了及时监测到本平台的异常情况,需要另外一个辅助模块来实时监测通信平台及主控机的运行情况,如果发现平台出现意外情况,告警模块需要及时发出告警信号,电话通知相关的网络管理员。所以本平台需要与告警模块实时通信,实时处理告警模块的通信数据包。
程序基本流程思路
1.通信平台采用多线程异步通信转发包,TCP/IP端口监视线程,监听到一个用户连上来,就为该连接创建一个接收TCP/IP数据的线程,接收TCP/IP数据的线程接收到有效数据,就通过消息发送方式,把数据包发送给要访问的串口类对象的TCP/IP数据处理线程的消息队列,等待该线程处理。该TCP/IP数据处理线程获取消息,再检查是否可以发送,如果可以,则把该数据请求包通过串口发送给主控制器。
2.串口类对象的接收数据的线程,利用WINDOWS消息触发机制,串口数据一来到就产生一个接收数据的消息,立即从该串口接收数据,然后处理一下,通过消息发送方式,把数据包发送给该串口类对象的串口数据处理线程进行数据处理。
3.串口数据处理线程进行数据处理完毕后,就发消息通知TCP/IP数据处理线程把该TCP/IP数据包从数据缓冲区里清除掉。
多线程异步机制
•TCP/IP通信方面,一个监视SOCKET连接的线程,每个SOCKET连接都有一个接收数据TCP/IP数据的线程;
•串口通信方面,每个串口有一个TCP/IP数据处理线程、串口数据接收线程、串口数据处理线程、回收记录数据入库线程。
套接字与串口通信原理
1.TCP/IP通信:与业务端的通信采用WinSock API进行TCP/IP通信,通信平台作为Socket的Server端,操作步骤如下:
①ocket初始化成功,就建立起一个监听线程,在不断的监测是否有Client端的Socket连接上来。同时建立起一个写线程,供所有套接字发送数据用。
②如果监测到有Client连接上来,创建该连接的一个读Socket线程,Socket描述字通过读取公用变量来传给读线程的局部变量。
③不断地监测该Socket端口是否有数据,一旦接收到数据,根据协议的格式,取确定长度的数据。然后根据数据包检查客户请求模式。
④如果是打开串口,则打开串口,发回执行结果,返回第③步。
⑤如果是关闭串口,因为多用户的模式,不予处理,返回第③步。
⑥如果是请求串口处理,把数据包发送给属于要访问的该串口对象的TCPIP数据处理线程的TCPIP数据包缓冲区,返回第③步。
2.串口通信:串口通信采用主从应答式与主控制器一对一的通信,PC机为主,主控制器为从。运行步骤如下:
①接收串口数据的线程在事件检测方式检测串口缓冲区是否有数据到来。
②有数据到来,一次性接收完缓冲区里的全部数据,判断数据类型。
③ 如果是“S”信号,就由互斥保护的结构体标志量的字段的值为最新的值。标志量是结构体类型的公用变量,结构体内容为:typedef struct FLAG_SERIAL_STRUCTURE(BOOL bCanSend;//是否接收到了主控器发来的0x53信号DWORD dwReceiveTime;//接到0x53信号的时间)StrucFlagSerial;返回第①步。
④如果是有效数据,则发送数据包给该串口类对象的串口数据处理线程进行相应的处理。返回第①步。
串口数据的处理
1.在串口数据处理线程里处理,接收到数据包后,因为接收数据比较长时,不能以一个完整的数据帧来接收。超时等待重组后来接收到的数据包。检查接收到的数据是否有效与校验和是否正确。
2.是否如果是回收记录的数据,则解析数据格式,得到有效的记录数据,以消息包的形式发送给写数据库的线程,把有效数据以调用存储过程的方式写入到数据库里。返回1。
3.如果是业务端发来的请求,则封装打包通过SOCKET连接发给业务。返回1。
串口通信流程还是走以前的PC机与单片机为主从式的通信方式,也是目前平台实现了的功能,PC机发请求,单片机回数据包。这个同主控制器通信的功能正在等待完善。
每个串口的TCP/IP数据处理线程中需要维护一个数据缓冲区,即TCP/IP数据链表。每次从SOCKET得到数据,加入到该数据包请求的串口实例对象所属的数据缓冲链表的表尾。再以该实例对象所创建的数据处理线程来从表头一个一个的处理。另外一个需要维护的就是写串口时主控制器发来的标志量结构体数据,以标识主控器是否处于PC有效时期。
结论
本文提出的通信平台解决了门禁控制器不能进行网络通信的问题,它支持局域网、INTERNET等网络结构,所以可以跨单体楼、跨城市,只要有网络的地方都可以远程控制门禁系统,实现了基于TCP/IP的网络门禁控制系统。使得门禁系统可以实现集中控制,满足了目前很多大公司全国分公司集中控制门禁授权的要求,减少了人力资源和系统实施的费用与成本。对当前基于WEB的门禁系统的设计有很大意义。
推荐文章
论坛热帖