臧志丹,张 羽,秘慧杰
(卡斯柯信号有限公司,上海 200071)
调度集中系统将计算机、通信、控制技术融为一体,使铁路运输的连续性、分散性和运输管理的集中性、实时性紧密结合,依靠指挥行车控制信息和有关行车表示信息的正确、实时传送,统一调度和指挥列车安全、有效地运行。
根据调度集中技术条件,调度集中系统应具备按照列车运行调整计划自动排列列车进路的功能,即车站自律机依据调度员下达的列车运行调整计划自动生成列车进路指令(进路序列),满足办理进路的联锁条件,适时转换为命令后发送给本站联锁设备执行,计算机联锁向调度集中系统发送车站表示信息、命令执行结果等,也可由人工发送命令控制。这就要求调度集中系统保证接口信息、进路数据的正确性,对于这样一个高安全性且对实时逻辑要求严格的安全苛求系统,投入使用之前对其进行全面严格的测试是非常必要的。
高铁CTC 进路数据需按照联锁表逐条进行进路的建立、信号开放、取消进路、人解进路、引导进路、区段故障解锁、防护及侵限条件检查等方面一一测试,同时核对进路道岔走向、锁闭区段及开放信号的一致性逐条按压按钮操作,然而,一个由4 条股道,15 组道岔组成的高铁标准站,包含45条基本进路,20 条长进路,人工测试进路数据的时间预计为1 天;以90 条股道以及164 组道岔组成的动车段为例,共计1 000 条基本进路,5 600 条长进路,人工测试进路数据的时间至少30 天。由此可见,进路测试工作量繁重,耗时较长,且易出错。在高速建设铁路网的大环境下,高效高质的完成CTC 进路数据测试带来新的挑战。
基于以上现状,本文针对进路数据自动测试方法进行研究,设计出一种进路数据自动测试工具,可有效的解决进路数据的自动测试及测试结果的自动分析。
自动测试工具用于调度集中系统进路数据的自动测试,自动测试工具读取CTC 数据中的进路信息,自动向车务终端发送排列进路的命令和取消进路的命令。并将车务终端返回的进路状态与数据中的进路信息进行比对,将最终比对结果显示在程序界面上,并保存在日志中供数据测试人员参考。
自动测试工具测试的项目可以精确测试和对不同类型进路的测试,能对进路数据进行重点测试和选择测试,保存完整的测试过程与测试结果,便于回归测试和分析测试结果。对于重复性操作比较多的进路数据测试工作,能显著提高调度集中系统与计算机联锁接口的测试效率及数据正确率,使CTC系统产品更安全可靠。
进路自动测试工具(Auto Test)通过命名管道向车务终端软件自动发送数据,接收车务终端软件发来的数据包,车务终端和自律机之间采用TCP/IP协议进行通信,自律机和联锁系统通过串口通信,以上必须满足《调度集中与计算机联锁接口规范》,符合调度集中系统的数据机制、通信机制、执行机制,实现进路建立、信号开放、信号重开、取消进路、人解进路的控制命令自动下达及进路表示信息一致性核对。通信流程如图1 所示。
图1 通信流程图Fig.1 Communication flowchart
自动测试工具加载进路数据文件,并将进路表存在内存中,进路数据文件有一定格式要求,进路数据需包含进路编号,进路类型,始终端按钮设备,开放信号机,进路内的道岔、防护道岔及带动道岔,敌对信号,进路内的区段,超限区段等信息,以及进路中设备的逻辑顺序。同时需将联锁接口信息完整录入到相应的设备中,为后续测试进路的正确性做准备。
自动测试工具和车务终端通过命名管道进行通信,将需要发送给车务终端的进路存放在发送队列中,与车务终端建立连接后,就会将进路建立消息通过命名管道发送给车务终端。车务终端接收进路建立消息后,通过自律机向联锁发送进路建立指令,进路建立指令经过检查可以排列进路后, 联锁通过自律机将进路建立的消息发送给车务终端。车务终端收到表示信息后,会通过命名管道将表示信息发送给进路自动测试工具,进路自动测试工具据此来判断进路建立是否正确。若正确,则会进行下一条测试。若不正确,则会重试。如果多次测试不正确,则输出测试失败。一条进路测试完成,进路自动测试工具会发送进路取消或人解进路的命令,并为下一条进路测试做准备。
自动测试工具将测试结果保存在本地的日志文件中,便于测试人员准确的定位到问题,提出解决方案,测试结果包含以下内容。
1)日志文件Cmlog.log
记录与车务终端的通信心跳等信息。
2)日志文件OperResult.log
测试“完成”生成此文件,记录测试结果。内容包括进路总数: N 条;基本进路: N 条;测试成功进路: N 条;测试失败进路: N 条;进路表问题需自行测试: N 条;未测进路:N 条。
3)日志文件OperResult 站号_OnTime.log
测试“过程中”生成此文件,实时记录测试结果。
4)日志文件RouteTestResult-站号.log
测试”过程中”生成此文件,实时记录进路的操作执行情况,包括车务终端反馈的表示与进路设备校验。
5)日志文件RouteInfo-站号.log
测试”过程中”生成此文件,实时记录显示界面信息。
CCESHIView 读取.sta 数据,并将进路信息读到内存里,调用GetRouteInStation(int stno)将进路和元素的信息放入m_routeInfo 中。通过调用ListAllRoute(CDC *pDC)将进路信息显示在界面上。进路数据的读取并储存模块如图2 所示。
图2 进路数据的读取并储存模块Fig.2 Route data read and storage module
数据存储单元通过读取CTC 系统的数据文件,车站设备描述文件和站场数据文件,获取进路信息,所获取的进路信息包括进路描述、进路上的所有组成设备及其状态表示信息、进路操作及其状态表示以及进路防护设备等。进路上设备以进路始端信号机到终端信号机顺序检索,之后将获取的数据信息以进路为单位进行存储和测试。通过核对进路操作后进路上各设备的状态是否符合该操作应有状态特征来判别进路操作的正确性。
在获取进路信息后,进路操作的命令将被分解和存储。以长列车进路的建立为例,测试工具将长列车进路分解成多条基本进路段并获取各段的始终端信号机按钮及按钮操作。测试工具将分解后的进路信息存储在该条长列车进路表项下,待测试使用。
2)发送进路建立指令
测试过程仍是以CTC 操作为主,测试工具起到存储进路信息、发送操作信息和核对表示信息的作用。工具基于windows 操作系统实现,自动测试工具选择C++作为开发语言,实现命令自动发送与表示信息自动返回比对,关键数据结构描述如下。
1)读取数据并储存进路信息
CStation:polling()主要将两条进路的执行结果进行比较,并搜索下一条准备测试的进路,进路信息从m_RouteArray 中获得,并加以逻辑判断,将符合发送逻辑的进路信息通过调用CTestOperMsgProc:SetTestElem 放入m_TestingRoute,再通过调用CTestOperMsgProc:CreateMsgQueue(int oper_id) 将 两 条 同 时 测 试的进路信息都放进m_msgQueue。消息放在CTestOperMsgProc 中的m_MsgQueue 中,再从m_MsgQueue 通过调用AddMsgToSend-Queue()放入m_MsgtoSend 中,通过调用m_TestOperMsgProc[i].HasMsgToSend(&msg)和AddToQueue(CESHI_SRC,(LPTSTR)&msg)再将其传入CClientNamedPipe 的SendMsg 中,最后通过命名管道发送给车务终端。进路建立指令的发送模块如图3 所示。
图3 进路建立指令的发送模块Fig.3 Transmitting module of the route establishment command
为确保测试结果的准确性,测试工具通过向车务终端发送进路操作命令来模拟人工进路操作,测试中所使用的操作指令与人工手办完全对应。测试中所使用的进路操作命令,包括进路建立、进路取消、人解、信号重开等。测试工具通过与车务终端的测试接口建立的双向通信匿名管道发送进路操作命令。仍以长列车进路排路为例,测试工具在测试该条进路时将分解后的基本进路始终端按钮操作逐步发送给车务终端,并接收来自车务终端的操作反馈和联锁延时,当该条长列车进路的排路操作完成后,开始检查设备表示并评判准确性。
3)处理车务终端发回的消息
通过调用ReadPipeMsg(char *pMsg)将车务终端发来的消息存在内存中,调用AddToQueue(int src, char *pMsg)将内存中的消息存在recvmsg中,通过调用DisPatchMsg(const PIPE_MSG*msg) 将消息放进m_TestOperMsgProc[i]. m_NeedProcessMsg,并在CTestOperMsgProc 中完成消息的比较。车务终端发回消息模块如图4 所示。
车务终端在整个测试过程中的作用是模拟人工手办,进路操作的逻辑卡控仍由自律机完成,这保证了测试结果和现场使用是完全一致的。在进路操作完成后,测试工具将获取来自车务终端的站场表示信息,用以核对操作的准确性。
图4 车务终端发回消息模块Fig.4 Message sending back module from vehicle terminal
自动化测试工具主要功能如下。
1)可视化窗口:测试工具的可视化窗口中测试条目以列表的形式展现,测试结果以不同颜色的条目进行显示,测试失败的进路条目字体为红色,测试成功为绿色,已测试的进路为浅绿色底。标题栏中可显示软件执行状态,若显示“Project is Going on……”,表示正在测试。若显示“ProjectisStopping…”,表示测试停止。若显示“ProjectisFinished…”,表示测试完成。测试进行中的可视化窗口如图5 所示。
图5 测试进行中的可视化窗口Fig.5 Visual window in testing
2)列车进路类型的选择:进路类型分为5 种,即调车进路、长调车进路、长延续进路、基本列车进路和长列车进路,可以灵活及精准的选择不同类型进路进行测试。
3)进路相关操作:预先输入进路建立超时时间,人解进路超时时间,取消进路超时时间,以及可以按需输入起始测试进路序号,结束测试进路号,选择性的测试相关进路。并且进路数据中存在的禁止的进路也可进行选择查看权。
4)信号重开功能:进路信号重开功能的测试可选择是否开启,当选择了信号重开测试项目后,即使信号重开测试失败,也不会影响建立进路或取消、人解进路功能的操作。若进路建立失败,则不会再对该条进路进行信号重开测试。
5)进路信息装载:开始测试前需先加载进路数据文件,将进路表导入到内存中, “加载数据”选项可加载已经选择的进路信息。
6)测试报告的导出:为记录测试信息和测试结果,测试结果可以保存到excel 表格中,选择启用excel 实时存储以启用实时存储功能。包括基本列车进路、基本调车进路、长列车进路、长调车进路和长延续进路等5 项表单。测试报告内容如图6 所示。
图6 自动导出测试表格Fig.6 Automatically exported test form
7)继续上次测试:可以读取上次测试的测试结果文件,并继续测试未完成测试的进路。
实践证明,上述由4 条股道,15 组道岔组成的标准站,使用自动测试工具进行一致性核对测试,可将测试时间缩短至0.5 天。由90 条股道以及164 组道岔组成的动车段,使用自动测试工具进行测试,可将进路测试时间缩短至15 天,测试效率提升一倍,且测试结果为测试人员提供了精准定位解决问题。若各系统之间进路数据能形成统一标准,则可以极大提高接口测试的效率和系统接口的准确性,使高铁中的调度集中系统更安全可靠。后续对进路自动测试工具进行完善和优化,进一步提高测试效率及安全性,将其推广到更多高铁线路接口测试中。