铁路站车客运信息列车版无线交互系统的研究
2014-08-01武振华李贝贝刘相坤
武振华,李贝贝,刘相坤,李 琪
(中国铁道科学研究院 电子计算技术研究所,北京 100081)
铁路站车客运信息列车版无线交互系统的研究
武振华,李贝贝,刘相坤,李 琪
(中国铁道科学研究院 电子计算技术研究所,北京 100081)
在介绍铁路站车客运信息无线交互系统的业务应用领域的基础上,结合PC端列车版应用程序的开发,从数据访问层、业务逻辑层和用户界面层3个层次,分析了列车版站车无线交互系统及软件架构。
铁路客运;列车版站车交互;软件框架
铁路站车客运信息无线交互系统(以下简称系统)是铁路客运部门首次结合GPRS无线公众网络和中国移动专用APN技术而搭建的车地一体化办公的无线信息交互平台。该系统实现了地面车站或客运段对列车数据的实时掌握和管理,方便了列车乘务人员及时精确地了解全车人数、席位的占用等数据,并可查验旅客的实名制、挂失票和网络购票等客运信息。该系统自2010年在全路上线以来,提高了列车乘务人员的办公质量,极大地促进了地面列车与车站间的数据交互效率。本文主要针对PC端列车版站车无线交互系统的软件设计进行解析。
1 系统概述
系统由列车车载终端和地面设备组成,列车车载终端与地面之间由GSM网络或者GSM-R网络连接;地面系统由信息发布服务器、GPRS接口服务器、路由器及防火墙等设备组成。系统框架如图1所示。为确保信息系统的安全,系统平台采用专线方式通过防火墙与中国移动网络连接,通过安全隔离系统和防火墙与GSM-R网络连接。
图1 系统框架图
2 系统的软件框架设计
PC端列车版站车无线交互系统因为其承载于PC电脑上,运行环境有别于Windows Mobile和Android系统,因此,其应用系统的软件设计具有独自的特点。为了实现可扩展可升级的软件应用程序,根据站车无线交互系统的业务需求,PC端列车版站车无线交互系统具有典型的企业级3层软件架构:数据访问层,业务逻辑层和用户界面层。
2.1 数据访问层
站车无线交互系统的数据访问层旨在分离数据访问逻辑,通过对特定的底层数据源代码进行封装整合,实现底层对上层的透明服务。整合的代码实现对数据库数据的具体操作,涉及数据库的创建与连接、发布SELECT、INSERT、UPDATE以及DELETE命令等等。这种抽象的类似接口服务的方式将数据实体和数据操作行为进行隔离,符合面向对象的特点。
在站车无线交互系统的实现方案中,列车终端的软件系统根据需求发送车次信息,车站的信息发布服务器会根据智能逻辑策略向列车进行数据推送,列车终端的软件系统接收到数据后,对其进行组织、存储并提供给用户进行界面展示。在这种车地信息交互的过程中,列车终端系统的操作离不开数据库的支持。鉴于单车次的单次发送或接收的数据量一般小于10 kB, PC端站车版无线交互系统选用关系型Access数据库,并采用基于COM的数据访问中间件OLEDB(Object Link and Embedding Database)技术进行数据库的连接,这种操作方便数据库的日常维护。
PC端列车版无线交互系统的数据访问层的软件设计,主要面向于将后台对数据库的操作进行封装,通过代码提炼成通用的类库,实现数据库的独立性。并结合使用松散的类型化对象DataSet和DataTable获取特定的数据对象,将关系数据模型转换成对象数据模型,进而保持数据库的独立性。部分代码如下:
public static DataTable ExcuteReader(string sql, params OleDbParameter[] parameters)
{
string conStr = "Provider=Microsoft. Jet.OLEDB.4.0;Data Source= .\zc.mdb ";
OleDbConnection conn = new OleDbConnection(conStr);
DataSet dataset = new DataSet();
try
{ conn.Open();
OleDbCommand cmd = conn. CreateCommand();
cmd.CommandText = sql;
foreach (OleDbParameter parameter in parameters)
{
cmd.Parameters.Add(parameter);
}
OleDbDataAdapter adapter = new OleDbDataAdapter(cmd);
adapter.Fill(dataset);
}
catch (Exception e)
{
zclog.zc_log.logappend(e.Source +e.ToString() + e.Message);
conn.Close();
return null;
}
conn.Close();
if (dataset.Tables.Count == 0)
{
return null;
}
return dataset.Tables[0];
}
该封装的方法内部实现与数据库的连接与关闭。通过传递参数的形式,对数据源执行SQL语句(主要执行读取数据库任务),并将执行的结果以强类型数据集的形式进行返回。该代码可对潜在的错误进行自控制,并以Log日志的方式进行错误记录,方便错误的追踪和查询。
2.2 业务逻辑层
站车无线交互系统的业务逻辑层聚焦在站车系统的业务规则的指定、业务流程的实现和系统方案的设计上,承载着整个站车无线交互系统的核心,良好的业务逻辑层的设计可保障系统运行的鲁棒性。
2.2.1 数据流
站车无线交互系统的终端通过配置中国移动提供的专用SIM卡,采用中国移动的专用APN技术连接中国移动的公用非公众的GPRS无线传输网络,由移动网络动态分配专用的本地IP地址,所以SIM卡和IP地址存在固定的对应关系,这种终端占用IP查询的回应方式,可以降低信息发布服务器的丢包率。应用程序通过VPN技术和安全隔离系统接入客票外网。终端系统启动应用程序后,完成专用SIM卡在移动网络的注册,向信息发布服务器发送身份认证信息,通过安全与合法性校验后收发数据。如图2的站车无线交互系统的数据流示意图所示,站车无线交互系统的车载终端的本地数据通过自定义端口进行内部通信,当需要发送站车交互数据时,应用程序通过数据压缩、数据分片、断点续传等技术,通过AT指令拨号的方式接入中国移动的GPRS无线网络。数据通过特定的端口流入由中国铁路总公司部署的GPRS接口服务器,GPRS接口服务器负责应用协议转换、终端地址寻址、信息收发、非法数据的安全屏蔽等功能。只有符合特定端口和协议的数据才能安全到达信息发布服务器,信息发布服务器能够对端口异常的数据流进行实时监控,并通过部署防火墙、网闸等保护措施建立铁路客票网与中国移动网络的物理隔离和安全防护。客票系统在列车开车前5 min推送列车的乘降人数通知单、席位信息、挂失信息、电子票信息等数据到信息发布服务器,以应对车载终端的数据请求。信息发布服务器将数据加密、压缩、分段后,采用UDP传输协议通过GPRS接口服务器、GPRS网络推送到车载终端,车载终端接收到数据后,对数据进行解密解压和重装,之后调用数据访问层封装的类库装载数据入库,或者提供给上层进行界面展示。
车载终端应用程序的内部数据流的传递,将发送节点、对外节点和接收节点分别抽象成对等网络的端点,每一个“网络端点”分别用IP地址和端口号进行表示,如图2所示。发送端点和接收端点在软件设计中表示为客户端和服务端,其网络端点表示为系统的回环IP地址和不同的端口号,如图2的端口号5656和5858。对外节点根据数据流方向的不同,即表示为客户端又表示为服务端,其网络端点表示为移动网路分配的IP地址和端口号20000或者20004。发送端点或者接收端点与对外端点之间的通信调用操作系统中的TCP / IP软件的控制权,通过套接字API中的socket调用实现网络通信。Windows操作系统的socket句柄能快速将接收的数据递交给应用层连接对象。
图2 PC端站车版无线交互系统数据流示意图
2.2.2 网络协议
车载终端的应用程序一般多在列车运行速度快的外界环境下运行,应用系统的网络常会出现无线信号不稳定、无线数据传输速率低等情况,因此,车-地间的网络通信协议或者系统的控制机制必须保证站车无线交互系统数据交互的连续性和完整性。
经过系统实验和业务功能测试,站车无线交互系统适合搭载中国移动的GPRS网络作为底层传输通道,传输层通信协议采用非面向连接的不可靠的用户数据报协议(UDP)。UDP报文直接传输应用数据,没有复杂的连接建立过程,即使在网络不稳定的情况下也可实现间断性数据传输。UDP每个报文都绑定目的地址,服务端可以通过地址查询,实现每个UDP报文的目的地址随终端IP变化而变化。UDP在会话超时时才会导致会话中断,断线干扰和丢包干扰也会影响传输控制层。虽然UDP的传输特点限制了UDP本身的传输控制能力,但应用层实现的超时和分片等控制机制可提高系统的抗干扰能力。在软件设计中,应用系统把每一个任务建立为消息队列,通过分析和维护队列的形式实现UDP数据的控制。
车载终端在数据发送前,会向服务端发送数据描述指令,这种指令可以看作是发送端与服务端的一次“握手”。数据描述携带发送端的基本信息,包括设备的终端号、数据总大小、分片大小、数据发送标示号、目的地址等信息。服务端在得到数据描述信息后,若检测发送端的信息已经在后台有过注册行为,则返回确认信息,发送端得到确认信息后即可发送站车车次等数据信息。为了提高站车交互的效率,发送端采用单向推送的方式进行数据发送,发送的数据根据描述指令中数据分片大小的限制对数据进行分片和包装,其中的包装包含每个数据分片的标示号和偏移量,以便服务端在接收到数据后进行数据的排序和再组织。服务端接收数据后进行数据报文的完整性和合法性校验,若通过校验,同样以单向数据推送的方式,并加入流量控制机制(考虑了终端设备接收处理能力)向终端反馈数据。若校验数据不完整或者不合法,则继续等待发送端进行数据发送,同时发送端也引入超时控制机制,一定时间后若收不到服务端的反馈信息将再次重发数据,直到服务端实现完整性与合法性校验,从而实现数据的完整收发流程。这种有数据描述、数据推送、数据控制的传输协议,结合指令应答,构成了站车无线交互系统的基础网络传输控制协议,有效地搭建了数据传输的通信环境。
2.2.3 业务处理逻辑
为保证站车无线交互系统在线功能的正常使用,程序启动之前必须先启动服务,这些服务包括:多线程的运行,与远端服务器的正常连通测试,程序的初始化等。之后应用程序开始与使用者进行交互,通过获取使用者提交的车次和始发日期等信息向服务器提交数据下载请求。根据站车无线交互系统的业务规则,站车无线交互系统的完整登乘和退乘流程分别如图3和图4所示。
图3 登乘流程示意图
图4 退乘流程示意图
为了有效监督列车乘务人员对旅客的服务质量,站车无线交互系统在车长登乘时实现了车长实名登乘和登乘信息切换,以便出现问题时车-地间及时有效地进行联系。在退乘流程中,仍然需要服务的启动,实现终端向后台服务器的注销,停止后台服务器向终端进行数据发送。
在拥有旅客信息的基础上,站车无线交互系统还实现了晚点调整、打印输出保存、密度表等业务逻辑的组织,多方位地提升了站车无线交互系统的使用。
2.3 用户界面层
站车无线交互系统的用户界面层除了提供用户操作界面外,还组织用户下载的数据以一定的格式进行显示。用户界面层直接与列车乘务人员进行交互,直观简洁地实现乘务人员对数据的维护和管理。列车在始发站前1 h后台定时生成相应的全程席位信息和定员信息,因此界面需能够反应车次信息、定员信息、停靠站列表、全程席位预览信息、席别、票种等基础信息的下载状态,同时也能将沿途各站到站前5 min定时生成的业务信息(通知单、席位信息、挂失票、电子票)的下载状态进行显示,这些业务信息的内容也需要以一定的逻辑进行展示。所以,站车无线交互系统的车载终端的前台界面完成了丰富的数据显示。
3 结束语
合理的系统设计和良好的软件设计保证了铁路站车客运信息无线交互系统车载终端的使用,尤其是多平台软件的开发,极大地提升了地面对列车的管理水平和铁路客运的服务水平。列车乘务人员通过站车无线交互系统,实时有效地掌握了全车的席位信息、到站的乘降人数等数据,相比于之前车-地间纸质方式的传递,提高了乘务人员的办公效率。目前,站车无线交互系统可实现双中心(铁路客票一、二生产中心互为灾备系统)、双通道(GPRS、GSM-R)的服务,并在Windows Mobile手持终端和Android平台上实现了在线席位补票和身份证实名验证等功能,极大地丰富了站车无线交互系统的使用空间。未来若以站车无线交互系统作为车上乘务人员的信息平台,可最大限度拓展站车无线交互系统的业务领域。
[1] 闫志远,何志根,宋 超,等.铁路站车客运信息无线交互系统关键技术[J].铁路技术创新,2012(4):38-40.
责任编辑 方 圆
▲ 第十二届中国国际现代化铁路技术装备展览会中国铁道科学研究院展位
摄影/本刊记者 国 敢
Train Version’s Station Train Wireless Interactive System for railway passenger transport information
WU Zhenhua, LI Beibei, LIU Xiangkun, LI Qi
( Institute of Computing Technologies, China Academy of Railway Sciences, Beijing 100081, China )
This paper, based on the business application of Interactive System for railway passenger transport information, analyzed the System and its three-level software architecture of data access layer, business logic layer and user interface layer combined with the application development of the PC-side train version’s program.
railway passenger transport; Station Train Wireless Interactive System; software architecture
U293.2∶TP39
A
1005-8451(2014)10-0020-05
2014-04-08
武振华,研究员;李贝贝,在读硕士研究生。