计算机应用技术论文:一种基于模型的功能性危险源分析方法及应用摘要:为解决安全关键系统开发早期传统危险源分析方法不精确和不完备的问题,提出了一种基于SCADE(safetycriticalapplicationdevelopmentenvironment)模型的功能性危险源分析方法.利用SCADE数据流建立系统功能性体系结构模型和功能故障模型,将两种模型集成起来,同时,基于SCADE实现一种系统危险场景捕捉算法,对集成后的模型进行分析,得到系统的安全关键功能和系统危险源.将此方法应用于铁路信号计算机联锁系统,仿真结果表明,该方法可以提高功能性危险源分析的精确性和完备性.关键词:危险源分析;模型;安全关键系统;计算机联锁功能性危险源分析(functionalhazardanalysis,FuHA)[1]是安全关键系统安全分析的重要环节.传统的分析方法依赖于系统安全工程师,利用人工的方式进行,分析的结果完全取决于分析人员的个人经验,没有严格的统一标准.传统的FuHA分析的根本弊端在于缺少严格和精确的系统功能描述和系统故障模式表达,分析过程不是严格的数学推演过程.计算机联锁系统(computerbasedinterlockingsystem,CBI)是铁路应用领域中的安全关键系统,它对安全性有着极为苛刻的要求.CBI系统的功能是根据列车的位置检测,控制铁路车站范围内信号机、道岔等基础设备,为列车排列进路,以保证列车在车站的运行安全,提高作业效率.FuHA分析是CBI系统设计开发的重要环节,是实现系统功能、保障系统安全的前提和依据.近年来,基于模型的系统分析出现了许多研究成果[2-7].这些研究大多针对不同的应用对象研究形式化模型方法,重点集中在系统设计的模型验证与分析方面,而针对系统开发生命周期中早期阶段的FuHA分析却少有研究成果报道.作者以铁路信号CBI系统为背景,应用SCADE模型[8]对FuHA进行了深入研究.SCADE模型开发环境主要应用于软件开发中系统的建模、验证和代码的自动实现,应用SCADE进行FuHA分析首先需要对CBI建模,同时对系统建立故障模型,FuHA是对二者集成的综合模型进行安全分析.1基于SCADE模型的FuHA分析1.1SCADE模型20世纪80年代,SCADE在Lustre同步模型语言的基础上被开发用来进行航空系统的设计,90年代由EsterelTechnologies推广应用到安全关键软件开发领域.SCADE提供了一个交互的图形开发环境,SCADE模型的一个重要特点是它可以将模型转化为Lustre语言,Lustre语言具有严格的形式化语义[9].Lustre程序建立在对数据流操作的基础上,一个变量(或表达式)x代表了一个数据流,即无限数据值序列(x0,x1,…,xn,…),其中xn表示程序在第n次响应时变量x的值.一个Lustre程序是对输入数据流进行计算,输出数据流可以用数学等式来表达,如x=e代表n,xn=en.Lustre操作符是对数据流的全局操作,如x+y表示(x0+y0,x1+y1,…,xn+yn,…)这样的流.1.2功能性危险源分析(FuHA)FuHA一般在系统开发周期的早期阶段进行,它通过对系统和子系统(包括硬件、软件、外部环境等)的功能评估来确定系统危险源.CBI系统功能可以被划分为多个子功能,子功能又被分割成更细微层次的子功能.CBI系统的FuHA分析即将系统的失效条件、故障模式与系统功能关联起来分析功能失效和功能异常,确定系统的安全关键功能及关键因素,找出系统潜在危险和危险关联因素.图1基于模型的FuHA分析方法Fig.1ModelbasedFuHAmethod本文中提出了一种基于SCADE模型的CBI系统的FuHA分析方法.图1描述了基于SCADE模型的CBI系统的FuHA分析流程.2CBI系统建模2.1CBI系统描述CBI系统是用来实现铁路信号联锁功能的计算机控制系统,其功能是车站进路控制.CBI系统由传统的继电器联锁控制设备发展而成.信号机、动力转辙机和轨道电路是CBI系统的基础设备,系统通过对轨道区段状态、信号状态和道岔状态进行检测,根据车站作业的进路要求对信号机和道岔实施控制.CBI系统的功能原理如图2所示.其中,各层功能描述如下.①人机交互层的功能是操作人员通过操作界面向联锁层传递操作指令,同时接收来自联锁层的设备状态信息.②联锁层包括容错计算机硬件平台和联锁逻辑软件,其功能是处理操作指令,根据接口层的信息进行联锁运算.③接口层一般由结合电路和接口模块组成,是CBI系统的I/O部分,直接与室外设备相连.④室外设备是联锁系统的控制对象,包括信号机、转辙机和轨道电路.2.2CBI系统FuArSCADE模型的建立根据前文对CBI系统的描述,CBI系统功能性体系结构模型(functionalarchitectureSCADEmodel,FuArSCADE)由如下部分组成:操作表示功能模块(MMI);容错计算机平台(FT_CPU);进路控制功能模块(ILCK_CTRL);I/O与结合电路功能模块(IOM_IC);在SCADE建模方法中有数据流和状态机两种方式.SCADE模型具有严格的形式语义,保证了模型行为的确定性,在模型中所有的功能模块被称之为node,node实际上就是用户描述的算法、逻辑等功能单元.node的行为不会由于模型引用过程中上下文的变化而发生改变.建立CBI系统FuAr-SCADE模型,采用的是SCADE数据流建模方式.因为CBI系统是一个分布式系统,随着列车在车站的运行,系统行为是动态变化的,所以,在建模过程中必须处理系统的并发行为,保证系统模型行为的确定性,这种并发性为主要表现在相互关联的node之间,如ILCK_CTRL与IOM_IC两个node,ILCK_CTRL的输出会传递给IOM_IC,同时IOM_IC的输出又是ILCK_CTRL的输入条件,如果处理不好,则模型行为会存在不确定性,使后面的分析无法进行.本文中采用了SCADE的FBYoperator,使ILCK_CTRL与IOM_IC的运行周期错开,保证了模型行为的唯一性.CBI系统FuArSCADE模型如图3所示2.3CBI系统FaSCADE模型的建立要对CBI系统进行FuHA分析,需要建立系统的故障模型(faultSCADEmodel,FaSCADE).系统的输入信息错误、单元失效或不正确的操作都会导致系统故障.针对CBI系统的特点,将系统失效归结为系统外部基础设施失效和构成系统的功能模块失效两大类型.2.3.1系统外部基础设施失效这种类型的失效相对比较固定,关系到具体物理对象,对内表现为系统输入的故障,分析过程中主要考虑道岔、信号机、轨道电路的故障.以道岔为例来说明这种故障的建模方法.例1道岔作为系统的控制对象约束了进路的开通方向,通过位置指示向CBI系统提供输入,从CBI系统的角度分析,无论道岔物理机械结构发生什么样的异常,反映到系统的故障模式就是道岔位置故障.常规道岔向CBI系统提供2个位置表示,即定位表示和反位表示,道岔故障表现为如下4种情况:定位黏连故障,反位黏连故障,定反位同时黏连故障以及定反位同时失去表示故障(即道岔四开).利用SCADE对道岔建立故障模型,如图4所示.2.3.2构成系统的功能模块失效这种类型的失效难以表达,它直接关联到功能模块的处理逻辑,需要深入到功能细节进行分析.对于CBI系统功能模块的故障建模,主要考虑功能失效(包括硬件失效和软件逻辑失效),主要包括:进路控制功能故障,操作表示功能故障,联锁计算机硬件平台故障,I/O模块故障,结合电路故障等.以进路控制功能中的一种故障为例说明利用该类故障的建模方法.例2CBI系统的进路控制是系统的核心联锁功能.系统根据作业意图和站场设备状态来控制进路,整个进路控制过程可以分为:选择进路、排列进路、锁闭进路、信号开放和解锁进路5个步骤,对应到CBI系统则是5个子功能模块.信号开放功能包含了2种故障模式:一是联锁条件不满足的情况下错误开放;二是联锁条件满足的情况下不能开放.图5描述了进路故障的SCADE模型.3功能性危险源分析3.1分析方法FuHA分析的目的是确定系统的安全关键功能及关键因素,找出系统潜在的危险和危险关联因素.分析方法是基于SCADE模型确定FuHA的关键环节.3.1.1系统安全关键功能的确定对于安全关键系统的设计开发而言,应该使其安全关键功能最小化.CBI系统的设计开发遵循了两个国际相关标准“铁路应用:通信、信号和处理系统-铁路控制和防护系统的软件”标准EN50128[10]和“铁路应用:可靠性、可用性、可维护性和安全性(RAMS)规范和说明”EN50126[11].根据标准,把安全性理解为“不受不可接受的级别的风险所影响”.下面从功能模块的输出入手来研究确定安全关键功能方法.定义1一个系统功能可以定义为:M=[IPO],其中:I为功能的输入集合;P:I→O为功能的处理函数;O为功能的输出集合.定义2设函数Ω(x):x→{Dsw,Dsig,Dtc,Dtr,Φ}表示变量x与集合{Dsw,Dsig,Dtc,Dtr,Φ}的映射,其中:Dsw为CBI系统中的道岔设备;Dsig为CBI系统中的信号机设备;Dtc为CBI系统中的轨道电路设备;Dtr为列车设备;Φ为上述设备之外的其他设备.定理1CBI系统的一个功能M是安全关键功能,当且仅当对于M的输出O,映射函数Ω(O)≠Φ.证明这种确定安全关键功能的方法是易于理解的.对于CBI系统而言,一个安全关键功能必然直接或间接关系到列车运行的控制,也就是说CBI系统进行安全防护的对象是列车,由于Ω(O)≠Φ,则Ω(O)={Dsw}|{Dsig}|{Dtc}|{Dtr},其中{Dtr}表示功能直接关联列车;{Dsw}|{Dsig}|{Dtc}表示功能间接关联列车.因此,只要M的输出O,映射函数Ω(O)≠Φ,则M是安全关键功能,定理成立.基于定理1,需要利用SCADE设计相应算法,对CBI系统FuArSCADE模型中的功能模块进行确认.3.1.2CBI系统危险源的识别传统的危险源确认都是由分析师根据经验确定的,没有严格的规则.本文中利用SCADE模型方法,提出了一种基于危险场景捕捉的分析方法.根据CBI系统的安全需求规范和系统功能需求规范,设计算法获取危险场景;然后将FaSCADE模型和FuArSCADE模型中各功能模块的Input和Output引入到危险场景捕捉模型,利用SCADE对算法建模.3.2FuHA分析对CBI系统进行FuHA分析,需要将Fa-SCADE模型、FuArSCADE模型、安全关键功能识别模型和危险源“捕捉”模型集成,常规的方法是直接修改FuArSCADE模型,使FuArSCADE模型具有表达系统故障模式的能力.但这种方式实现起来比较困难,增大了集成扩展的难度,模型的规模相对庞大,而且使FuArSCADE模型失去了灵活性,不利于基于模型的后续开发工作.本文中提出了另一种集成方法,把故障模型以SCADEoperator的形式提炼出来,分别关联到FuArSCADE模型相应功能模块的In-put/output环节,这样FuArSCADE模型与FaSCADE模型仍然保持了相对的独立性,可以根据FuHA分析工作的进展情况逐步集成,一旦分析完成,拆掉FaSCADE模型,又可以利用FuArSCADE模型进行后续的开发工作,提高了建模的效率.对集成后的模型还需要为FaSCADE模型提供触发条件.至此,FuHA分析的全部条件已经具备,图6所示为集成扩展后的综合模型.对图6模型进行了仿真运行,选择单一道岔进路和单车运行场景,对于信号故障只考虑了进路始端单一故障情况,识别出3个安全关键功能和1个非安全关键功能,捕获了8个与道岔关联的危险场景,2个与进路信号关联的危险场景.仿真结果如表1所示4结论研究一种基于模型的功能性危险源分析方法,并以铁路信号CBI系统为应用案例,基于SCADE模型方法进行分析.给出了基于模型方法进行FuHA分析的一般步骤和方法,研究了安全关键功能确认和危