APP下载

智能轨道交通系统中的检票机设计

2014-08-07张佩汪镭康琦吴启迪

微型电脑应用 2014年2期
关键词:检票线程进程

张佩,汪镭,康琦,吴启迪

智能轨道交通系统中的检票机设计

张佩,汪镭,康琦,吴启迪

首先,介绍了智能轨道交通系统的理念,根据检票机在该系统的地位和作用,提出了智能化服务的业务需求;接着,分析了现有检票机存在的问题,提出了检票机的智能化提升设想,并以嵌入式 Linux 操作系统为例实现了应用层智能程序软件的主要模块。提出的4层软件架构有助于提高软件的兼容性和可移植性,多进程多线程方式提高了应用软件的自恢复性和智能化,SQLite 数据库方式储存数据有利于扩展运营中对数据查询的新需求。

智能轨道交通系统;检票机智能化;嵌入式 Linux;SQLite 数据库

0 引言

随着我国轨道交通建设的巨额投资和大力开发,轨道交通系统发展快速,逐渐向智能化方向转变,由此产生了智能轨道交通系统的理念。智能轨道交通系统是以有关轨道交通的规划设计、建设、运营、控制和管理的理念和理论为指导,以物联网为信息采集、交换与服务的基础支撑平台;以智能的信息化决策和处理技术为基本手段,通过对海量的轨道交通信息的过滤、挖掘和利用,构建“高效、便捷、安全、可视、可预测和环保”的现代轨道交通系统。实现智能轨道交系统,必须依靠智能信息化处理技术,具体为数据智能采集、数据智能融合、数据智能挖掘、智能决策[1]。

检票机作为智能轨道交通自动售检票系统(AFC: Automatic Fair Collection)的终端设备,是整个智能轨道交通系统的原始数据采集机构,同时也是智能决策后的执行机构。检票机位于付费区和非付费区之间,通过对票卡的自动查验,记录了乘客直接的检票信息;按照业务规则处理后,管理和引导乘客的通行行为,为其提供智能化服务[2]。

自动检票机的智能化服务不仅对检票机的硬件设备有了更高的要求,更对检票机软件的运行性能、系统可靠性和后期的可维护性提出了苛刻的需求。需要具备大客流带来的较大幅度的数据处理能力。本文针对现有检票机系统存在的问题进行了分析,提出了对系统软件的智能化提升设想。最后以嵌入式 Linux OS 环境为例,在现有设备的基础上对检票机主控应用软件进行设计实现。

1 自动检票机总体分析

1.1 现有检票机分析

自动检票机的最基本作用是实现乘客在非付费区和付费区之间的自助进出站检票交易,为乘客通行提供智能化服务,对有效车票自动开启通道阻挡装置,允许乘客进站或出站[3]。此外,自动检票机是整个智能轨道交通 AFC 系统中的终端设备,需要为轨道交通 AFC 系统的智能化管理和决策提供最原始的数据信息,因此检票机的数据储存安全性和系统的智能修复能力极为重要[4、5]。

现有检票机的整个系统软件设计上结构层次关系模糊,对外设设备的通信控制程序部分与业务应用部分耦合度较高。尽管目前 AFC 系统都有地方规范,但是硬件设备往往由各厂商自己选型设计,这样运营方在后期维护中更换外围设备时需要重新调试主控软件;目前检票机软件采用的嵌入式操作系统趋向多元化,包括 Dos、Windows XPE、Linux、ReWorks 等,针对特定操作系统开发的应用软件在可移植性方面会很差[6]。

目前检票机软件设计上都采用单进程多线程的方式,虽然单进程内可以共享数据,减少进程间的通信消耗,却降低系统的可靠性和智能修复能力。一旦某个线程发生异常,很容易引起整个进程全部意外退出或崩溃。单进程也使得对各个模块运行情况的监控和修复设计产生难度[7]。

检票机的性能很大程度决定于票卡逻辑处理速度和数据储存。现有的功能模块划分也有其不合理的地方,可以适当将票卡处理模块的部分业务划分到其他模块,来减轻票卡处理模块的工作量,以加快读卡响应。另外通过选取一种更好的数据储存方式来加快数据读写速度,同时能加强数据的保护措施。

1.2 现有检票机框架介绍

自动检票机结构上一般主要由以下部件组成:主控单元、读写器及天线、三竿阻挡装置、票卡回收装置、乘客显示器、方向指示器、警示灯及蜂鸣器、检票机控制单元、维修键盘和 UPS 电源模块。本文中使用的进站检票机设备总体框架如图1所示:

图1 现有进站检票机总体框架图

目前大部分厂商的自动检票机使用486以上级别的X86通用工控机作为硬件平台,能方便地为今后备品备件的选型、采购提供较大的自由度。本文中使用的现有检票机设备仍然沿用这种工控机平台方案,主控单元采用研祥SPC-0501 工控机作为硬件平台。板载 1G 内存,外接 1G CF卡和 512MDOM 电子盘。能够适应检票机系统运行和数据吞吐量及储存的需求。

2 自动检票机系统软件架构

2.1 软件架构方案

针对现有检票机系统软件层次不清晰的问题,也为了提高自动检票机软件的可靠性和兼容性,以及在不同系统间的可移植性,本文对系统软件架构提出分层设计设想。引进“虚拟层驱动”理念,在操作系统上增加抽象层的结构设计,隔离操作系统;为应对外设功能需求的变化性,在与外设通信过程和应用业务之间再增加一层。因此对整个软件架构体系提出四层架构的设想方案,自下而上分别是嵌入式OS层、抽象层、设备层和应用层。

嵌入式OS层是整个系统软件的最底层,在本文中是嵌入式 Linux OS,当然也可以根据项目的实际情况采用其他嵌入式系统。

在嵌入式 OS 层之上的是抽象层,即“虚拟层驱动”。抽象层屏蔽不同操作系统的差异性,向上层提供一个与操作系统无关的开发辅助环境。对不同操作系统的系统函数进行接口参数提炼和封装,从而提供统一的接口函数,提升了应用层和设备层程序的可移植性。

设备层用以隐藏检票机主控单元与各个设备部件之间的交互细节以及与车站计算机系统的通信细节。该层仅提供交互的接口,将可能变化的系统细节都隐藏在各个模块中。

最顶层是应用层,根据业务需求来实现检票机的应用逻辑功能。每个业务功能设计成一个功能单一的模块,对外仅提供接口,将具体的功能实现细节封装在模块内部。模块内部实现时调用设备层的接口或直接使用抽象层接口来完成功能。

四层软件架构的设想使得整个系统软件层次分明,耦合度大大降低,有利于开发中的代码重用,提高了后期的可维护性和不同系统之间的互联互通,同时能增强了检票机的智能化。四层系统软件架构设想如图2所示:

图2 四层系统软件架构

2.2 应用层设计

应用层软件采用多进程多线程设计方式,将功能类似的模块划分进同一个进程。多进程多线程不仅提高运行并发度,更重要的是能够方便监控应用软件下的各个进程的运行情况,在出现意外状况时可以进行智能修复,提高了软件的可靠性。

为了达到软件的智能监控设想,应用层设计上需要有两个程序软件同时运行,一个是业务应用软件程序;另一个是智能监控程序,实时监控应用软件程序内各任务进程的运行状况并自动恢复异常时的应用业务进程。例如有某个进程异常退出时,并不会引发应用软件内其他进程的退出,智能监控程序会监测到该异常情况,记录该异常信息后重新启动该进程,恢复应用软件的正常运行。这样的设计,与单进程多线程模式相比,能避免因一个线程意外崩溃而致使整个程序崩溃退出的情况。本文中完成了应用软件的主要模块程序实现,还未实现智能监控程序。

3 自动检票机应用软件实现

本文以 Linux 操作系统为例完成了检票机应用软件主要业务的实现,采用面向对象的设计思路。根据应用层的功能需求来划分模块,将相对独立的业务功能设计成一个模块,模块设计遵循低耦合高内聚的原则。主要的模块包括票卡交易智能处理模块、数据智能管理模块、网络通信模块、智能维护模块、GUI模块等。

票卡交易智能处理模块负责票卡的逻辑处理,将生成的交易数据直接发送给数据智能管理模块,以加快读卡响应速度;网络通信模块负责数据包的接收和发送,不对数据内容作处理,将解析后的数据直接交给数据智能管理模块处理;数据智能管理模块根据收到的交易数据去更新收益寄存器,管理运营参数的储存、生效和转发,以及定时发送本机产生的数据给网络通信模块。

检票机应用软件实现中充分利用了多进程多线程的设计方式。开启一个主进程、3个子进程,子进程分别是票务逻辑智能处理进程(包括票卡交易智能处理、智能维护管理、GUI 3 个模块)、数据智能处理进程、网络通信进程。各进程间使用消息队列方式通信。主进程负责配置系统环境参数,系统运行初始化,创建并管理各个子进程。子进程内部再根据具体实现需要创建多个线程。下面重点介绍票卡交易智能处理、数据智能处理、网络通信3个模块的实现。各进程分布框图如图3所示:

图3 检票机应用软件框图

3.1 票卡交易智能处理

票卡处理方面,为了加快对读卡-验卡-放行流程的响应速度,各串口外设接口程序都注册一个接收线程用于接收串口数据。另外注册一个消息接收线程用于接收数据管理进程发送的参数和命令消息。读卡响应、交易响应等操作作为回调函数,由读卡器接收线程调用。所有的交易记录数据等都直接通过消息队列发送给数据管理进程,由后者保存并更新收益寄存器。

票卡交易处理类型有进站和出站两种,两种处理流程类似,只是进站交易少了车票回收步骤。首先,读卡器有票卡时唤醒休眠中的读卡器接收线程并读取票卡数据;其次,对票卡信息进行有效性检查;然后,根据当前的业务规则更新票卡信息,再向 GUI模块发送显示信息,并将通行控制命令加入命令队列发送给检票机控制单元。最后,将票卡交易数据加入消息队列,发送给数据管理模块储存。

进站票卡信息的有效性检查包括密匙安全、黑名单、票种合法性、票卡状态、使用地点、余值、有效期、进出站次序检查。

3.2 数据智能管理

3.2.1 数据智能备份

为了保证自动检票机数据的安全性,利用现有检票机储存中的CF卡和DOM 电子盘,对重要数据进行智能双备份。其中CF卡存放整个系统的所有数据,包括操作系统、应用程序、运营参数、交易记录、寄存器数据、DOM 电子盘存放交易记录、黑名单参数。

系统初始化状态下,CF卡储存操作系统、应用程序、电子盘无数据。系统使用过程中,CF卡和电子盘对交易记录、黑名单参数互做智能备份。如果系统在使用过程中 CF卡出现故障,此时将初始化状态的 CF卡替换故障的CF卡,系统运行后,将首先进行数据的智能恢复。

3.2.2 数据储存实现

本文的数据储存采用 Sqlite 嵌入式数据库保存数据,包括运营参数、交易记录、寄存器数据。SQLite 是关系型嵌入式数据库,支持大部分 SQL92 标准,支持事务机制和 blob在内的5类数据类型。该数据库以文件方式保存在磁盘上,最大支持数据量到 2TB。

根据检票机的自身情况和上海的《城市轨道交通自动售检票系统通用技术规范》[8](以下简称《规范》)的要求,检票机中存放的大部分运营参数分当前版本和未来版本。两者能够根据版本号和生效时间智能切换,两者切换流程如图4所示:

图4 检票机参数版本切换流程

为了实现参数的版本控制和智能切换机制,设计了两张参数版本表来管理所有的参数表,分别是当前参数版本表和未来参数版本表。两个参数版本表设计相同,各字段分别是消息类型码(主键)、版本号、参数生效时间、参数表名字。对当前版本参数或未来版本参数的更新,分别经过查找当前或未来参数版本表中的该类参数信息记录,检查参数版本号后,将参数内容更新到该记录指向的表中。待生效的未来参数加入参数待生效链表,由定时事务管理线程定时检查。

为了避免 SQLite 数据库操作死锁的可能性,包括运营参数和本机产生的数据在内的所有数据的增删查改操作均在同一个线程进行。接收线程将接收到的交易数据、维护寄存器和审计寄存器数据放入 FIFO 队列 1,接收到的运营参数放入 FIFO 队列 2,接收到的其他命令请求放入 FIFO 队列3。数据库操作线程循环对这些队列中的数据或命令进行相应操作。3个队列的在两个线程中的同步分别使用3个互斥量保证。

由于每种消息类型的数据内容均不相同,各自消息数据的具体操作都需要各自实现。但是可以根据传入传出参数的共性,提炼一个统一的操作接口。本文对所有数据的数据库操作首先创建一个抽象类,包含通用的操作接口。然后每种消息类型数据库操作类都从该抽象类派生,在类内重写抽象类的各个操作接口函数。

3.2.3 多定时器机制

由于各个定时事件需要多个定时器,而 linux 下同一个进 程 中 所 有 线 程 共 享 POSIX 系 统 信 号 处 理 , 共 享SIGALARM 时钟信号,只能实现一个定时器,因此,需要应用程序自己设计多定时器队列机制。本文采用一个链表组织多个定时器,除链表头定时器的超时时间是用绝对时间记录外,其他定时器的超时时间都是相对时间(以前一个定时器为基点的相对时间)记录。这样每次以一个固定单元的时间间隔对多定时器链表检查超时时间,一旦某个链表上的定时器超时时间减为0,则运行该定时器注册时的回调函数,同时删除该定时器。实现上,设计成一个多定时器类,在类内单独创建一个线程管理多定时器链表。

使用时,调用者只需实例化多定时器类并注册定时器及超时回调函数,每次定时器生效后需要重新注册。

3.3 网络通信

根据《规范》,检票机与车站计算机通信采用 TCP/IP 协议实现。通信线路上传送的消息报文长度限制为 8192 字节,当请求或应答消息长度大于此限制,需要拆分成多个报文传送。当检票机收到多包请求时,直到收完最后一包并处理后才能返回应答。消息报文由包长度、同步头、包头、包体、MAC 5 部分组成。通信程序实现中遵循规定的消息报文格式。

3.3.1 报文通信

通信程序采用 socket技术编程实现,通信规程使用同步短连接方式。程序实现上采用报文分层处理思想,参照OSI七层模型的会话层、表示层和应用层设计,每一层的实现都封装设计成一个类。会话层类负责发起连接请求、socket连接监听、消息包发送/接收、断开连接等功能。表示层类负责报文数据格式与本机内部数据格式互相转换,对会话层接收的消息包解析、多包包体重组,对应用层的包体进行拆包、报文封装。应用层类负责包体数据上传给表示层、包处理调度及应答。3层关系如图5所示:

图5 通信程序层次关系

因为检票机的并行通信连接数不会很大,所以程序设计中采用多线程处理新连接。socket连接监听线程只负责新连接的监听,当有连接请求被接受后,新创建一个线程。由该新线程负责新连接的通信会话,直到该连接会话结束并断开socket连接后,该线程才返回结束。

因为,检票机的并行通信连接数不会很大,所以,程序设计中采用多线程处理新连接。socket连接监听线程只负责新连接的监听,当有连接请求被接受后,新创建一个线程。由该新线程负责新连接的通信会话,直到该连接会话结束并断开 socket连接后,该线程才返回结束。

此外,通信程序需要实现定时与车站计算机进行联网状态智能检测,如果3次连接测试均超时或没有应答,则认为与车站计算机断开连接,检票机进入孤岛模式,但连接测试一直继续。另外,连接超时、发送超时和重发、接收超时以及等待应答超时机制均有会话层保证。

3.3.2 智能时间同步

AFC 系统自线路中央主机以下所有节点计算机必须具有相同的系统时间,因此,检票机必须不断时间的智能同步。时间同步采用 NTP 协议(RFC1305)来实现。检票机以车站计算机为 NTP服务器,在开机时和每小时的 0分进行系统时间同步。但当两者时间差过大时,首先不更新本地时间,向车站中心发送警告,由维护人员手工调整。

4 总结

本文根据检票机在智能轨道交通系统中的作用和功能,描述并分析了检票机的智能化服务需求。针对现有检票机存在的问题,提出了智能化提升设想,并在嵌入式 Linux 环境下实现了应用软件的主要模块。4层软件架构设想有助于实现智能轨道交通 AFC 系统中不同系统的终端设备间无障碍的智能互联,符合智能轨道交通 AFC 系统的规范性发展方向。同时采用 SQLite 数据库方式储存数据,加快了数据读取速度,也方便安全备份,可轻易适应今后轨道交通运营中提出的新的数据查询要求,具有良好的可维护性。

[1] 杨燕,朱焱,戴齐.智慧轨道交通--更深入的智能化[J].计算机应用,2012,32(5):1205-1207

[2] 赵时旻.轨道交通自动售检票系统[M].上海:同济大学出版社,2007.

[3] 杨盛.AFC 感应型检票机嵌入式软件架构设计与实现[D].上海:东华大学,2010.

[4] 周向争.基于 Reworks 操作系统的检票机设计[J].计算机应用与软件,2013,30(5):211-216.

[5] 于明.城市轨道交通自动售检票系统检票机应用软件架构设计与分析[J].城市轨道交通研究,2007,4:37-40.

[6] 杨超.基于 ARM 的地铁自动检票机控制系统研究[J].城市轨道交通研究,2012,5:86-89.

[7] Gene Slly.linux 嵌入式系统高级程序设计[M].北京:人民邮电出版社,2010.

[8] DGJ08 - 1101 - 2007 上海市工程建设规范: 城市轨道交通自动售检票系统通用技术规范[S]. 2007.

Design of Gate Machine in Intelligent Mass Transit System

Zhang Pei, Wang Lei, Kang Qi, Wu Qidi
(College of Electronic and Information Engineering, Tongji University, Shanghai201804, China)

This paper introduces the concept of Intelligent Mass Transit System (ITMS) firstly.Then put forward the requirement of intelligent service according to the status and function in IMTS.Next, analyze some problems in the existing gate machine, and come up with the proposal of intelligent promotion for gate machine. After that, introduce the implementation of several key modules in intelligent software of application layer which is based on embedded Linux OS. It is the architecture of four layers that is beneficial to improve the compatibility and transportability. The development way of multi-process and multithreading could enhance the self-recovery and intelligence of system software. And the usage of SQLite database could expand the new demand to query the Data during the AGM operation.

Intelligent Mass Transit System; Gate Machine Intelligence; Embedded Linux; SQLite Database

TP311

A

1007-757X(2014)02-0001-04

2014.01.14)

基金项目:教育部博士点基金(20100072110038);教育部新世纪人才计划项目(NECT-10-0633);国家自然科学基金项目(70871091,61075064,61034004,61005090);上海市金融信息技术研究重点实验室 开放课题

张 佩(1987-),男,同济大学,硕士研究生,研究方向:智能算法及控制,上海,201804;汪 镭(1970-),男,同济大学,教授,博士生导师,研究方向:智能算法及控制,上海,201804;康 琦(1980-),男,同济大学,副教授,博士,研究方向:智能算法及控制,上海,201804吴启迪(1947-),女,浙江永嘉人,同济大学电子与信息工程学院,教授,博士生导师,研究方向:智能控制、智能计算、CIMS 和管理科学,上海,200092

猜你喜欢

检票线程进程
基于C#线程实验探究
基于国产化环境的线程池模型研究与实现
债券市场对外开放的进程与展望
改革开放进程中的国际收支统计
检票
浅谈linux多线程协作
有轨电车售检票方案综合分析
NFC移动支付技术在地铁自动售检票系统中的应用
现代有轨电车售检票系统方案的研究
社会进程中的新闻学探寻