基于SCADE的列控车载子系统模式转换建模研究
2022-11-02王锡奎李亚楠
王锡奎,李亚楠
(1.南京铁道职业技术学院 通信信号学院,讲师,南京 210031;2.中国联通江苏分公司 云网运营中心,工程师,南京 210008)
列车运行控制系统(简称:列控系统)是信号系统中的安全苛求系统。当前列控系统车载子系统软件主要采用传统的以软件编码为核心的“V”型软件开发方法。该方法采用手工编码,编码工作量大,而且容易因人为因素造成软件缺陷而又极难在软件开发阶段发现,因而软件开发效率低下且软件质量不高。为解决此问题,深入分析车载子系统软件的模式转换功能需求,提出了利用安全苛求应用开发环境(SCADE)构建其图形化模型,并在模型仿真和验证的基础上生成软件代码从而提高该软件开发效率及质量的方法。
1 SCADE概述
SCADE以图形化模型设计为核心,包含了模型设计、模型调试仿真、形式化验证、代码自动生成、软件设计文档同步生成等安全苛求软件开发标准所要求的环节。基于SCADE的模型设计流程如图1所示。
图1 基于SCADE的模型设计流程
SCADE在安全苛求软件开发中的优势体现在3个方面:①SCADE的模型元素都具有严格的数学语义,所设计模型可精确、完整地描述软件功能需求;②SCADE提供模型静态检查功能用于语法检查,可以轻易找出模型中的语义和语法缺陷;③在代码生成方面,SCADE能在保证安全的前提下,完成对模型的建立并自动生成满足EN50128、IEC61508、DO-178B∕C、IEC60880、IEC62304、ISO26262等标准的嵌入式C语言代码。
2 车载子系统模式转换模型设计
2.1 需求分析
根据列控系统的运营需求,车载子系统设置了不同的驾驶模式,以更好地完成列车在不同运行场景下的速度监控。
以CTCS-3级列控系统为例,车载子系统有9种驾驶模式,分别是完全监控模式FS(Full Supervision)、目视行车模式OS(On Sight)、引导模式CO(Call On)、调车模式SH(Shunting)、隔离模式IS(Isolation)、待机模式SB(Stand By)、休眠模式SL(Sleeping)、部分监控模式PS(Part Supervision)和机车信号模式CS(Cab Signal)。其中PS和CS模式仅在列控系统降级至CTCS-2级时使用。
2.2 模型设计
在SCADE中,利用状态机对车载子系统的模式转换功能进行建模。将车载子系统不同模式定义为不同状态机,状态机内部包含特定算法,实现车载子系统在不同模式中的列车监控功能。模式之间的转换条件作为状态机之间的转移条件。模式转换模型分为2层,第1层包含车载子系统关闭和工作2个状态,第2层为车载子系统工作时的状态,包含7个状态机,分别对应车载子系统在CTCS-3级控制下的7种工作模式,见表1。
表1 模式转换模型状态说明
表2所示为模式转换模型的输入参数,表示模式转换的条件或事件。表3所示为模型的输出参数,表示当前驾驶模式。
表2 模式转换模型输入参数
表3 模型的输出参数
利用SCADE所建立的车载子系统模式转换模型见图2所示。该模型中curSpd模块根据列车位置速度信息计算当前允许速度(curSpd),DMIInput模块对列车司机输入进行解析,获得司机当前操作,如上电键按下(powerOn)、驾驶台关闭(conOff)、隔离开关闭合(isoSwitch)、调车键按下(SHKey)、目视行车键按下(OSKey)、司机确认(driCon)、收到休眠信号(RecSLSig)等,这些数据将作为模型中各状态之间转换的条件。如从FS模式转换到SB模式需要司机按下驾驶台关闭按钮,即conOff为真;从FS向OS转换需要列车速度为零且目视行车按钮被按下,即curSpeed为0且OSKey为真。
图2 车载子系统模式转换模型
2.3 仿真分析
这里采用SCADE提供的模拟仿真工具SCADE Simulator对已建立的模式转换模型进行功能正确性仿真验证。具体流程如下:对模型进行上电操作,此时模型处于待机模式;当接收到完全监控行车许可,此时车载子系统模型从SB模式转换到FS模式;选取如图3所示的两列列车在区间追踪运营场景进行仿真。本场景中列车2前方有7个空闲区段,其前方目标距离为10km,此时列车2运行速度为250km∕h,选取CRH3动车组制动参数为列车2的制动参数,如表4所示。
图3 列车追踪场景
表4 高速铁路CRH3动车组技术参数
在SCADE Simulator工具中运行模式转换模型,待运行结束后将所产生的数据保存在simuData.csv文件中。将该文件载入Matlab中,利用其绘图工具绘制速度防护曲线和列车运行速度曲线,如图4所示。从图中可以看出,模型能够为列车计算速度防护曲线,且能根据该曲线保证列车的运行安全,使列车在目标点之前停车。
图4 列车2速度防护曲线及运行曲线
2.4 代码生成
经过模拟仿真验证了模型的有效性后,使用SCADE代码生成器(KCG)自动将模型转换为标准C语言代码,部分代码见图5。
图5 车载子系统模式转换模型部分代码
由图5可知,函数ModeMng_init_ModeMng(outC_ModeMng_ModeMng*outC)为自动生成的程序代码中用来初始化的方法,该函数的名称有很好的可读性,便于代码阅读和代码追踪。ModeMng_init_ModeMng的参数outC为结构体指针,该方法的输入参数由outC引入。在SCADE模型设计过程中,每个变量在其作用域内只能被赋值一次,且所生成代码中不包含递归、死循环、动态指针、动态内存分配等容易造成软件缺陷的因素。因而,基于SCADE的模型设计不但缩短了车载子系统软件的开发过程,也满足了其高安全性的需求。
3 结束语
为提高车载子系统软件开发效率和质量,提出了基于SCADE的车载子系统模式转换功能的模型设计、仿真和代码自动生成方法:利用SCADE建立满足软件功能需求和安全性需求的模型;利用SCADE对模型进行仿真验证,可以在模型设计阶段找出并解决模型缺陷;利用SCADE KCG将模型自动转换为高质量代码,可以节约大量的软件手写编码时间。本方法已在面向特征的列控系统开发项目中应用,可以有效排除传统软件开发中不易发现的缺陷,减少测试工作量,节约开发时间。