地铁闸机控制系统的设计

曹新莉 徐杨喆 熊俊俏 邹连英

地铁闸机控制系统的设计

摘要:该文提出了一套地铁闸机控制系统的设计方案。下位机以单片机为主控元件,辅以非接触式读写卡芯片、液晶屏、灯箱等模块,能够实现读卡,写卡,以及与上位机的通信等功能,上位机信息管理系統提供能够在显示界面内读取、修改卡内相关信息等功能。

关键词:非接触式IC卡;射频识别;串口通信;图形用户界面;数据库

中图分类号:TP311.1 文献标识码:A 文章编号:1009-3044(2018)21-0259-04

Abstract:This design proposes a design scheme for a subway gate control system. The lower computer adopts single-chip microcomputer as the main control element, and is supplemented by non-contact reading and writing card chip, LCD screen, light box and other modules, which can realize the functions of reading card, writing card, and communication with upper computer.The upper computer information management system provides the functions of reading and modifying the card’s related information inside the display interface.

Key words:contactless IC card;radio frequency identification; serial communication; graphical user interface; database

随着全球城市的迅速发展以及人口的大量涌入,交通状况愈加紧张。地下铁道作为一种能够缓解地面交通压力的公共交通方式,近年来被广泛运用到城市建设中。地铁闸机控制系统规范行人正确、有序地进出,是地铁系统稳定运行的重要一环。

1 闸机控制系统硬件总体结构

1.1 IC卡结构及协议——Mifare 1 S50

Mifare 1 S50是一种非接触式IC卡,工作频率为13.56MHZ,符合ISO14443A标准。其内部拥有天线模块,接口模块,控制模块和存储模块,均被封装在一张PVC卡片内。存储模块内部拥有16个扇区,每个扇区分为4个块。每张卡片的序列号以及制造商信息等,存放于扇区0的块0中,该块信息已固化,不能被更改,其余各个扇区的块0、块1、块2皆可用于存放数据。每个扇区的块3为控制块,共有16个,每一个块3包含了该扇区的密码字节(密钥A、密钥B)以及对该扇区中其余块0,1,2进行数据处理的存取控制权限字节。

1.2 读卡器硬件组成

本文所设计的非接触式IC卡读写系统主要包括单片机,非接触式读写卡芯片,高频接口,液晶屏等;辅以蜂鸣器和红绿LED灯实时反馈系统状态;拥有独立的复位按键。单片机通过控制驱动器ST7920驱动液晶屏,该系统配置有USB接口以及DC接口,支持USB供电。整个系统通过DB9接口实现与计算机间的串口通信。其中非接触式读写卡芯片是整个系统的核心。本设计选用MF RC522作为非接触式读写卡芯片,其内部主要包括模拟信号处理模块,接口模块,寄存器模块,协议处理模块,mifare密钥模块。

2 闸机控制系统软件总体结构

包括IC卡读写程序(入站读卡,出站读写卡),闸机终端控制程序,通信程序,后台公交计费信息管理程序。总体框架如图3所示。

2.1 程序综述

本设计所含程序大致组成有:

(1)读写卡系列芯片驱动程序,包含对射频卡进行操作的所有函数,例如寻卡、防碰撞、读写卡等函数。

(2)液晶屏程序,将存储在卡内的某些信息处理后使其显示于液晶屏上,可显示出当前站台、卡号、消费金额、余额等相关信息。

(3)串口通信程序,用于提供信息在下位机和上位机之间的发送和接收。

(4)图形用户界面程序,选择使用Python内置的Tkinter搭建上位机管理界面的窗口框架和内部组建组件。

(5)数据库程序,存储卡号、余额等信息。选择使用python内置的Pymysql库,连接Mysql数据库。

3 出入站闸机公交卡识读系统程序设计

与乘坐普通公交汽车只需单次刷卡不同的是,乘客乘坐地铁时需要经过出、入两道闸机,这两道闸机所具有的功能并不相同,因而需要对进、出站闸机的设计不同的程序。进、出站闸机控制系统流程图如图4所示。

3.1初始化程序

系统初始化:设置特殊功能寄存器;设置定时器/计数器模式控制寄存器;设置定时器的初始值;设置允许接收位;启动定时器;允许定时器中断;设置发送标志位;开启总中断开关;开启串口中断;设置接收标志位。

3.2读写卡芯片控制程序

3.2.1寻卡

当卡片进入到读卡器的工作范围内时,读卡器通过使用MF522命令字来发送和接收数据。读卡器向卡片发送REQALL命令以寻找天线区域内全部卡,将接收到的卡片返回的类型码存放在TagType中。

3.2.2防碰撞

当有一张及一张以上的IC卡进入读卡器工作范围内时,读卡器发送ANTICOLL1命令,执行防碰撞算法,依据命令的匹配条件确认卡片,将接收到的卡片返回的序列号存放在Snr中。

3.2.3选定卡片

读卡器执行SELECT命令,选择卡片的序列号。卡片被选中后,将块0中的容量信息返回给读卡器。

3.2.4三轮相互认证

(1) 上述步骤成功后,读卡器指定要访问塊地址所属的扇区位置,向卡片发送一个包含密码相关信息的命令。

(2) 卡片接收到信息后,使用所要求的加密方式,加密一组随机数B,发送给读卡器。

(3) 读卡器接收信息后,对其进行处理,连同附加上的随机数A,发送给卡片。

(4) 卡片接收信息后,验证随机数B,若验证结果为正确,将随机数A加密后发送给读卡器,若验证结果为错误,则停止认证过程。

(5) 读卡器接收信息,验证随机数A,若验证结果为正确,则认证成功,若验证结果为错误,则终止认证过程。

3.2.5读余额,写进站站台代号/读进站站台代号

本设计默认余额存放在块1的第四个字节处。读卡器利用Pcdread命令将块1信息读取并存放在数组中,再读取第四个元素,得到余额数据。与此方式类似,对于进站闸机,读卡器利用Pcdwrite命令将进站站台代码写入卡片块2的第一个字节处,用于出站时的扣费计算。对于出站闸机,读卡器使用Pcdread命令将进站站台代码读出,存放在数组中。

3.2.6扣费

读卡器将进站代码信息读出,用出站闸机所存储的代表当前站台的代码与之比较并处理,得到乘客的乘坐站台数D,将D代入到计算扣费金额的函数中,得到相应的消费金额,将金额存放在数组中,使用PcdValue命令对钱包地址所在块进行扣款。计算扣费金额流程图如图5所示。

3.2.7串口通信

建立一个数组,用于存放卡片序列号以及余额等需要发送的信息,关闭串口中断ES,发送标志位TI清零,将数组内的元素逐字节发送给SBUF寄存器,每发送一个字节后,发送标志TI位自动置1,需要继续清零,待所有信息发送完成,开启串口中断ES。

3.3 液晶屏程序

3.3.1液晶屏初始化

设置通信方式;功能设置;显示状态设置;液晶屏清屏;

3.3.2设置待机界面

设置显示位置为1、2、4行,待机状态下显示简要的说明文字,界面如图6所示。

3.3.3设置进站闸机显示界面

设置显示位置为1、2、4行,在进行进站刷卡操作后,显示当前站台名称、卡号和余额,余额要进行十六进制转十进制显示,界面如图7所示。

3.3.4设置出站闸机显示界面

设置显示位置为1、2、3、4行,在进行出站刷卡操作后,显示当前站台名称、卡号、消费金额、余额,余额要进行十六进制转十进制显示,,界面如图8所示。

4 灯箱

灯箱电路的发光二极管部分由159个红色高亮度LED和101个绿色高亮度LED组成。LED灯珠驱动电路主要由六反相器和四个MOS管组成。电源电路主要由隔离电源模块和三端稳压集成电路组成。通信电路主要由低功耗RS-485收发器和两个光耦组成。电路板上具有拨码开关,能够切换自动与手动模式。两种LED点亮后如图9、图10所示。

5 进出站信息管理系统

该系统主要包括图形用户界面的设计以及数据库的连接

5.1 Tkinter

Tkinter模块是内置在python中的Tk图形用户界面的标准接口,能稳定运行在Window,Unix等大多数平台中。

5.1.1 Tkinter组件

本设计所运用到的Tkinter控件主要有:

(1)Label:标签,用于显示界面内的文字,如“卡号”,“余额”等。

(2)Button:按钮,点击后触发所设定的command,执行读卡、充值等命令。

(3)Entry:文本输入框,其内部get()函数可以接收用户输入充值金额。

(4)Text:文本域,用于显示刷卡后得到的卡号,余额等信息。

(5)Combobox:下拉列表框,用于选择设备的串口号以及波特率。

5.2 pyserial

Pyserial模块是Python内用于开发串口的模块,支持在Windows、Linux等多平台上稳定运行,主要操作代码如下:

5.2.1 配置串口并打开

ser = serial.Serial(’com_number’, baud rate, timeout=n)

5.2.2 读取数据

line = ser.readline()

5.3 pymysql

Pymysql模块是Python中用于连接Mysql服务器的模块,实现对数据库的操作。本设计需要建立数据表”xinxi”,包含3列信息:cardnumber,balance,balancechange,主要操作代码如下。

5.3.1连接数据库

5.3.3 向数据表内插入记录

INSERT INTO xinxi (column1,column2,column3)

VALUES (value1,value2,value3);

5.3.4 更新数据表现有记录

UPDATE xinxi SET column1=value1 WHERE column2=value2;

5.3.5 删除数据表记录

DELECT FROM xinxi WHERE column1=value1;

5.3.6 操作实例

6 结论

本文结合城市发展需要,提出了一套地铁闸机控制系统的设计。该系统设计完备,具有良好的稳定性。其设计思想在地铁闸机建设中具有较强的实用性。

参考文献:

[1]周晓光.射频识别(RFID)技术原理与应用实例[M].北京:人民邮电出版社,2006.

[2]陈亮.地铁非接触式IC卡技术应用[J]. 济南:科技信息,2013(22).

[3]王爱英.智能卡技术[M].北京:清华大学出版社,2000.

[4]朱嘉斌.地铁IC卡读写器的设计研究[J].北京:现代城市轨道交通,2007(5).

[5]李淑琴,陈林,范蟠果.射频识别非接触式IC卡读卡器的设计[J].北京:计算机测量与控制,2007(3).

[6]陈秋彤,梁昭峰,何培重.实用型非接触式IC卡读写器的研制[J].哈尔滨:电测与仪表,2004(8).

[7]张凤涛.基于单片机技术的非接触式IC卡考勤机设计研究[J].郑州:河南科技,2013(1).

[8]林君.基于STC12C5A60S2单片机的射频读卡器设计[J].济南:科技信息,2012(35).

[9]黄春耀,王清辉.非接触式IC卡开放实验室管理系统下位机设计[J].龙岩:龙岩学院学报,2012(2).

[10]李树良, 施华莎.射频(RF)卡原理与结构[J]. 沈阳:微处理机,2013,16(9):17-19.

【通联编辑:王力】

《地铁闸机控制系统的设计》转载自《电脑知识与技术》学术期刊,2018年21期 ,作者:曹新莉,徐杨喆,熊俊俏,邹连英。

诗文坊小程序

上一篇:

下一篇: