杨 超 张冬泉
(北京交通大学机械与电子控制工程学院,100044,北京∥第一作者,工程师)
自动检票机(AGM),也称作闸机,是自动售检票系统(AFC)的重要组成部分,承担者控制客流、提供客流基础信息的任务,是AFC系统重要的现场设备。ARM(Advanced RISC Machines,精简指令集机器)架构,是一个32位元精简指令集(RISC)中央处理器架构,在许多嵌入式系统设计中被广泛使用,因而在自动检票机控制系统的设计中选择了ARM内核的CPU作为微控制器(MCU)。本文在分析自动检票机基本功能的基础上,重点研究了基于ARM的自动检票机的控制系统。
AGM是AFC系统的现场设备,设置于城市轨道交通车站的进出站口。乘客进出站时,AGM根据车票介质上存储的信息完成对车票合法性检查,统计进出站信息和客流信息,同时达到提高通过效率、降低运输成本、减轻工作人员劳动强度、实现车站管理信息化等目的,最终实现提高城市轨道交通运行效率的目的[4]。AGM的硬件部分主要包括机械壳体、门禁机构、主控板、GPIO(数字量输入输出)单元、液晶显示器、读卡器等部分。AGM的内部结构如图1所示。
图1 AGM内部结构示意图
目前,城市轨道交通的AFC系统已经实现了通过非接触式IC卡进行自动检票。AGM最主要的任务是判断乘客票卡的合法性,开放或关闭闸门,以及回收票卡。需要回收的票卡指的是在车站临时购买的乘车票卡而不是公交一卡通。
当乘客进站时,乘客只需刷卡进入,此时AGM不需要区分该卡是公交一卡通还是临时购买的乘车票卡,只需要判断票卡的合法性以及开放闸门,待乘客进入后关闭闸门进行下一次的操作。乘客进站流程如图2所示。
图2 乘客进站流程图
当乘客出站时,持有公交一卡通的乘客只需要刷卡即可,AGM会自动判断票卡的合法性,开放闸门,待乘客出去后关闭闸门进行下一次的操作;持有临时乘车票卡的乘客,需要将票卡插入AGM,进行票卡合法性判断并进行票卡回收的操作,若票有效,乘客才能顺利出站。乘客出站流程如图3所示。
图3 乘客出站流程图
当乘客持公交一卡通卡进站时,AGM只需要进行读卡的相关操作;当乘客持车站购买的临时乘车票卡出站时,AGM需要进行票卡合法性判断并进行票卡回收的相关操作。本文研究的AGM的功能主要是针对票卡回收的相关操作。为了完成一次票卡回收的操作,AGM的控制系统需要完成以下几项操作:
(1)传感器信息检测。为了检测票卡的位置,在票卡行经的各个位置安装了许多传感器。主控系统通过从这些传感器获得的实时检测信息,判断票卡准确的位置信息。这也是控制系统做出各种决策的直接信息来源。
(2)电磁铁的控制。整个系统安装了数量众多的电磁铁,通过电磁铁的动作效应可以控制票卡进入哪个票箱。
(3)步进电机控制。整个AGM安装了3个步进电机(票卡搬送部分1个,票卡回收部分2个)。步进电机是整个AGM的动力来源,因而步进电机的控制对票卡的回收起着决定性的作用。
(4)液晶显示。用于用户提示信息的显示,增强了系统的交互性和友好性。
(5)和上层服务器通信。位于车站的AGM与上层的服务器是相互联通的:一方面,AGM把记录的客流基本信息传给上层服务器用于客流信息的统计、分析,最终为客流调度服务;另一方面,上层服务器将票卡的信息传送给AGM,用于判断乘客票卡的合法性。图4为AGM控制系统的应用功能框图。
各种功能的传感器主要用来检测票卡的位置、状态,以及票箱中票卡是否已满。控制系统就是通过检测这些传感器的状态来获知外部信息。这部分信息大多为I/O量,CPU通过GPIO来获取这部分信息。同时,CPU可以通过GPIO端口直接控制电磁铁和步进电机,用于实现票卡的回收操作。系统的一些提示或者报警信息可以通过显示器动态地告知乘客。可以采用TCP/IP协议与上层服务器之间进行通信,实现和网络的互联。
图4 AGM控制系统的应用功能框图
通过分析AGM控制系统的应用功能,可以明确控制系统需要提供的资源和完成的任务,便于系统方案设计。以51系列为代表的传统单片机无论从资源还是运算能力上已经无法满足AGM控制系统的功能要求,而工控机存在体积大,自身不提供直接的I/O端口,嵌入性较差等限制性因素,因此,选用S3C2440A作为AGM控制系统的微控制器。
S3C2440A是三星公司推出的一款32位的RISC处理器,主频可达400MHz,资源丰富,可支持嵌入式操作系统如Windows CE。图5所示为基于S3C2440设计的控制系统方案图。
图5 AGM控制系统方案设计
嵌入式系统可以根据系统的功能要求实现系统硬件功能的定制,将需要用到的资源从CPU中扩展出来,而隐藏不需要用到的资源,从而实现系统的最简洁化。引出的端口主要有:①GPIO——传感器信息的采集、步进电机的控制以及电磁铁的驱动都需要用到大量的GPIO。GPIO是系统获取外部信息的主要方式。②触摸屏——用于提示信息和系统信息的显示,增强系统的交互性。③以太网接口——AGM和上位机可以通过此端口实现互联。④COM/JTAG/USB——系统调试用端口;⑤按键/蜂鸣器——可用于调试,也可用于交互。
引出的部分端口是考虑到了系统的调试。在调试好的系统上可以将此部分资源隐藏。至此,基于S3C2440A的嵌入式方案的硬件环境已经建立。
Windows CE是一个多任务、实时的嵌入式操作系统,可以提高系统资源的利用效率。但是,Windows CE是一个保护型的操作系统,不允许直接访问硬件的物理地址。主控系统对外围传感器信息的采集、步进电机的控制、与上层服务器通信等均用到大量的GPIO的操作,因此,需要直接访问CPU的物理地址。现以步进电机的控制为例介绍在Windows CE系统环境下对GPIO的操作。
步进电机的控制通常需要3根线:使能信号线(EN)、方向信号线(DIR)和时钟信号线(CLK);为了给出控制信号,还需要用到S3C2440A的GPIO端口。在 Windows CE系统环境下,为了完成GPIO的操作,首先需要将S3C24402440A的GPIO端口的物理地址块映射成操作系统可以访问的虚拟地址空间。如下所示:
函数VirtualAlloc用于在用户的进程空间中为要映射的物理地址保存一块虚拟地址空间。这块空间的大小由sizeof(GPIO_RES)定义。如果虚拟地址空间申请成功,函数的返回值是虚拟地址空间的基地址,存储在v_pGPIO_REGS中。
函数VirtualCopy用于将实际的物理地址对应给VirtualAlloc刚才保留的虚拟地址空间,以完成物理地址与虚拟地址空间的绑定。这里的操作完成了GPIO的物理地址块GPIO_PHY_BASE与刚申请的虚拟地址空间v_pGPIO_REGS的绑定。函数的返回值是布尔量,表征了此次地址绑定是否成功,从而在Windows CE系统环境下就可以通过操作虚拟地址空间v_pGPIO_REGS来实现对硬件地址的操作。
用完的内存可通过函数VirtualFree将其释放。用法如下:
Virtual(v_pGPIO_REGS,sizeof(GPIO_REGS),MEM_DECOMMIT)
完成了物理地址的动态绑定后,就可以通过访问虚拟地址来给出步进电机的控制信号。例如步进电机的初始化就可以通过如下方式实现:
v_pGPIO_REGS->GPGCON_VIRTUAL=
(01<<06)|∥电机使能信号设置
(01<<10)|∥电机时钟信号设置
(01<<12);∥电机方向信号设置
在Windows CE系统环境下对GPIO的操作均可以通过这种方式实现。
[1]宁斐,滑蓉,周子社.铁路客运专线自动检票机关键技术研究[J].铁路信息系统,2008,18(8):18.
[2]张彦.AFC技术及铁路自动售检票系统研究[J].中国铁路,2009(3):50.
[3]Ampelas A.Automatic fare collection[C]∥ 2001IEEE Intelligent Transportation Systems Conference Proceedings.Oakland:IEEE,2001:1164.
[4]陈勇.地铁自动售检票系统[J].铁道通信信号,2002(3):17.
[5]张冬泉.Windows CE实用开发技术[M].2版.北京:电子工业出版社,2008.
[6]Microsoft.Microsoft windows CE device driver kit[M].北京:北京希望电子出版社,2000.