APP下载

基于SCADE 的计算机联锁软件开发研究

2021-01-06

铁路计算机应用 2020年12期
关键词:数据流道岔代码

张 恬

(中铁第一勘察设计院集团有限公司,西安 710043)

计算机联锁(CBI,Computer Based Interlocking)系统通过技术手段建立信号机、轨道电路以及进路上道岔之间的相互制约关系[1]。随着铁路信号工程的集成化发展,CBI 系统接入和控制的设备种类不断增加。目前,城市轨道交通的CBI 系统增加了屏蔽门、防淹门、车库门等设备与接口,高速铁路的CBI 系统增加了与列控中心(TCC)的接口[2],以及与相邻车站CBI 系统[3]等的信息交互接口。不断扩展的功能要求使得CBI 系统软件复杂度日益增加,给CBI系统的软件开发和维护带来很大的压力。

CBI 系统应工作可靠,符合故障-安全原则,满足GB/T 28809-2012 规定的SIL4 安全等级要求[4];其安全性除了依靠采用冗余结构的系统硬件,还应注重其软件的安全性[5]。

高安全性应用程序开发环境(SCADE,Safety Critical Application Development Environment)是由法国研制的一个高安全性应用程序开发环境,提供了一套由模型驱动的软件开发工具包。目前,SCADE被广泛应用于高安全性需求的应用领域,例如航空、轨道交通、核电等。近年来,SCADE 开始应用于国内铁路行业信息系统开发。文献[6] 对基于SCADE的安全软件开发方法展开研究,文献[7] 研究并实现了基于SCADE 的联锁列控一体化系统,文献[8] 提出采用SCADE 实现闭塞分区逻辑功能的建模。

本文基于SCADE 的软件开发流程,依据CBI 系统的软件需求规约,研究利用SCADE 进行CBI 系统软件的开发。

1 基于SCADE 的软件开发流程简介

SCADE 是一种由模型驱动的软件开发方法,软件开发过程围绕形式化模型展开。为保证模型满足功能需求,在各个开发阶段可对所建立的模型进行仿真和验证,避免功能实现出现偏离。

基于SCADE 的软件开发流程见图1 所示。

图1 基于SCADE 的软件开发流程

SCADE 提供了一组支持工具,覆盖从软件需求分析到代码实现、验证测试全过程的软件开发工作,方便开发人员验证模型实现的正确性。其中,SCADE Architect 为系统建模与验证工具,SCADE Suite 为基于模型的控制软件建模、仿真、验证和自动代码生成工具,SCADE Test 为模型级自动化测试工具,SCADE Simulation MTC 为模型覆盖率测试和分析工具。SCADE 可根据经过验证的模型自动生成代码,支持自动化单元测试。因此,在SCADE 环境下,软件开发的核心工作是软件需求规约和设计,软件开发人员采用直观的、易于理解的图形化方式完成需求建模和软件设计;此外,集成测试和系统测试是通过基于软件结构的覆盖率分析和严格的形式化验证实现,可保证软件实现的正确性。

2 CBI 系统软件需求规约

2.1 CBI 系统软件基础功能

CBI 系统的主要任务是监视和控制进路上相关设备按照一定约束和程序动作,进而自动完成进路控制。信号机、道岔、轨道电路是主要室外设备,室内设备主要包括人机交互层、联锁控制层及I/O 接口层[9]。CBI 通过车站室外现场设备、TCC 及调度集中(CTC)等其它子系统提供的信息进行逻辑运算,再向车站室外控制设备输出控制指令,并将安全信息传送给TCC 等其它子系统。CBI 系统软件基础功能描述见表1。

表1 CBI 系统软件基础功能

2.2 CBI 系统基本结构

CBI 系统分为逻辑运算层、平台层、子系统接口层,联锁软件的开发主要是实现逻辑运算层。

对于具体的CBI 车站,车站配置的其它信号设备或有不同,如CTC、TCC、信号集中监测(CSM)系统等。为此,除了实现通用基础功能的处理逻辑,还需定义其具体的外部系统接口逻辑,形成适用于本站工程环境的CBI 逻辑。CBI 系统的基本结构如图2 所示。

图2 CBI 系统基本结构示意

3 基于SCADE 的CBI 系统软件开发

3.1 系统建模及控制软件建模

CBI 系统由室外现场设备的输入驱动,且需要与CTC、TCC 进行实时通信,是一种典型的面向数据流和变化传播的反应式系统。对于这样的系统,系统建模不仅需要考虑系统各个状态间的转换关系,还需考虑在同一步骤中状态与环境之间复杂的约束关系,CBI 系统的总体功能模型如图3 所示。

图3 CBI 系统总体功能模型

总体功能采用层次化结构设计,按照基础功能可划分为进路控制模块、信号控制模块、道岔控制模块,各个子功能模块间相互独立。逻辑处理模块通过对子功能模块接口函数的调用来完成各模块的输入、输出和逻辑处理,实现联锁基础逻辑功能。

SCADE 提供数据流图和安全状态机2 种图形化建模方法[9-10]。其中,数据流图是一种基于LUSTRE语言的建模语言,以图形化方式展现数据在系统中的流动和处理过程,主要用于连续性系统的建模。安全状态机是一种基于同步假设的可视化建模语言,能直观的描述系统控制流和逻辑判定功能,主要用于离散系统的建模。

以进路锁闭模块为例,在SCADE 中建立其对应的数据流图模型,包括“锁闭检查”和“锁闭执行”2 部分。其中,进路锁闭检查数据流见图4。

图4 进路锁闭检查数据流

在锁闭条件检查阶段,重复检查进路上各个控制对象的状态,要求轨道电路区段处于空闲状态、所有道岔位置正确、本咽喉区没有建立敌对进路,且另一咽喉区也没有建立迎面敌对进路。在图4 中,输入的现场道岔、敌对信号、道岔及照查数据,分别 由CheckSecZy、Check Opp Signal Open、Check Switch Position 完成逻辑运算后,输出结果Lock Con;若Lock Con=ture,表示满足进路锁闭条件;反之,表示进路锁闭条件不满足。

锁闭执行功能的状态图如图5 所示,包含初始状态(init)、进路锁闭成功(RouteLockSucc)、进路锁闭失败(RouteLockfail)3 个状态。

图5 进路锁闭执行功能的状态

当进路锁闭条件满足,转移到RouteLockSucc 状态,同时将进路标志设置为信号开放(opening),并将信号机、道岔、区段锁闭到规定位置,发送进路锁闭成功命令(LockSuccess);当进路锁闭条件不满足(LockCon==false),则转移到RouteLockfail状态,发送进路锁闭失败命令。

3.2 代码生成及模型覆盖率分析

SCADE Simulation MTC 可检查和分析状态图和数据流图模型具体实现的需求以及未覆盖的需求。以联锁逻辑模型中的任意节点为例,对该节点进行MTC 覆盖率分析。当节点插装完毕后,运行一个周期,得到该节点初始测试用例结果的MTC 覆盖率分析情况。按照MC/DC 覆盖准则,需增加7 个输入条件分别有且仅有一个为假的情况,依据提示信息增加或修改测试案例,最终使得覆盖率达到100%。测试结果如图6 所示。

图6 SCADE Suite 测试结果

SCADE Suite 中KCG 工具能够自动生成联锁系统工程的C 语言代码,如图7 所示。C 语言代码覆盖系统模型的所有输入、输出和功能逻辑,保证模型与代码的一致性。

图7 SCADE Suite 中KCG 工具自动生成的C 语言代码文件

4 结束语

传统的CBI 软件开发方法中,需求规约、概要设计与详细设计多为自然语言描述,易出现定义模糊和二义性问题,且软件开发以耗时费力的代码编写和测试为主,代码的准确性和可读性难以保证,加重后期维护的难度。此外,单元测试和集成测试需要借助第三方验证工具和编写大量测试用例,工作量大,存在验证不充分的问题。

SCADE 提供的开发工具涵盖需求管理、模型建立、模型验证、代码生成、验证测试全过程,开发过程清晰、直观、连贯;利用SCADE 开发软件,开发工作的重点集中在前期阶段,且确认工作与开发过程能够同步进行,支持V 模型软件快速开发模式,帮助开发人员有效管控软件开发风险;SCADE 代码生成器可快速产生面向工程的C 语言代码,自动生成的代码规范、可读性好,且可追溯。

经过初步测试验证,利用SCADE 工具开发的CBI 系统软件功能符合预期,可大幅缩短开发时间。

猜你喜欢

数据流道岔代码
汽车维修数据流基础(下)
中低速磁浮道岔与轮轨道岔的差异
场间衔接道岔的应用探讨
既有线站改插铺临时道岔电路修改
创世代码
创世代码
创世代码
创世代码
一种提高TCP与UDP数据流公平性的拥塞控制机制
基于数据流聚类的多目标跟踪算法