尹 青 蔡伯根 上官伟 苟晨曦
尹 青:北京交通大学电子信息工程学院 硕士研究生 100044北京
蔡伯根:北京交通大学电子信息工程学院 教授 100044 北京
上官伟:北京交通大学电子信息工程学院 副教授 100044 北京
苟晨曦:北京交通大学电子信息工程学院 博士研究生 100044北京
故障注入作为一种有效的安全测试技术手段,是系统测试性、安全性及功能验证研究的重要方面,也是验证工作得以实现的基础。故障注入大致分为基于软件、硬件和仿真三种故障注入方法。基于硬件的故障注入主要是探针法和插入法,比如管脚级硬件故障注入。基于软件的故障注入可用于评价软件冗余机制,主要应用于程序变异和估算程序中错误数量的播种模型,对硬件环境没有损坏,能够跟踪目标程序的执行和回收数据,有较好的可移植性。而基于仿真的故障注入,是建立在仿真系统的基础上,即接受测试验证的目标系统是一个仿真系统,是一种仿真实现方法。
由于本研究项目重点是测试CTCS-3级列车运行控制系统仿真测试平台,在某个关键设备故障的情况下能否实现需求规约上的安全保证功能,而采用硬件、软件注入的方法不能验证仿真模块的功能设计,故采用基于仿真的故障注入方法。
对于仿真系统来说,其真实系统原型往往是一个复杂大系统,无法进行真实场景的测试验证,只能搭建仿真环境进行安全性能的测试验证。
基于仿真的故障注入技术,应用在仿真测试的计算机原型上,通过仿真过程、改变逻辑值来达到故障注入的效果。在某个关键设备上改变某个工作状态以模拟其发生故障的情形,通过程序接口将故障注入到CTCS-3级列控系统仿真测试平台之中。
故障注入算法流程在Windows环境下搭建,系统的通信采用RTI/HLA(Run Time Infrastructure/High Level Architecture)通信协议。RTI是HLA仿真应用的软件实现,在仿真执行过程中负责仿真模块之间的信息交互。算法流程如图1所示。
图1 故障注入算法
基于HLA的列控仿真平台仿真联邦成员包括CTC总机、CTC分机、RBC、TCC、联锁、临时限速、车载、轨旁、G网、仿真管理器等共10个设备模块,部分仿真设备编码如表1所示。
表1 仿真设备编码
CTCS-3级列车运行控制系统联邦成员交互数据帧采用统一格式。案例数据存储在Access数据库中,在程序中一键调用。当需要交互信息时,例如故障注入事件触发,故障注入联邦成员通过RTI接口将注入数据信息发布出去,目标联邦成员接收到发布的信息后进行处理,即目标仿真设备做出故障反应,并将反馈信息通过RTI发布,故障注入仿真模块接收反馈信息后加以分析,直观地显示出来。
将无信号、通信中断等常见设备故障按序编码,故障注入信息按照事先定义好的数据帧格式订购和发布,与仿真模型中的其他模块格式一致。故障类型编码如表2所示。
表2 故障类型编码
列车运行控制仿真系统各模块之间的通信可以采用UDP通信协议,但UDP是一种无连接协议,会出现丢包、重复、无序等情况,数据的安全性、完整性无法保证,对于列车运行控制系统这样一个复杂大系统的仿真来说并不适用。而高层体系结构HLA(High Level Architecture)能尽量涵盖 M&S(Modeling and Simulation)领域中所涉及的各种类型的仿真系统,并利用它们之间的互操作和重用性以及不断发展的新技术,来满足复杂大系统的仿真需求,仿真成员之间数据交互的实时性、安全性也可以得到保证。
在基于HLA的仿真系统中,每个模块都作为一个联邦成员加入到系统之中,联邦 (Federation)是指用于达到某一特定仿真目的的分布仿真系统,由若干个相互作用的联邦成员构成。所有参与联邦运行的应用程序都可以称为联邦成员。联邦中的成员有多种类型,如用于联邦数据采集的数据记录器成员,用于和实物接口的实物仿真代理成员,以及用于联邦管理的联邦管理器成员等,其中最典型的一种联邦成员是仿真应用。仿真应用是使用实体的模型来产生联邦中的某一实体的动态行为。联邦成员由若干相互作用的对象构成,对象是联邦的基本元素。HLA定义了联邦和联邦成员构件、描述和交互的基本准则和方法。需要说明的是,联邦可以作为一个成员加入到一个更大的联邦中,由此可以仿真极其复杂的系统。
采用HLA的技术体制,可以将单个仿真应用连接起来组成一个大型的虚拟世界。在这个虚拟世界中,可以进行大规模多系统体系仿真,特别适用于列车运行控制仿真系统的构建,也易于进行基于仿真的故障注入。在本仿真实验中,采用Pitch公司的pRTI1.3版本软件作为HLA仿真应用的基础软件层。
CTCS-3级列车运行控制系统包括地面设备和车载设备。地面设备由RBC(无线闭塞中心)、TCC(列控中心)、ZPW-2000系列轨道电路、应答器、GSM-R通信接口设备组成;车载设备由车载安全计算机、GSM-R无线通信单元、轨道电路信息接收单元、应答器信息传输模块、记录单元、人机界面、列车接口单元等组成。
根据CTCS-3级列车运行控制系统结构及接口关系,基于HLA的CTCS-3级列车运行控制仿真联邦的逻辑模型如图2所示。
作为故障注入工具的测试验证平台,基于HLA的列车运行控制仿真系统的每一个模块都有相应的故障-安全机制设计,在现有的平台基础上,对测试模块进行研究分析,给出与实际相符的故障案例库,并按照预先设计的数据格式对故障案例进行编码。
在实验室现有的基于HLA的列控仿真平台上,研究关键设备的故障注入方法,将仿真测试和故障注入相结合,仿真被测系统处于特定失效场景下,验证当属于某已定义故障空间的故障出现时目标系统是否能够正确处理,以及系统的响应是否符合软件设计的要求,同时也可以用来挖掘系统中的安全隐患。在仿真环境中,通过向系统引入故障,加速系统的失效,在短时间内模拟方案长期执行的效果,通过观测系统运行结果,对系统方案的安全性能进行验证和评估。
做好前期的分析设计工作后,设计相应的测试软件即故障注入软件,并能够实现如下基本功能。
1.实时数据传输。隔断并采集即将输入到列车运行控制系统的各类数字、模拟信号,同时将注入故障后的各类信号实时送入控制系统中。应能针对各类信号的特点选择不同的采样频率,确保不影响原系统运行的实时性。
2.故障设置。能够根据用户要求灵活设置各类故障,可选择的故障尽可能包括列车运行控制系统的各种常见故障,如应答器丢失、应答器报文错误、车载电源电压不稳、干扰故障、通信错误故障、轨道电路损坏等。
3.故障注入。按用户要求在特定的时间向特定的故障位置注入规定数量的故障。用户可以在故障注入过程中随时监视故障注入情况。
4.试验结果保存分析。能够直观显示故障注入情况,并以文件形式保存试验数据,以评测列车运行控制系统的各项性能指标。此外,故障注入系统应具有较好的可扩展性,以便系统功能升级。
根据以上要求,由VC++语言实现软件的编写。设计故障注入工具包含数据库操作模块,实现故障案例的导入与编辑;故障注入模块,包括选取案例的注入发送按钮与故障注入撤销按钮;案例分析显示模块,截获TCC、RBC、车载的数据信息实时显示,并生成列车速度-距离模式曲线。
通过对列车运行控制系统的调研分析,归纳部分故障案例,建立故障案例数据库。故障案例数据库作为故障注入软件的支撑数据,可直接从工具中调用和实施后续的故障注入仿真实验,并可以方便地进行改进和完善。
故障案例数据库格式:案例编号→故障位置及描述→目标系统期望行为响应。
故障案例示例如下。
1.区间轨道电路:进路前方轨道电路故障,锁闭进路状态为“使用”,RBC将向列车发送紧急停车信息CEM;车载设备生成一个缩短行车许可SMA并向RBC发送确认已执行有条件紧急停车信息CEM,列车根据缩短行车许可SMA实施制动。
2.道岔:道岔失去表示,联锁无法办理进路,司机将根据调度命令以目视行车模式 (OS)进行接发车作业;列车进入完全监控区段并获得新行车许可后,列车将自动转换到完全监控模式 (FS)行车。
3.RBC:RBC设备因故障停止工作,冗余设备正常启用继续工作;冗余设备故障,列车中断与RBC连接,通信超时后实施制动,降级运行;故障RBC删除列车注册信息,列车与RBC重新建立连接并获得行车许可后转换到C3控车。
4.无线通信设备:GSM-R单元故障损坏,RBC与列车中断连接,列车实施最大常用制动,降级运行,待重新连接后转入C3行车。
5.车载设备:车载无线通信设备单元故障,列车实施制动,运行速度降为C2允许速度后转为C2模式行车。
6.应答器:在期望窗口之前发现期望的应答器组或者应答器组的数据不可读,车载设备只向RBC发送位置报告,并报告应答器故障信息而不做其他应急反应,位置报告将还使用原来的位置参考应答器。列车通过了一组错误方向的应答器组,列车将实施紧急制动停车。
以道岔失表故障为例,选取道岔失去表示故障进行系统响应测试。当车站接、发车进路还未办理或锁闭时,站内道岔发生失去表示的故障,车站联锁设备将无法办理接发车进路,司机将根据调度命令以目视行车模式 (OS)进行接发车作业。列车以目视行车模式 (OS)出站。
3.2.1 设置测试故障案例
运行故障注入软件后,导入故障案例数据库,选择所要注入的故障,对目标系统实施故障注入。点击“故障注入”按钮之后,仿真系统被注入指定故障案例,即道岔模块发生失表故障,此时其余模块正常工作,并根据相应的故障-安全机制作出反应,并反馈到故障注入模块的分析区显示。
3.2.2 故障案例分解
对于道岔失去表示故障,列控仿真系统应检测到故障并作如下响应:发车进路道岔故障联锁无法办理进路,人工确认道岔位置;在请示调度员后,司机按压“越行”按钮;车载设备向RBC报告后自动转入OS,然后按固定限速40 km/h监控列车运行。列车越过出站信号机,向区间方向运行。当列车前端通过SN信号点处应答器组后,列车将向RBC报告列车位置。只有当新的进路占用与列车报告位置的时间间隔在6 s(待定)以内时,RBC才会给列车发送完全监控行车许可。否则列车将继续以OS向39信号点运行。列车进入完全监控区段并获得新行车许可后,将自动转换到完全监控模式 (FS)行车。列车运行示意如图3所示。
图3 列车运行示意图
3.2.3 实验分析
车站联锁发现采集不到相应道岔的状态信息后,即检测到了道岔的故障信息,将进站信号机关闭,而RBC此时也根据联锁发送的进路信息,向列车发送紧急停车消息,列车经过计算开始减速,并且列车计算结果可以在出站信号机前停车。在对比曲线中也可以看到,正常运行时列车是以140 km/h的速度通过车站,在故障注入后即开始减速,最终停车。如图4和图5所示,列车行车许可缩短紧急停车。
对该故障案例进行5次测试,测试记录如表3所示。
表3 故障概率统计
测试结果表明,该故障注入工具可以有效地对仿真系统的安全功能进行测试验证。经过故障概率的大量实验测试,表明该故障案例不会对系统造成致命伤害,仿真系统对于该故障案例已经设置了处理机制,且功能完好。对于其他故障案例均进行了相关验证,有效测试了基于HLA的列车运行控制仿真系统的故障处理机制及相关功能设计。
故障注入是一种有效的系统安全性能测试手段,不同的系统应当采用相适应的故障注入方法,针对列车运行控制系统的复杂性及特殊性,采用基于仿真的故障注入方法,为系统中的各个设备建立完整的故障测试案例数据库,并逐条进行有关测试,经试验证明切实可行。本文以典型故障案例为例,结合道岔失表故障对列车运行控制仿真系统关键设备的故障-安全机制作出了功能验证分析。通过基于仿真的故障注入验证,提高了系统测试效率,降低了系统测试成本,对于真实列车运行控制系统的安全保证具有实际意义。
[1] 石君友,李郑,骆明珠,陈帅.故障注入控制软件的设计与实现[J] .测控技术,2008,27(4):64-70.
[2] 王胜文,基于软件的故障注入方法研究[D] .哈尔滨:哈尔滨工业大学学位论文,2005.
[3] JEAN ARLAT,MARTINE AGUERA,Fault Injection for Dependability Validation:A Methodology and Some Applications,IEEE TRANSACTIONS ON SOFTWARE ENGINEERING,VOL.16.NO.2.FEBRUARY 1990
[4] Mealing S W,Hinsley W.System assurance by in-service reliability evaluation[C] .IEEE,2008
[5] 冯轩.软件故障注入方法探究.计算机光盘软件与应用[J] .2010,16.
[6] 万林,范明.列车运行控制系统仿真平台的研究.铁道通信信号[J] .2010,46(7):71-74.
[7] 张曙光.CTCS-3级列控系统总体技术方案[M] .北京:中国铁道出版社,2008.