过程工业控制系统及其软件的功能安全

专家分析

彭瑜,男,中国自动化学会理事。中国自动化学会仪表和装置专业委员会常务委员。中国自动化学会专家咨询委员会委员,上海市自动化学会常务理事,中国仪器仪表学会专家委员会委员,PLCopcn国际组织中国委员会主席。长期从事现场设备的无线通信等方面的研究。

从实现过程功能安全要求的基本规范IEC61511所给出过程工业中工厂安全保护防灾结构体系(见图1),可以清晰地看出安全仪表控制系统SIS是过程工业预防灾害和减灾的两个重要环节,确

保安全仪表系统的功能安全则是预防和减灾的一种基础保证。本

文希望从功能安全的基本概念出发讨论怎么才能切实实现控制系

统的概念安全。

圈1工厂安全保护防灾结构体系

40-A自Ui慧剿。罂慧腮

万方数据

上海工业自动化仪表研究院彭瑜

控制系统功能安全的国际标准

IEC61508/GB20438《电子/电气厂可编程电子安全相关系统的

功能安全》是一个宏标准,规范了满足安全相关系统功能安全的基本要求和规则。通过应用严格的系统性的过程,以可追溯性,关键性分析、验证(verification)和确认(validation)的程序为重点,来评估是否满足功能安全的标准要求。IEC61508标准的一个重要突破就是制订了一整套完整的开发程序和一系列的技术措施,通过严格的质量管理与全生命周期的程序控制。达到实现避免故障、排除故障及一定程度上容许故障的目的。

1EC

61508共有8个部分,即:

IEC

61508-0:功能安全和IEC

61508I

IEC61508一l:一般要求I・

IEC

61508-2:电气/电子,可编程电子安全相关系统的要

求I

IEC61508-3:软件要求;・

IEC61508-4:定义和缩略语I・

IEC

61508-5:确定安全完整性等级的方法示例l

IEC61508-6:IEC

61508—2和IEC61508・3的应用指南I

IEC61508-7:技术和措施概述。

在不同应用领域更细化和具体实现功能安全,又开发了进一步的规范,如:

实现机械功能安全要求的基本规范IEC

62061。

实现过程功能安全要求的基本规范IEC61511。・

实现核电功能安全要求的基本规范IEC

61513I

实现医疗设备的功能安全要求的基本规范IEC60601l

实现铁道运输安全的规范EN

50128,

控制系统功能安全的基本概念

安全系统的关键性分多个层次:

安全关键(safcty-critical)系统:单个缺陷或失效会造成危

险的故障,如核电站原子反应堆的停堆系统。

安全相关(safety-relevant)系统:单个缺陷或失效与第二

个缺陷或失效会造成危险的故障,如石化行业的安全仪表系统。

非安全相关(interference・free)系统:即使多个缺陷或失

效也不致造成危险的故障。

对安全要求最高的安全关键系统,必然为实现其安全要求而最耗费时间、成本最高,认证的过程和程序最复杂。对安全的要求相对较低的安全相关系统,以及对安全要求更低的非安全相关系统,相应在时间、成本和认证所耗费的努力逐级递减。

在IEC61508的标准中,对石化和化工行业广泛应用的安全相关系统有着严格的定义和要求:

必须在受控装置EUCJ临近风险或危险状态情况下,能执

行所要求的安全功能,使EUC达到或保持安全状态,

依靠安全相关系统本身,或与其它E/E/PE安全相关系

统、其它技术的安全相关系统或外部风险降低设施共同作用,达到所要求的安全功能必需的安全完整性。例如图2所示的一个化工厂常见的加热搅拌系统,除了用圆圈标出的是一个安全仪表系统(SIS)而外,安全阀就是使用机械保护的安全系统,它们配合使用达到必需的安全完整性。

这将安全相关系统在工厂预防和减灾中的作用明确规定如下:首先,由安全相关系统与外部风险降低设施共同作用,使受控设备达到必要的风险降低量,以满足所要求的允许风险。其次,安全相关系统是在接受命令时,采取适当的顺序动作防止EUC进入危险状态。一旦安全相关系统失效,也属于导致危险或危害的事件。第三,即使还有其他的具备安全功能的系统,但所指定的安全相关系统仅靠其本身的能力(而非其他系统)就能达到所要求的允许风险。第四,安全相关系统一般分为安全控制系统和安全防护系统,并且具有两种操作模式。

从安全相关系统的构成来看,它可以是EUC控制系统的一个组成部分,也可用传感器和/或执行器与EUC接口,即可通过实现EUC控制系统中的安全功能(也可能通过分开的和独立的附加系统)达到要求的安全完整性等级,或者利用分离的、独立.专门的安全相关系统实现安全功能。

这就明确告诉我们,安全相关系统的功能可能包括:用于防止危险事件发生,即安全相关系统一旦执行其安全功能,则不致发生有危险事件;用来减轻危险事件的影响,即通过减轻后果降低风险。或者同时具有上述的组合功能。

人也可作为安全相关系统的一部分,例如,人可以接收来自可编程电子装置的信息,并通过该装置按接收信息要求执行安全动作。

安全相关系统包括执行安全功能所需的全部硬件、软件以及支持服务(如电源、传感器和其它输入装置、执行器和其它输出装置也包括在安全相关系统中)。

万方数据

安全相关系统的技术基础范围可以十分广泛,包括电气,电子,可编程电子、液压和气动等。

图2

SIS和安全阀配合使用的化工加热搅拌系统的P&ID

由于在工厂安全保护防灾的体系结构中对不同的装置,系统,甚至系统内的各个子系统或部件的安全要求常常有很大差异,因此,IEC61508标准允许对一个系统的子系统和部件进行独立的评估。所以,我们在谈论功能安全时要严格区分所指的对象是系统,还是构成系统的部件或子系统。

控制系统的安全完整性及其等级

安全完整性是指在规定的条件下,规定的时间内,安全相关

系统成功地实现所要求的安全功能的概率。众所周知,控制系统由构成其系统的各种硬件(控制系统装置,现场仪表、通信网络等等)以及执行控制要求和功能的软件综合而成,因此控制系统的安全完整性由硬件的安全完整性和系统的安全完整性组成。硬件安全完整性是在危险失效模式中对应于安全相关系统安全完整性的硬件随机失效的那一部分,一般可以通过所要求的硬件安全功能失效率予以量化,而系统安全完整性则是指在危险失效模式中对应于安全相关系统安全完整性的系统失效的部分(包括软件失效)。控制失效与避免失效涉及设计,操作模式等诸多环节。显然,硬件随机失效和系统失效的机制不同,控制失效的方法也不同(见图3)。

可以通过改变设计、生产过程、摄作梗式、操作指令或其他影响因子,来清除原因确定的失效,

鼍免失效估算由于随机硬件失效造成的每控铡失效

个安全功能的失效概率

田3控制系统失效机理

票鬻测驰篙貉41

—五DT01神A彳i石N—]亭鬲嗣。膏五丽

专冢分析

在安全相关系统中,安全完整性的要求用4个离散的等级予以划分,IipSltA,SIL3。SIL2和SILl。安全完整性的等级越高的安全相关系统,其执行所要求的安全功能的概率也越高。

根据安全相关系统的使用方式、所要求发生的频率,可分为低要求操作模式和高要求(或连续)操作模式。低要求操作模式对应于每年发生风险的次数多于等于1次的安全相关系统;高要求(或连续)操作模式对应于每年发生风险的次数少于1次的安全相关系统。表l是IEC

61508l/GB/T

20438规定的低要

求操作模式下的安全完整性的目标失效概率和目标风险降低因子,表2是高要求(或连续)操作模式的安全完整性的目标失效概率。

SIL3被认为是单个可编程系统中可达到的风险降低的最高等级。

寰1低要求操作模式下的安全完整性的目标失效概率和

目标风险降低因子

安全完整性等级目标平均失效概率

目标风险降低因子

(SIL)

2l旷一<104>10000一≤10000032104一<10

>1000一!1000022lO。’一<10。2

>100一!1000

>10。’一<10。1

>10一!100

表2高要求(或连续)操作模式的安全完整性的

目标失效概率(每小时)

安全完整性等级

目标平均失效概率平均发生1次失效的

(SIL)

(每小时)

年数

4>10一一<10。811400一114000

3>10一一<10’71140一114002≥10~一<10。6114—1140l

>104一<10。5

11.4—114

安全系统的多样性(diversity)原则

安全系统可以采取多样性原则克服可能发生的故障,或设计

分析中存在的不确定性。多样性是指用不同方法执行所要求同一功能。例如:可用不同的物理方法或不同的设计途径来达到多样性。

多样性分为;①信号多样性;②功能多样性,③设备多样性l④软件多样性(如指令运算的多样性),⑤人员多样性等等。其中较为常用和有效的是信号多样性和功能多样性。

对所采用的多样性措施是否适当应加以论证。为了保证能切实执行多样性,对设备的多样性或仪表控制系统的软件多样性所进行的论证,必须扩展到这些设备的硬件、软件部件,如实时操作系统RTOS。

图4是S7.400F运用指令运算的多样性和时间冗余来提高安全功能的可靠性。操作数A.B在CPUI进行。与”运算,结果

42

自勋化.博览2010年12月刊

7旺『in冒啊五T兀玎r.j万霸oRAM五一

万方数据

为Cl

A,B经过编码变成字A,B,在CPU2qb傲。或”运算,

结果为D=/C。在比较器中进行比较运算,仅当D≠/C时输出停机信号。

!!竺竺!!!竺!塑!空

-Time

圈4运用指令运算的多样性和时间冗余来提高安全功能的可靠性再如某核电站的紧急停堆系统由两个完全独立的系统构成。其安全控制系统由不同的供应商提供。一个停堆控制系统采用安全PLC系统,由3个独立的3机冗余表决的分系统(D、E、F)组成(见图5)。每个分系统都具备停堆功能,但其停堆输出还要

送给3取2的继电器硬逻辑进行表决,最终给出停堆信号。该安全PLC系统硬件平台配有操作系统,运用符合工业控制编程语言的国际标准IEC61131-3所规范的功能块图语言(FBD)编制应用软件。这套停堆控制系统采用了综合法(IntegratedApproach)设计。

值得注意的是,为了实现安全系统的机理多样性,还设置

了另一套完全不同机理的停堆系统,通过将有害的中子吸收剂(poison)注入反应堆中的慢化剂(moderator)的方法进行停堆

控制。这一停堆控制系统采用没有操作系统的工控机硬件平台,安全控制软件运用高安全的具有子集的MODULA-2语言编写。这一套系统使用的是另一种设计方法一合理设计流程法(rational

design

process),用确定离子室记录的功率信号的合理性来检查

异常差错信息。由此可见,在要求极高的安全关键系统中充分运用了多样性的原则,有:机理的多样性、设计方法的多样性、设

备的多样性,编程语言的多样性,这样就从系统的层面上把同时发生差错的概率降至尽可能的小。

田5采用3套3机冗余表决的安全PLC系统构成的停堆控制系统

5重视处理假事件

各种安全系统(包括紧急停车系统ESD)如果对假事件作出响应,造成非计划停车,不但要付出高昂代价,而且在大多数

OTU3

情况下具有危险性。大量的假报警还会导致操作人员产生矛盾心理,以至于对危险的真报警都不予理会,或者反映很慢。

产生假事件的原因:①现场设备的硬件故障,如压力开关、电磁阀的线圈或常闭触点存在高电阻,PLC的I/O模块有故障,现场设备中电子器件有故障,热电偶断偶,热电阻断线等,这些明显的设备故障都会引发假事件。②一些公用故障如电源、气源故障也会引发假事件。⑦缺乏维护,不及时对工作有缺陷的仪表、传感器进行测试、校验,是引发假事件的重要原因。

下面讨论信号多样性问题。看一个用3个浮球液位开关测量液位的简单例子(图6)。我们可以有4种配置。采用单信号、双信号还是三信号更有利于安全和可靠的平衡呢?概括地说:采用单机(单信号)系统不安全且不可靠,在故障安全(假事件)或危险方面存在50/50的概率l采用双机(双信号)系统配置为二取一(1002),可能较安全,但存在高的假故障率,双机(双信号)系统配置为二取二(2002),由假事件引起的故障率较低,但安全性差;三机(三信号)冗余系统为三取二(2003),提供可以接受的安全与可靠的平衡。

圉6用3个浮球液位开关测量液位可能的配置

显然,S1S/ESD不能选择单机(单信号)系统。选用双机

(双信号)系统,在一定程度上可达到安全和可用性。二取一(1002)安全性较好,但可靠性及假事件的影响大,二取二(2002)可靠性较好,安全性却较差。即使双机(双信号)系统具有很好的自诊断性能,可以确定采用哪个通道或处理器故障,将坏的通道或处理器剔除,但这时双机系统降格为单机系统。三取二(2003)独特的优点是不考虑哪个通道发生故障,是怎么发生故障的;也不完全依靠自诊断来确定哪个通道投用。其亮点在于它仅要求所接收到的信息。三取二表明,若有一个信号不同于另外两个信号,立即报警,而这两个信号相同的通道处于安全工作状态。

从图6所示的例子可知,如果流程要求用于液位测量的仪表每年只能发生1次故障,而且每半年对浮球开关进行一次维护测试,那么对于不同的浮球液位开关配置,因故障造成危险的年概率如表3所示。

万方数据

裹3浮球液位开关不同配置的因故障造成危险的概率

仪表信号配置

故障危险概率

假事件故障概率

故障危险概率(每半年维修1次)

lool1/101/10l/20l002l/100

l/51/16002002l/5

l门00l/202003

l/33

i/33

l/534

软件的可靠性难以精确量化

软件可靠性的基本问题是:①软件不受物理故障的影响。随

着硬件元器件的可靠性越来越高,并可以采用冗余技术,因而安全问题的矛盾集中到了软件,以至于今天我们看到大多数的系统失效源自软件。失效常常由于一些非明显的事件组合造成,而不是由于机械应力超过一定程度造成。而这些非明显因素往往事先没有估计到,所以在软件的编制中考虑不到。②软件是由人来设计的,软件的设计不可能面面俱到,总有些因素在设计时没有考虑到,因此,设计的缺陷导致软件的故障。③数字系统本质上是非连续的,所以输入对输出的映射一定是不连续的。④软件建立在模型化和测试的基础上,这些工作都是人在做的。人难免犯错误,所以影响软件的可信度。

因为以上这些不可避免的问题,可以得出软件的可靠性难以精确量化的结论。另外,从趋势上讲,软件和人为因素导致失效,事故和停机的比例越来越高。因为现在对软件的依赖越来越高,软件变得越来越复杂,因而难以控制。人犯错误不可避免。硬件失效可能是系统失效的原因,系统的失效会引起软件的失效。有鉴于此,要保证工业控制软件的功能安全就不得不依赖于对软件进行严格的验证和确认。

工业控制软件的功能安全概念和方法

IEC

61508—1规定了整体安全生命周期的16个阶段,包括:概

念,整体范围定义,危险和风险分析,整体安全要求,安全要求分

配,整体操作和维护计划编制,整体安全确认计划编制,整体安装和试运行计划编制,E/E/PE安全相关系统:实现,其他技术安全相关系统:实现,外部风险降低设施:实现,整体安装和试运行,整体安全确认,整体操作维护和修理,整体修改和改型,停用及处理。与软件相关的是第9阶段“F./E/PE安全相关系统:实现”在IEC61508—3中详细地规定了执行安全功能的软件如何满足面:软件质量管理系统,软件安全生命周期要求,软件功能安全么要求,以及如何来验证工控软件达到了功能安全的标准。IEC61508—3的突出贡献在于制订了一整套完整的开发程序和一系列避免故障、检测故障和排除故障,以及容许存在故障,从而保证嚣燃一鱼咝4—A

MAfr石N一——

PANORAMA

技术措施,通过严格的质量管理与全生命周期的控制程序,实现评估。它给出的是在软件的安全生命周期的各个阶段应该满足什功能安全的要求。它规范的工控软件的功能安全问题包括以下方

专家分析

软件的安全完整性能。总之,IEC61508—3给出了在安全相关系统的软件编制时应遵循哪些规范就能够达到功能安全的要求。这好比它编织了安全软件开发的。鸟笼”,以及在“鸟笼”里飞必须遵守的规则和约束;一旦飞出。鸟笼”就不能保证软件的安全。但它并没有具体规定工控软件在选用编制系统软件和编制应用软件时,应该如何选择适当的编程语言、指令集和数据类型,就可以从基础上保证软件的功能安全性。这些问题有些可以通过IEC61508・6(IEC61508—2和IEC61508.3的应用指南)和IEC

61508

-7(技术和措施概述)找到相应的具有实用性的参考规定和资料,有些就必须再进一步查找其它围绕不同应用领域的工业控制软件的功能安全的规范,如美国核管制委员会NRC发布的《(核电站软件语言导则》.PLCopen国际组织发布的在IEC61

131・3的

开发环境下有关机械功能安全的规范《SaltySoftwareTechnical

Specification))等等。

众所周知,安全相关系统包括硬件、软件,软件必须运行于硬件系统环境中才能实现其价值和功能,在完成系统的功能安全时,一定要认识这二者之间的关系。通过图7所揭示的IEC61508-3与IEC61508—2的关系就能一目了然:IEC61508-2是总体,IEC61508—3只是局部。尽管它们可能是由不同的团队独立开发,但最终还是要集成起来经过总体检验,才能够判断是否满足安全要求。

图7在实现系统功能安全时IEC61508-3与IEC61508.2的关系

软件的安全完整性等级采用表1低要求操作模式下的安全完整性的目标失效概率划分。达到SIL4等级的软件相当于每1.14年至11.4年之间发生1次失效。

8安全系统的软件构成

与控制系统的软件构成一样,安全系统的软件也包括系统软件和应用软件两部分(见图8)。它们分别用全可变语言(full

variability

language,FVL)和有限可变语言(1imitedvariability

language,LVL)编写(见图7).这些概念都是将软件引入功能安全时建立起来的。

什么是全可变语言呢?其实此类语言就是计算机编程人员广泛使用的语言,它提供实现各种功能和应用的能力。典型的利

44慧然乒雩2黧三熙

万方数据

用全可变语言的系统就是通用计算机。在过程工业中,只有在嵌入式软件(一般指固件或系统软件)中才使用全可变语言,极少在应用程序中使用。ADA、C、C++、指令表IL、Pascal、Java、SQL均属于全可变语言。

有限可变语言在IEC

61

508—4中定义为:在工业和商业可编

程电子控制器中使用且范围局限于应用程序的文本的或图形的软件编程语言。例如:引自IEC6113I-3和其它标准或规范的有限可变语言,用来编写PLC系统的应用程序。它们分别是梯形图语言LD・布尔代数语言:带有增加某些记忆指令能力的,基于布尔运算符(女I]AND、OR和NOT)的低级语言I功能块图语言FBD:除布尔运算符外,可使用更复杂的功能,如数据传输文件、块传输读/写,移位寄存器和序列发生器指令等;顺序功能图语言SFC:有顺序之程序的图形表示,由相互联系的步骤、动作和带转换条件的定向连接线构成。

图8功能安全用编程语言的构成

软件功能安全对编程语言的要求

编程语言并不是专为安全系统开发的,它们在出现安全软件

的概念之前就发展了很长的时间。所以要用FVL和LVL完成安全系统的软件编写,首先必须对这些语言和用它们编写的程序提出要求和进行评估,以确定在什么条件下使用这些语言就能确保安全软件完成其保证功能安全的任务。

从另一方面来看,由于嵌入式系统已渗透到各行各业,这些年来,凡是对安全有重要要求的行业都很关注这个问题,制

定了各自的规范。例如汽车行业建立了汽车工业软件可靠性协会MISRA,发布了专门用在汽车行业的c++语言的子集MISRAC++。美国核管制委员会NRC早在1996年就发布了《核电站软件语言导则》,之后97年又公布了其修正版NUREG/CR

6463

Rev.1。因为其权威性,直至现在它已成为安全软件的经典规范。

不仅仅是核电,其它行业的软件安全问题也经常以此作为引经据典的文献。

在美国的核管制委员会发布了《核电站软件语言导则》

NUREG/CR6463Rev.1中,对用高级语言编写的用于安全系统的

软件进行了安全评述,着重指出以往发现的软件安全性问题和缺陷,从对应用重要性的理解、设计的方法论、学科发展和测试等方面加以阐述。

NUREG/CR

6463

Rev.1将软件安全的属性按三级架构加以分

类和编排:顶级属性.中间属性和基本属性,如图9所示。豳9软件安全的三级架构属性

软件的可靠性属性是在所规定的条件下软件的可预测、且恒定一致的性能。由于软件的可靠性属性旨在减少在软件开发实现期间可能被导入源代码而造成误操作的故障,所以此顶级属性对安全来说是很重要的。

软件的鲁棒性是在异常条件或事件下,安全系统的软件以一种可接受的方式进行操作的能力。由于它加强了软件处理例外情况、从内部故障中恢复,以及阻止因异常环境而致使故障传播的能力,因此此顶级属性也很重要。

软件的可追溯性表现为:①对源代码和所引用的程序库部件的源头进行检查和识别-⑦通过对开发过程的可行性进行检查,来验证已执行的代码在其开发过程中是否按规范的方法完成其实现;⑦审视代码与高一级的设计文档相关联的能力。此属性之所以重要是因为这将便于对软件进行验证和认证(V&V),这是软件质量保证的另一方面。

软件的可维护性是在软件交付使用后若需对源代码做改动时,导致将故障引入的可能性减少的必要手段。此属性之所以对安全来说很重要,是因为在对软件进是因为在对软件进行适应、校正或完善期间可以尽量减少可能发生的误操作的故障。

根据IEEE所给出的规定,软件可靠性是在软件编制,调试和执行运行全过程的环境下,既可以是在所定义的时间间隔内和所定义的条件下成功执行的几率,也可以是按照命令成功操作的几率。软件执行完成是其对于系统存贮器和程序逻辑恰当行为的结果。这

墨嚣三’哥娃::曩

【存贮空问藕用的可预舅性l

控制流的可预舅性l。时序的可琢舅性.]

I-动态存贮分配的・4、化

一结构最大化

L内存分页和存贮空同对

二嚣蔫荔耄蓑雌批L尽可蠢少用任务

挠的最小化

一子程序的进入点和出口锅妙一用务

一不用赋值语句一界面歧义最小化一采用敦据健入

一准确度.精度进行记曩一捧定优先级

一蕾免执行于程序产生的

状态变化一将求值与赋值焉开一动奄绑定量小化

图lO可靠性的中间属性

万方数据

意味着软件所产生的适时输出是编程人员对所使用的语言结构和运行期间环境特性理解的函数。因此可靠性的中间属性包括:存贮空间利用可预测性(软件不致造成处理器会向非预期的或不允许存贮空间进行存取的高概率);控制流可预测性(处理器按编程员预期的顺序执行指令的高概率)t时序可预测性(软件在所定义的运行环境下满足响应时间和处理能力约束的高概率)・数学结果或逻辑结果可预测性(软件在所定义的运行环境下产生编程员所预期结果的高概率)。详见图lO。

所谓软件鲁棒性是指在异常或其他未曾预计的情况下软件继

全系统而言鲁棒性之所以重要是因为在一个意外或偏离额定工况时会发生未曾预料的事件,在这样的情况下软件持续的对系统监控和控制的能力仍能有效作用。软件鲁棒性的中间属性和基础属性见图1l。

图11软件鲁棒性的中间属性和基础属性

软件的可追溯性是指与软件设计相比较,安全软件的那些支持其正确性和完整性验证的属性。可追溯性的基础属性有:可读的可控使用。

软件的可维护性是为了有效减少在对软件进行修改时可能引入的差错。会影响安全的与可维护性有关的中间属性(见图12)包括:可读性一便于项目人员对软件的理解的软件属性;数据的改软件时意想不到的副作用和次生的影响减至最小;函数的内聚可移植性一避免一种语言的非标准函数对安全的重大威胁;可塑田12可维护性有关的中间属性

名慧蒜熊燃4S

—百IJ亍。葡哺i耵石葡——乒A对。再五l-晤

续执行的能力。鲁棒性的同义词是耐久性(survivability)。对安性(这也是可维护性的属性),内嵌函数的可控的使用,编译库抽象一对于那些代码被划分和模块化的区域,这样做可以使在修性一对代码中的软件元素给予设计水平的函数适当的存贮地址,性一将可能修改的代码区与软件代码的其余部分隔离开。

专冢分析

0编程语言实现软件功能安全的方法

在NRC的NUREG/CR

6463Rev.1完整版本中给出了将9种编

程语言(Ada,Ada95,∞++,Pascal,PL/M,IEC61131・3规定

的梯形图、顺序功能图,结构化文本和功能块图)用于安全系统时,应该关注它们特定的存在问题和如何加以克服注意点。譬如,对于C语言来说,是其指针的初始化问题l对于IEC

61131-3

所规范的编程语言,则应关注其时序、正常运行的监控,以及故障处理等问题。

从顶级属性中的可靠性、中级属性中的可预测性的控制流和基础属性中的在使用前变量的初始化这三方面导出对指针初始化的指导原则。所有的变量和指针在使用前都应该初始化。C语言支持通过说明来指定初始值的方式进行初始化,但并不要求所有的对象(指变量、数据结构或数组)进行初始化。在若干情况下,一个对象的初始化不仅要为对象的存贮地址指定一个特定的位的组合值,而且还要采取特殊的动作来为对象的生命(例如为对象赋予对应的源)进行平滑初始化。在c++中,可能要考虑任意相关数据作为对象,并提供构造数据组一个实例的工具。这样便会以系统的方式破坏数据组当前的实例。

考虑到上述情况,必须对初始化提出以下导则:①不要对超出其说明范围的变量自动使用指针。存贮在指针的值对一个自动变量会包含超出其函数范围的无用输入。②指针的初始化,初始化问题也会在指针中发生。在安全系统中所有c语言中的指针变量,其初值都应该为null;所有C++中的指针变量,其初值都应该为0。在被使用之前,指针应对一个有效值予以测试。当一个指针被定义时,它没有一个地址与其相关联。使用一个未初始化的指针,会造成重写未曾预想到的指针的存贮地址。错误地重写存贮内容会引起严重的问题,包括对系统的崩溃。⑦要确保每一个指针的说明间接的运算符都是存在的。每个指针都应该有一个间接运算符(。)。

IEC

61131.3所定义的5种语言除指令表语言(IL)与汇编语

言相似外,其它语言都纳入了NRC关于编程语言的导则中。对这些语言特定的指导原则源于鲁棒性顶级属性和异常处理的中间属性。应该专注于在机组紧急停车时PLC的行为。通常此时所有的输出均应切断,但往往并非总是如此。一般PLC系统总是设计成在紧急停车时系统处于故障安全状态。某些PLC在遇到这样的情况时具有处理器能自动停止主梯形图程序的执行,转而执行。故障程序”的子程序。这使系统的设计者可以决定采取适当的动作,包括以一种安全的方式让系统停下来。问题在于:IEC61131—3规范中未涉及到允许PLC系统本身包含有某种预先设计好的硬件故障程序,当检测到一定范围的故障条件时便会自动执行。不过,IEC61131.3允许建立非周期的任务,通过触发适当的内部诊断信息来执行处理特定类型的出错(FO故障时降级运行模

46躲篇阮孑叩燃

万方数据

式、向操作员见面报警等)。

对于PLC系统,在编程的设计阶段就应在程序结构中考虑故障程序问题。这时必须遵从如下原则:①完整住故障程序不能依赖于检测到程序崩溃的所有特例,因此遇到PLC的主要故障时要有针对附加措施的安全保证。②可观察性故障程序要有状态记录和报警的能力。故障程序应显性执行,不被掩盖。⑦真实性检查在启动故障程序的情况下有可能将可以反映原来条件的程序存贮内容、数据文件或I/O状态破坏,因此故障程序应保证在执行故障处理前将这些环境加以保存,以便事后分析。④在故障程序不起作用时的故肇安全特性万一PLC系统的故障处理程序不起作用,系统设计仍要保证安全状态的后备措施。

PLC系统一般以指定的位和字的形式提供对应用程序的正常运行状况的监控,这些信息包括特定任务的执行时间,I/O刷新信息.I/O操作状态信息,电池状态信息和其它用来确定PLC正常运行状态的信息。遗憾的是IEC61131・3规范中对这些信息的典型值、范围和类型并未做出规定。而安全系统恰恰应该具备这些信息,作为判断其是否运行正常的检查和是否需要异常处理的不可或缺的部分。

在IEC

61

131-3的规范关于。任务。这节中,阐述了制造厂

应向用户提供所有任务执行的信息的最低要求。关键在于由于这一问题的分类落在出错检查,而未能在规范中描述,于是我们也得不到这些任务执行时在运行时应以何种形式接受检查的规定。另外,许多PLC和类似的符合IEC61131-3的系统一般只给出每次执行所有任务的周期(即所谓的扫描周期),却忽略了单个任务执行周期信息和标志的提供。如果因为安全原因需要在执行某个任务超时N次时必须紧急停车,在PLC现有的能力下是无能为力的。为了解决这个问题,必须让应用程序能够对单个任务执行其超时的检测,并给出单任务超时的标志,这样才能做出适当的反应。对于安全关键系统,监控任务超时的问飚尤其要紧。必须在程序开发的检查阶段关注。

l在安全系统中推荐采用的编程语言

在IEC61508-7的附录C.4.5中给出了适合用于安全系统的软

件编制推荐的语言(见表4),表中列举了24种编程语言,其中适用于安全系统的软件编制的语言共9种,它们是:属于全可变语言FVL确泌种(具有子集的ADA,具有子集的MODULA一2,具有子集的Pascal,具有子集的FORTRAN77,具有子集和编程标准并使用静态分析工具的C),属于有限可变语言LVL有4种(具有定义的语言子集的梯形图,具有定义的语言子集的功能块图,具有定义的语言子集的结构化文本,具有定义的语言子集的顺序功能图)。

>).>、'>>>>>≯哆下转50页

柔例推歹r

场调试中最初软件工程师设置的采样时间全为1s,死区为0,这样文件很大。环保检查时要求调出一个月的相关历史数据,在历史站调出1个月的趋势图的时间很长,甚至长达几个小时,让核查人员无法忍受。经过优化以后,采用本文前面的办法,历史数据文件容量减小为原来的l%以下,调出同样时间段的数据的时间减少到l ̄2分钟,这个时间应能接受。

在调试现场要检验参数设置优化后的效果,是否只有等待1个月的时间,等一个月的历史数据形成后才能验证调出时间?答案是否定的,采用好的办法,可以在半个小时内检验调出1个月历史趋势记录的时间:

(1)iFix的历史记录参数优化后,重新启动软件,24小时后得到IX的数据文件l

(2)拷贝并复制30个这样的文件;

(3)逐个修改文件名,即修改文件的生成时间。

这样快速地得到了1个月历史记录数据,数据是重复的,每天相同。用于来测试参数优化后历史数据的调出时间是合适和可行的,可以调出重复的30天或更多天的数据。我们在做文件复制前,应将已经生成的历史数据做好备份,以便事后恢复。这个方法只能用于试验,生产运行中不能对历史数据做修改和拷贝,如果有操作也将被记录。对脱硫装置这样的环保设施,如果数据作假,查实后将会受到环保部门的严厉惩罚。

6结束语

GE

iFIX作为优秀的SCADA软件,适合于多数的工业自动

化生产过程控制。对项目中具体参数的历史记录应按工艺过程的条件和要求,设置采取合理的参数,实现历史记录数据的有效和优化。如果企业对历史数据记录的要求更高,如毫秒级采样,数据量大(全厂级,几万点),则应采用Proficy

Historian

(iHistorian作为企业级实时历史数据库平台,可以极高的速度采集,归档并发布海量实时的现场过程信息【51)或其它的专用数

据库软件。够

参考文献:

【l】基于ADO技术的iFix历史报表的设计与实现【J】.自动化信息,2010.8.【2】iFIX监控软件在烟草制丝线的集成应用(二)【EB/oL】.hap://www.zgznh.

com/article—show.asp?articleid=580810。2010—06—09.

【3】ProficyHMISCADA.iFix4.0电子书.

【4】曲晓俊,马彩.iFIX组态软件中通用趋势曲线的没计与实现【J】.工业控制计算机,2009(22)3.

【5】iHistorian在电厂厂级实时监视系统中的解决方案[EB/OL].hap://sb91.

idzj.co.Article/200809/20080924172940—12514.html,2008・09-24.

5o

iUT瓣TI围盯一P--ANORAMA-

自勋fⅥ辱笕2010年12,EJ刊万方数据

<.“<<<<(<<<<上接46页

表4IEC

61508.7推荐的适用于安全系统的软件编制的语言

编程语言

SILlSIL2SIL3SIL4ADA

HR

HR

R具有子集的ADA

HRHRHRHRMODULA.2

HR

HR

RR具有子集的MODULA-2

HRHR

HRHRPascal

HR

HR

RR具有子集的PascalHRHR

HRHRFOI汀RAN77

RRRR

具有子集的FORTRAN77HRHR

HRHR

C语言

RNR

NR具有子集和编程标准并使用静态分析工

HR

HRHR

HR

具的C语言

PL/M

NRNR具有子集和编程标准的PL/M

HRR

汇编语言

RR具有子集和编码标准的汇编语言

RR

R梯形图语言

RR

RR具有专门定义的语言子集的梯形图语言HRHR

HRHR功能块图语言

RR具有专门定义的语言子集的功能块图语

HRHR

HR

HR

结构化文本语言

RRRR具有专门定义的语言子集的结构化文本

HR

HR

HR

HR

语言顺序功能图

RRRR

具有专门定义的语言子集的顺序功能图HR

HR

HR

HR

语言指令表语言

RNRNR具有专门定义的语言子集的指令表语言

HR

表4中R为推荐,HR为强烈推荐。

PLCopen国际组织与专业从事安全认证的权威机构TOV一起定义了在IEC61131-3的环境下涉及机械安全的规范《Safety

SoftwareTechnical

Specification))。其中仅规定了两种具有定义子

集的语言(功能块图语言FBD和梯形图语言LD)可用于机械安全

系统。囝

●考文献:【l】IEC61508Functional

SafetyofElectrical/Electronic/Programming

ElectronicSafety.RelatedsystemsPart

0-Part7.

[21

IEC615ll

Functional

Safety—Safetylasmanent捌lSystemsforthe

ProcessIndustrySextor.

【3】MindaZhao(AECL,加拿大原子能公司).NuclearSafety-Critical

SoftwareV&VTechnology.

【4】M.Heeht,R.Brill.ReviewGuideline

for

Software

Written

inHighI.eveI

Programming

LanguagesUsedinSafetySystems.

【5】PLCopen.SafetySoftware

Technical

Specification.

过程工业控制系统及其软件的功能安全

作者:作者单位:刊名:英文刊名:年,卷(期):

彭瑜

上海工业自动化仪表研究院自动化博览

AUTOMATION PANORAMA2010,27(12)

参考文献(5条)

1. PLCopen Safety Software Technical Specification

2. M.Hecht;R.Brill Review Guideline for Software Written in High Level Programming Languages Used inSafety Systems

3. Minda Zhao Nuclear Safety-Critical Software V&V Technology

4. IEC 61511,Functional Safety-Safety Instrunented Systems for the Process Industry Sector

5. IEC 61508,Functional Safety of Electrical/Electronic/Programming Electronic Safety-Related systemsPart O-Part 7

本文链接:http://d.g.wanfangdata.com.cn/Periodical_zdhbl201012009.aspx

专家分析

彭瑜,男,中国自动化学会理事。中国自动化学会仪表和装置专业委员会常务委员。中国自动化学会专家咨询委员会委员,上海市自动化学会常务理事,中国仪器仪表学会专家委员会委员,PLCopcn国际组织中国委员会主席。长期从事现场设备的无线通信等方面的研究。

从实现过程功能安全要求的基本规范IEC61511所给出过程工业中工厂安全保护防灾结构体系(见图1),可以清晰地看出安全仪表控制系统SIS是过程工业预防灾害和减灾的两个重要环节,确

保安全仪表系统的功能安全则是预防和减灾的一种基础保证。本

文希望从功能安全的基本概念出发讨论怎么才能切实实现控制系

统的概念安全。

圈1工厂安全保护防灾结构体系

40-A自Ui慧剿。罂慧腮

万方数据

上海工业自动化仪表研究院彭瑜

控制系统功能安全的国际标准

IEC61508/GB20438《电子/电气厂可编程电子安全相关系统的

功能安全》是一个宏标准,规范了满足安全相关系统功能安全的基本要求和规则。通过应用严格的系统性的过程,以可追溯性,关键性分析、验证(verification)和确认(validation)的程序为重点,来评估是否满足功能安全的标准要求。IEC61508标准的一个重要突破就是制订了一整套完整的开发程序和一系列的技术措施,通过严格的质量管理与全生命周期的程序控制。达到实现避免故障、排除故障及一定程度上容许故障的目的。

1EC

61508共有8个部分,即:

IEC

61508-0:功能安全和IEC

61508I

IEC61508一l:一般要求I・

IEC

61508-2:电气/电子,可编程电子安全相关系统的要

求I

IEC61508-3:软件要求;・

IEC61508-4:定义和缩略语I・

IEC

61508-5:确定安全完整性等级的方法示例l

IEC61508-6:IEC

61508—2和IEC61508・3的应用指南I

IEC61508-7:技术和措施概述。

在不同应用领域更细化和具体实现功能安全,又开发了进一步的规范,如:

实现机械功能安全要求的基本规范IEC

62061。

实现过程功能安全要求的基本规范IEC61511。・

实现核电功能安全要求的基本规范IEC

61513I

实现医疗设备的功能安全要求的基本规范IEC60601l

实现铁道运输安全的规范EN

50128,

控制系统功能安全的基本概念

安全系统的关键性分多个层次:

安全关键(safcty-critical)系统:单个缺陷或失效会造成危

险的故障,如核电站原子反应堆的停堆系统。

安全相关(safety-relevant)系统:单个缺陷或失效与第二

个缺陷或失效会造成危险的故障,如石化行业的安全仪表系统。

非安全相关(interference・free)系统:即使多个缺陷或失

效也不致造成危险的故障。

对安全要求最高的安全关键系统,必然为实现其安全要求而最耗费时间、成本最高,认证的过程和程序最复杂。对安全的要求相对较低的安全相关系统,以及对安全要求更低的非安全相关系统,相应在时间、成本和认证所耗费的努力逐级递减。

在IEC61508的标准中,对石化和化工行业广泛应用的安全相关系统有着严格的定义和要求:

必须在受控装置EUCJ临近风险或危险状态情况下,能执

行所要求的安全功能,使EUC达到或保持安全状态,

依靠安全相关系统本身,或与其它E/E/PE安全相关系

统、其它技术的安全相关系统或外部风险降低设施共同作用,达到所要求的安全功能必需的安全完整性。例如图2所示的一个化工厂常见的加热搅拌系统,除了用圆圈标出的是一个安全仪表系统(SIS)而外,安全阀就是使用机械保护的安全系统,它们配合使用达到必需的安全完整性。

这将安全相关系统在工厂预防和减灾中的作用明确规定如下:首先,由安全相关系统与外部风险降低设施共同作用,使受控设备达到必要的风险降低量,以满足所要求的允许风险。其次,安全相关系统是在接受命令时,采取适当的顺序动作防止EUC进入危险状态。一旦安全相关系统失效,也属于导致危险或危害的事件。第三,即使还有其他的具备安全功能的系统,但所指定的安全相关系统仅靠其本身的能力(而非其他系统)就能达到所要求的允许风险。第四,安全相关系统一般分为安全控制系统和安全防护系统,并且具有两种操作模式。

从安全相关系统的构成来看,它可以是EUC控制系统的一个组成部分,也可用传感器和/或执行器与EUC接口,即可通过实现EUC控制系统中的安全功能(也可能通过分开的和独立的附加系统)达到要求的安全完整性等级,或者利用分离的、独立.专门的安全相关系统实现安全功能。

这就明确告诉我们,安全相关系统的功能可能包括:用于防止危险事件发生,即安全相关系统一旦执行其安全功能,则不致发生有危险事件;用来减轻危险事件的影响,即通过减轻后果降低风险。或者同时具有上述的组合功能。

人也可作为安全相关系统的一部分,例如,人可以接收来自可编程电子装置的信息,并通过该装置按接收信息要求执行安全动作。

安全相关系统包括执行安全功能所需的全部硬件、软件以及支持服务(如电源、传感器和其它输入装置、执行器和其它输出装置也包括在安全相关系统中)。

万方数据

安全相关系统的技术基础范围可以十分广泛,包括电气,电子,可编程电子、液压和气动等。

图2

SIS和安全阀配合使用的化工加热搅拌系统的P&ID

由于在工厂安全保护防灾的体系结构中对不同的装置,系统,甚至系统内的各个子系统或部件的安全要求常常有很大差异,因此,IEC61508标准允许对一个系统的子系统和部件进行独立的评估。所以,我们在谈论功能安全时要严格区分所指的对象是系统,还是构成系统的部件或子系统。

控制系统的安全完整性及其等级

安全完整性是指在规定的条件下,规定的时间内,安全相关

系统成功地实现所要求的安全功能的概率。众所周知,控制系统由构成其系统的各种硬件(控制系统装置,现场仪表、通信网络等等)以及执行控制要求和功能的软件综合而成,因此控制系统的安全完整性由硬件的安全完整性和系统的安全完整性组成。硬件安全完整性是在危险失效模式中对应于安全相关系统安全完整性的硬件随机失效的那一部分,一般可以通过所要求的硬件安全功能失效率予以量化,而系统安全完整性则是指在危险失效模式中对应于安全相关系统安全完整性的系统失效的部分(包括软件失效)。控制失效与避免失效涉及设计,操作模式等诸多环节。显然,硬件随机失效和系统失效的机制不同,控制失效的方法也不同(见图3)。

可以通过改变设计、生产过程、摄作梗式、操作指令或其他影响因子,来清除原因确定的失效,

鼍免失效估算由于随机硬件失效造成的每控铡失效

个安全功能的失效概率

田3控制系统失效机理

票鬻测驰篙貉41

—五DT01神A彳i石N—]亭鬲嗣。膏五丽

专冢分析

在安全相关系统中,安全完整性的要求用4个离散的等级予以划分,IipSltA,SIL3。SIL2和SILl。安全完整性的等级越高的安全相关系统,其执行所要求的安全功能的概率也越高。

根据安全相关系统的使用方式、所要求发生的频率,可分为低要求操作模式和高要求(或连续)操作模式。低要求操作模式对应于每年发生风险的次数多于等于1次的安全相关系统;高要求(或连续)操作模式对应于每年发生风险的次数少于1次的安全相关系统。表l是IEC

61508l/GB/T

20438规定的低要

求操作模式下的安全完整性的目标失效概率和目标风险降低因子,表2是高要求(或连续)操作模式的安全完整性的目标失效概率。

SIL3被认为是单个可编程系统中可达到的风险降低的最高等级。

寰1低要求操作模式下的安全完整性的目标失效概率和

目标风险降低因子

安全完整性等级目标平均失效概率

目标风险降低因子

(SIL)

2l旷一<104>10000一≤10000032104一<10

>1000一!1000022lO。’一<10。2

>100一!1000

>10。’一<10。1

>10一!100

表2高要求(或连续)操作模式的安全完整性的

目标失效概率(每小时)

安全完整性等级

目标平均失效概率平均发生1次失效的

(SIL)

(每小时)

年数

4>10一一<10。811400一114000

3>10一一<10’71140一114002≥10~一<10。6114—1140l

>104一<10。5

11.4—114

安全系统的多样性(diversity)原则

安全系统可以采取多样性原则克服可能发生的故障,或设计

分析中存在的不确定性。多样性是指用不同方法执行所要求同一功能。例如:可用不同的物理方法或不同的设计途径来达到多样性。

多样性分为;①信号多样性;②功能多样性,③设备多样性l④软件多样性(如指令运算的多样性),⑤人员多样性等等。其中较为常用和有效的是信号多样性和功能多样性。

对所采用的多样性措施是否适当应加以论证。为了保证能切实执行多样性,对设备的多样性或仪表控制系统的软件多样性所进行的论证,必须扩展到这些设备的硬件、软件部件,如实时操作系统RTOS。

图4是S7.400F运用指令运算的多样性和时间冗余来提高安全功能的可靠性。操作数A.B在CPUI进行。与”运算,结果

42

自勋化.博览2010年12月刊

7旺『in冒啊五T兀玎r.j万霸oRAM五一

万方数据

为Cl

A,B经过编码变成字A,B,在CPU2qb傲。或”运算,

结果为D=/C。在比较器中进行比较运算,仅当D≠/C时输出停机信号。

!!竺竺!!!竺!塑!空

-Time

圈4运用指令运算的多样性和时间冗余来提高安全功能的可靠性再如某核电站的紧急停堆系统由两个完全独立的系统构成。其安全控制系统由不同的供应商提供。一个停堆控制系统采用安全PLC系统,由3个独立的3机冗余表决的分系统(D、E、F)组成(见图5)。每个分系统都具备停堆功能,但其停堆输出还要

送给3取2的继电器硬逻辑进行表决,最终给出停堆信号。该安全PLC系统硬件平台配有操作系统,运用符合工业控制编程语言的国际标准IEC61131-3所规范的功能块图语言(FBD)编制应用软件。这套停堆控制系统采用了综合法(IntegratedApproach)设计。

值得注意的是,为了实现安全系统的机理多样性,还设置

了另一套完全不同机理的停堆系统,通过将有害的中子吸收剂(poison)注入反应堆中的慢化剂(moderator)的方法进行停堆

控制。这一停堆控制系统采用没有操作系统的工控机硬件平台,安全控制软件运用高安全的具有子集的MODULA-2语言编写。这一套系统使用的是另一种设计方法一合理设计流程法(rational

design

process),用确定离子室记录的功率信号的合理性来检查

异常差错信息。由此可见,在要求极高的安全关键系统中充分运用了多样性的原则,有:机理的多样性、设计方法的多样性、设

备的多样性,编程语言的多样性,这样就从系统的层面上把同时发生差错的概率降至尽可能的小。

田5采用3套3机冗余表决的安全PLC系统构成的停堆控制系统

5重视处理假事件

各种安全系统(包括紧急停车系统ESD)如果对假事件作出响应,造成非计划停车,不但要付出高昂代价,而且在大多数

OTU3

情况下具有危险性。大量的假报警还会导致操作人员产生矛盾心理,以至于对危险的真报警都不予理会,或者反映很慢。

产生假事件的原因:①现场设备的硬件故障,如压力开关、电磁阀的线圈或常闭触点存在高电阻,PLC的I/O模块有故障,现场设备中电子器件有故障,热电偶断偶,热电阻断线等,这些明显的设备故障都会引发假事件。②一些公用故障如电源、气源故障也会引发假事件。⑦缺乏维护,不及时对工作有缺陷的仪表、传感器进行测试、校验,是引发假事件的重要原因。

下面讨论信号多样性问题。看一个用3个浮球液位开关测量液位的简单例子(图6)。我们可以有4种配置。采用单信号、双信号还是三信号更有利于安全和可靠的平衡呢?概括地说:采用单机(单信号)系统不安全且不可靠,在故障安全(假事件)或危险方面存在50/50的概率l采用双机(双信号)系统配置为二取一(1002),可能较安全,但存在高的假故障率,双机(双信号)系统配置为二取二(2002),由假事件引起的故障率较低,但安全性差;三机(三信号)冗余系统为三取二(2003),提供可以接受的安全与可靠的平衡。

圉6用3个浮球液位开关测量液位可能的配置

显然,S1S/ESD不能选择单机(单信号)系统。选用双机

(双信号)系统,在一定程度上可达到安全和可用性。二取一(1002)安全性较好,但可靠性及假事件的影响大,二取二(2002)可靠性较好,安全性却较差。即使双机(双信号)系统具有很好的自诊断性能,可以确定采用哪个通道或处理器故障,将坏的通道或处理器剔除,但这时双机系统降格为单机系统。三取二(2003)独特的优点是不考虑哪个通道发生故障,是怎么发生故障的;也不完全依靠自诊断来确定哪个通道投用。其亮点在于它仅要求所接收到的信息。三取二表明,若有一个信号不同于另外两个信号,立即报警,而这两个信号相同的通道处于安全工作状态。

从图6所示的例子可知,如果流程要求用于液位测量的仪表每年只能发生1次故障,而且每半年对浮球开关进行一次维护测试,那么对于不同的浮球液位开关配置,因故障造成危险的年概率如表3所示。

万方数据

裹3浮球液位开关不同配置的因故障造成危险的概率

仪表信号配置

故障危险概率

假事件故障概率

故障危险概率(每半年维修1次)

lool1/101/10l/20l002l/100

l/51/16002002l/5

l门00l/202003

l/33

i/33

l/534

软件的可靠性难以精确量化

软件可靠性的基本问题是:①软件不受物理故障的影响。随

着硬件元器件的可靠性越来越高,并可以采用冗余技术,因而安全问题的矛盾集中到了软件,以至于今天我们看到大多数的系统失效源自软件。失效常常由于一些非明显的事件组合造成,而不是由于机械应力超过一定程度造成。而这些非明显因素往往事先没有估计到,所以在软件的编制中考虑不到。②软件是由人来设计的,软件的设计不可能面面俱到,总有些因素在设计时没有考虑到,因此,设计的缺陷导致软件的故障。③数字系统本质上是非连续的,所以输入对输出的映射一定是不连续的。④软件建立在模型化和测试的基础上,这些工作都是人在做的。人难免犯错误,所以影响软件的可信度。

因为以上这些不可避免的问题,可以得出软件的可靠性难以精确量化的结论。另外,从趋势上讲,软件和人为因素导致失效,事故和停机的比例越来越高。因为现在对软件的依赖越来越高,软件变得越来越复杂,因而难以控制。人犯错误不可避免。硬件失效可能是系统失效的原因,系统的失效会引起软件的失效。有鉴于此,要保证工业控制软件的功能安全就不得不依赖于对软件进行严格的验证和确认。

工业控制软件的功能安全概念和方法

IEC

61508—1规定了整体安全生命周期的16个阶段,包括:概

念,整体范围定义,危险和风险分析,整体安全要求,安全要求分

配,整体操作和维护计划编制,整体安全确认计划编制,整体安装和试运行计划编制,E/E/PE安全相关系统:实现,其他技术安全相关系统:实现,外部风险降低设施:实现,整体安装和试运行,整体安全确认,整体操作维护和修理,整体修改和改型,停用及处理。与软件相关的是第9阶段“F./E/PE安全相关系统:实现”在IEC61508—3中详细地规定了执行安全功能的软件如何满足面:软件质量管理系统,软件安全生命周期要求,软件功能安全么要求,以及如何来验证工控软件达到了功能安全的标准。IEC61508—3的突出贡献在于制订了一整套完整的开发程序和一系列避免故障、检测故障和排除故障,以及容许存在故障,从而保证嚣燃一鱼咝4—A

MAfr石N一——

PANORAMA

技术措施,通过严格的质量管理与全生命周期的控制程序,实现评估。它给出的是在软件的安全生命周期的各个阶段应该满足什功能安全的要求。它规范的工控软件的功能安全问题包括以下方

专家分析

软件的安全完整性能。总之,IEC61508—3给出了在安全相关系统的软件编制时应遵循哪些规范就能够达到功能安全的要求。这好比它编织了安全软件开发的。鸟笼”,以及在“鸟笼”里飞必须遵守的规则和约束;一旦飞出。鸟笼”就不能保证软件的安全。但它并没有具体规定工控软件在选用编制系统软件和编制应用软件时,应该如何选择适当的编程语言、指令集和数据类型,就可以从基础上保证软件的功能安全性。这些问题有些可以通过IEC61508・6(IEC61508—2和IEC61508.3的应用指南)和IEC

61508

-7(技术和措施概述)找到相应的具有实用性的参考规定和资料,有些就必须再进一步查找其它围绕不同应用领域的工业控制软件的功能安全的规范,如美国核管制委员会NRC发布的《(核电站软件语言导则》.PLCopen国际组织发布的在IEC61

131・3的

开发环境下有关机械功能安全的规范《SaltySoftwareTechnical

Specification))等等。

众所周知,安全相关系统包括硬件、软件,软件必须运行于硬件系统环境中才能实现其价值和功能,在完成系统的功能安全时,一定要认识这二者之间的关系。通过图7所揭示的IEC61508-3与IEC61508—2的关系就能一目了然:IEC61508-2是总体,IEC61508—3只是局部。尽管它们可能是由不同的团队独立开发,但最终还是要集成起来经过总体检验,才能够判断是否满足安全要求。

图7在实现系统功能安全时IEC61508-3与IEC61508.2的关系

软件的安全完整性等级采用表1低要求操作模式下的安全完整性的目标失效概率划分。达到SIL4等级的软件相当于每1.14年至11.4年之间发生1次失效。

8安全系统的软件构成

与控制系统的软件构成一样,安全系统的软件也包括系统软件和应用软件两部分(见图8)。它们分别用全可变语言(full

variability

language,FVL)和有限可变语言(1imitedvariability

language,LVL)编写(见图7).这些概念都是将软件引入功能安全时建立起来的。

什么是全可变语言呢?其实此类语言就是计算机编程人员广泛使用的语言,它提供实现各种功能和应用的能力。典型的利

44慧然乒雩2黧三熙

万方数据

用全可变语言的系统就是通用计算机。在过程工业中,只有在嵌入式软件(一般指固件或系统软件)中才使用全可变语言,极少在应用程序中使用。ADA、C、C++、指令表IL、Pascal、Java、SQL均属于全可变语言。

有限可变语言在IEC

61

508—4中定义为:在工业和商业可编

程电子控制器中使用且范围局限于应用程序的文本的或图形的软件编程语言。例如:引自IEC6113I-3和其它标准或规范的有限可变语言,用来编写PLC系统的应用程序。它们分别是梯形图语言LD・布尔代数语言:带有增加某些记忆指令能力的,基于布尔运算符(女I]AND、OR和NOT)的低级语言I功能块图语言FBD:除布尔运算符外,可使用更复杂的功能,如数据传输文件、块传输读/写,移位寄存器和序列发生器指令等;顺序功能图语言SFC:有顺序之程序的图形表示,由相互联系的步骤、动作和带转换条件的定向连接线构成。

图8功能安全用编程语言的构成

软件功能安全对编程语言的要求

编程语言并不是专为安全系统开发的,它们在出现安全软件

的概念之前就发展了很长的时间。所以要用FVL和LVL完成安全系统的软件编写,首先必须对这些语言和用它们编写的程序提出要求和进行评估,以确定在什么条件下使用这些语言就能确保安全软件完成其保证功能安全的任务。

从另一方面来看,由于嵌入式系统已渗透到各行各业,这些年来,凡是对安全有重要要求的行业都很关注这个问题,制

定了各自的规范。例如汽车行业建立了汽车工业软件可靠性协会MISRA,发布了专门用在汽车行业的c++语言的子集MISRAC++。美国核管制委员会NRC早在1996年就发布了《核电站软件语言导则》,之后97年又公布了其修正版NUREG/CR

6463

Rev.1。因为其权威性,直至现在它已成为安全软件的经典规范。

不仅仅是核电,其它行业的软件安全问题也经常以此作为引经据典的文献。

在美国的核管制委员会发布了《核电站软件语言导则》

NUREG/CR6463Rev.1中,对用高级语言编写的用于安全系统的

软件进行了安全评述,着重指出以往发现的软件安全性问题和缺陷,从对应用重要性的理解、设计的方法论、学科发展和测试等方面加以阐述。

NUREG/CR

6463

Rev.1将软件安全的属性按三级架构加以分

类和编排:顶级属性.中间属性和基本属性,如图9所示。豳9软件安全的三级架构属性

软件的可靠性属性是在所规定的条件下软件的可预测、且恒定一致的性能。由于软件的可靠性属性旨在减少在软件开发实现期间可能被导入源代码而造成误操作的故障,所以此顶级属性对安全来说是很重要的。

软件的鲁棒性是在异常条件或事件下,安全系统的软件以一种可接受的方式进行操作的能力。由于它加强了软件处理例外情况、从内部故障中恢复,以及阻止因异常环境而致使故障传播的能力,因此此顶级属性也很重要。

软件的可追溯性表现为:①对源代码和所引用的程序库部件的源头进行检查和识别-⑦通过对开发过程的可行性进行检查,来验证已执行的代码在其开发过程中是否按规范的方法完成其实现;⑦审视代码与高一级的设计文档相关联的能力。此属性之所以重要是因为这将便于对软件进行验证和认证(V&V),这是软件质量保证的另一方面。

软件的可维护性是在软件交付使用后若需对源代码做改动时,导致将故障引入的可能性减少的必要手段。此属性之所以对安全来说很重要,是因为在对软件进是因为在对软件进行适应、校正或完善期间可以尽量减少可能发生的误操作的故障。

根据IEEE所给出的规定,软件可靠性是在软件编制,调试和执行运行全过程的环境下,既可以是在所定义的时间间隔内和所定义的条件下成功执行的几率,也可以是按照命令成功操作的几率。软件执行完成是其对于系统存贮器和程序逻辑恰当行为的结果。这

墨嚣三’哥娃::曩

【存贮空问藕用的可预舅性l

控制流的可预舅性l。时序的可琢舅性.]

I-动态存贮分配的・4、化

一结构最大化

L内存分页和存贮空同对

二嚣蔫荔耄蓑雌批L尽可蠢少用任务

挠的最小化

一子程序的进入点和出口锅妙一用务

一不用赋值语句一界面歧义最小化一采用敦据健入

一准确度.精度进行记曩一捧定优先级

一蕾免执行于程序产生的

状态变化一将求值与赋值焉开一动奄绑定量小化

图lO可靠性的中间属性

万方数据

意味着软件所产生的适时输出是编程人员对所使用的语言结构和运行期间环境特性理解的函数。因此可靠性的中间属性包括:存贮空间利用可预测性(软件不致造成处理器会向非预期的或不允许存贮空间进行存取的高概率);控制流可预测性(处理器按编程员预期的顺序执行指令的高概率)t时序可预测性(软件在所定义的运行环境下满足响应时间和处理能力约束的高概率)・数学结果或逻辑结果可预测性(软件在所定义的运行环境下产生编程员所预期结果的高概率)。详见图lO。

所谓软件鲁棒性是指在异常或其他未曾预计的情况下软件继

全系统而言鲁棒性之所以重要是因为在一个意外或偏离额定工况时会发生未曾预料的事件,在这样的情况下软件持续的对系统监控和控制的能力仍能有效作用。软件鲁棒性的中间属性和基础属性见图1l。

图11软件鲁棒性的中间属性和基础属性

软件的可追溯性是指与软件设计相比较,安全软件的那些支持其正确性和完整性验证的属性。可追溯性的基础属性有:可读的可控使用。

软件的可维护性是为了有效减少在对软件进行修改时可能引入的差错。会影响安全的与可维护性有关的中间属性(见图12)包括:可读性一便于项目人员对软件的理解的软件属性;数据的改软件时意想不到的副作用和次生的影响减至最小;函数的内聚可移植性一避免一种语言的非标准函数对安全的重大威胁;可塑田12可维护性有关的中间属性

名慧蒜熊燃4S

—百IJ亍。葡哺i耵石葡——乒A对。再五l-晤

续执行的能力。鲁棒性的同义词是耐久性(survivability)。对安性(这也是可维护性的属性),内嵌函数的可控的使用,编译库抽象一对于那些代码被划分和模块化的区域,这样做可以使在修性一对代码中的软件元素给予设计水平的函数适当的存贮地址,性一将可能修改的代码区与软件代码的其余部分隔离开。

专冢分析

0编程语言实现软件功能安全的方法

在NRC的NUREG/CR

6463Rev.1完整版本中给出了将9种编

程语言(Ada,Ada95,∞++,Pascal,PL/M,IEC61131・3规定

的梯形图、顺序功能图,结构化文本和功能块图)用于安全系统时,应该关注它们特定的存在问题和如何加以克服注意点。譬如,对于C语言来说,是其指针的初始化问题l对于IEC

61131-3

所规范的编程语言,则应关注其时序、正常运行的监控,以及故障处理等问题。

从顶级属性中的可靠性、中级属性中的可预测性的控制流和基础属性中的在使用前变量的初始化这三方面导出对指针初始化的指导原则。所有的变量和指针在使用前都应该初始化。C语言支持通过说明来指定初始值的方式进行初始化,但并不要求所有的对象(指变量、数据结构或数组)进行初始化。在若干情况下,一个对象的初始化不仅要为对象的存贮地址指定一个特定的位的组合值,而且还要采取特殊的动作来为对象的生命(例如为对象赋予对应的源)进行平滑初始化。在c++中,可能要考虑任意相关数据作为对象,并提供构造数据组一个实例的工具。这样便会以系统的方式破坏数据组当前的实例。

考虑到上述情况,必须对初始化提出以下导则:①不要对超出其说明范围的变量自动使用指针。存贮在指针的值对一个自动变量会包含超出其函数范围的无用输入。②指针的初始化,初始化问题也会在指针中发生。在安全系统中所有c语言中的指针变量,其初值都应该为null;所有C++中的指针变量,其初值都应该为0。在被使用之前,指针应对一个有效值予以测试。当一个指针被定义时,它没有一个地址与其相关联。使用一个未初始化的指针,会造成重写未曾预想到的指针的存贮地址。错误地重写存贮内容会引起严重的问题,包括对系统的崩溃。⑦要确保每一个指针的说明间接的运算符都是存在的。每个指针都应该有一个间接运算符(。)。

IEC

61131.3所定义的5种语言除指令表语言(IL)与汇编语

言相似外,其它语言都纳入了NRC关于编程语言的导则中。对这些语言特定的指导原则源于鲁棒性顶级属性和异常处理的中间属性。应该专注于在机组紧急停车时PLC的行为。通常此时所有的输出均应切断,但往往并非总是如此。一般PLC系统总是设计成在紧急停车时系统处于故障安全状态。某些PLC在遇到这样的情况时具有处理器能自动停止主梯形图程序的执行,转而执行。故障程序”的子程序。这使系统的设计者可以决定采取适当的动作,包括以一种安全的方式让系统停下来。问题在于:IEC61131—3规范中未涉及到允许PLC系统本身包含有某种预先设计好的硬件故障程序,当检测到一定范围的故障条件时便会自动执行。不过,IEC61131.3允许建立非周期的任务,通过触发适当的内部诊断信息来执行处理特定类型的出错(FO故障时降级运行模

46躲篇阮孑叩燃

万方数据

式、向操作员见面报警等)。

对于PLC系统,在编程的设计阶段就应在程序结构中考虑故障程序问题。这时必须遵从如下原则:①完整住故障程序不能依赖于检测到程序崩溃的所有特例,因此遇到PLC的主要故障时要有针对附加措施的安全保证。②可观察性故障程序要有状态记录和报警的能力。故障程序应显性执行,不被掩盖。⑦真实性检查在启动故障程序的情况下有可能将可以反映原来条件的程序存贮内容、数据文件或I/O状态破坏,因此故障程序应保证在执行故障处理前将这些环境加以保存,以便事后分析。④在故障程序不起作用时的故肇安全特性万一PLC系统的故障处理程序不起作用,系统设计仍要保证安全状态的后备措施。

PLC系统一般以指定的位和字的形式提供对应用程序的正常运行状况的监控,这些信息包括特定任务的执行时间,I/O刷新信息.I/O操作状态信息,电池状态信息和其它用来确定PLC正常运行状态的信息。遗憾的是IEC61131・3规范中对这些信息的典型值、范围和类型并未做出规定。而安全系统恰恰应该具备这些信息,作为判断其是否运行正常的检查和是否需要异常处理的不可或缺的部分。

在IEC

61

131-3的规范关于。任务。这节中,阐述了制造厂

应向用户提供所有任务执行的信息的最低要求。关键在于由于这一问题的分类落在出错检查,而未能在规范中描述,于是我们也得不到这些任务执行时在运行时应以何种形式接受检查的规定。另外,许多PLC和类似的符合IEC61131-3的系统一般只给出每次执行所有任务的周期(即所谓的扫描周期),却忽略了单个任务执行周期信息和标志的提供。如果因为安全原因需要在执行某个任务超时N次时必须紧急停车,在PLC现有的能力下是无能为力的。为了解决这个问题,必须让应用程序能够对单个任务执行其超时的检测,并给出单任务超时的标志,这样才能做出适当的反应。对于安全关键系统,监控任务超时的问飚尤其要紧。必须在程序开发的检查阶段关注。

l在安全系统中推荐采用的编程语言

在IEC61508-7的附录C.4.5中给出了适合用于安全系统的软

件编制推荐的语言(见表4),表中列举了24种编程语言,其中适用于安全系统的软件编制的语言共9种,它们是:属于全可变语言FVL确泌种(具有子集的ADA,具有子集的MODULA一2,具有子集的Pascal,具有子集的FORTRAN77,具有子集和编程标准并使用静态分析工具的C),属于有限可变语言LVL有4种(具有定义的语言子集的梯形图,具有定义的语言子集的功能块图,具有定义的语言子集的结构化文本,具有定义的语言子集的顺序功能图)。

>).>、'>>>>>≯哆下转50页

柔例推歹r

场调试中最初软件工程师设置的采样时间全为1s,死区为0,这样文件很大。环保检查时要求调出一个月的相关历史数据,在历史站调出1个月的趋势图的时间很长,甚至长达几个小时,让核查人员无法忍受。经过优化以后,采用本文前面的办法,历史数据文件容量减小为原来的l%以下,调出同样时间段的数据的时间减少到l ̄2分钟,这个时间应能接受。

在调试现场要检验参数设置优化后的效果,是否只有等待1个月的时间,等一个月的历史数据形成后才能验证调出时间?答案是否定的,采用好的办法,可以在半个小时内检验调出1个月历史趋势记录的时间:

(1)iFix的历史记录参数优化后,重新启动软件,24小时后得到IX的数据文件l

(2)拷贝并复制30个这样的文件;

(3)逐个修改文件名,即修改文件的生成时间。

这样快速地得到了1个月历史记录数据,数据是重复的,每天相同。用于来测试参数优化后历史数据的调出时间是合适和可行的,可以调出重复的30天或更多天的数据。我们在做文件复制前,应将已经生成的历史数据做好备份,以便事后恢复。这个方法只能用于试验,生产运行中不能对历史数据做修改和拷贝,如果有操作也将被记录。对脱硫装置这样的环保设施,如果数据作假,查实后将会受到环保部门的严厉惩罚。

6结束语

GE

iFIX作为优秀的SCADA软件,适合于多数的工业自动

化生产过程控制。对项目中具体参数的历史记录应按工艺过程的条件和要求,设置采取合理的参数,实现历史记录数据的有效和优化。如果企业对历史数据记录的要求更高,如毫秒级采样,数据量大(全厂级,几万点),则应采用Proficy

Historian

(iHistorian作为企业级实时历史数据库平台,可以极高的速度采集,归档并发布海量实时的现场过程信息【51)或其它的专用数

据库软件。够

参考文献:

【l】基于ADO技术的iFix历史报表的设计与实现【J】.自动化信息,2010.8.【2】iFIX监控软件在烟草制丝线的集成应用(二)【EB/oL】.hap://www.zgznh.

com/article—show.asp?articleid=580810。2010—06—09.

【3】ProficyHMISCADA.iFix4.0电子书.

【4】曲晓俊,马彩.iFIX组态软件中通用趋势曲线的没计与实现【J】.工业控制计算机,2009(22)3.

【5】iHistorian在电厂厂级实时监视系统中的解决方案[EB/OL].hap://sb91.

idzj.co.Article/200809/20080924172940—12514.html,2008・09-24.

5o

iUT瓣TI围盯一P--ANORAMA-

自勋fⅥ辱笕2010年12,EJ刊万方数据

<.“<<<<(<<<<上接46页

表4IEC

61508.7推荐的适用于安全系统的软件编制的语言

编程语言

SILlSIL2SIL3SIL4ADA

HR

HR

R具有子集的ADA

HRHRHRHRMODULA.2

HR

HR

RR具有子集的MODULA-2

HRHR

HRHRPascal

HR

HR

RR具有子集的PascalHRHR

HRHRFOI汀RAN77

RRRR

具有子集的FORTRAN77HRHR

HRHR

C语言

RNR

NR具有子集和编程标准并使用静态分析工

HR

HRHR

HR

具的C语言

PL/M

NRNR具有子集和编程标准的PL/M

HRR

汇编语言

RR具有子集和编码标准的汇编语言

RR

R梯形图语言

RR

RR具有专门定义的语言子集的梯形图语言HRHR

HRHR功能块图语言

RR具有专门定义的语言子集的功能块图语

HRHR

HR

HR

结构化文本语言

RRRR具有专门定义的语言子集的结构化文本

HR

HR

HR

HR

语言顺序功能图

RRRR

具有专门定义的语言子集的顺序功能图HR

HR

HR

HR

语言指令表语言

RNRNR具有专门定义的语言子集的指令表语言

HR

表4中R为推荐,HR为强烈推荐。

PLCopen国际组织与专业从事安全认证的权威机构TOV一起定义了在IEC61131-3的环境下涉及机械安全的规范《Safety

SoftwareTechnical

Specification))。其中仅规定了两种具有定义子

集的语言(功能块图语言FBD和梯形图语言LD)可用于机械安全

系统。囝

●考文献:【l】IEC61508Functional

SafetyofElectrical/Electronic/Programming

ElectronicSafety.RelatedsystemsPart

0-Part7.

[21

IEC615ll

Functional

Safety—Safetylasmanent捌lSystemsforthe

ProcessIndustrySextor.

【3】MindaZhao(AECL,加拿大原子能公司).NuclearSafety-Critical

SoftwareV&VTechnology.

【4】M.Heeht,R.Brill.ReviewGuideline

for

Software

Written

inHighI.eveI

Programming

LanguagesUsedinSafetySystems.

【5】PLCopen.SafetySoftware

Technical

Specification.

过程工业控制系统及其软件的功能安全

作者:作者单位:刊名:英文刊名:年,卷(期):

彭瑜

上海工业自动化仪表研究院自动化博览

AUTOMATION PANORAMA2010,27(12)

参考文献(5条)

1. PLCopen Safety Software Technical Specification

2. M.Hecht;R.Brill Review Guideline for Software Written in High Level Programming Languages Used inSafety Systems

3. Minda Zhao Nuclear Safety-Critical Software V&V Technology

4. IEC 61511,Functional Safety-Safety Instrunented Systems for the Process Industry Sector

5. IEC 61508,Functional Safety of Electrical/Electronic/Programming Electronic Safety-Related systemsPart O-Part 7

本文链接:http://d.g.wanfangdata.com.cn/Periodical_zdhbl201012009.aspx


相关内容

  • 技术领域目录
  • <国家重点支持的高新技术领域>目录 一. 电子信息技术 二. 生物与新医药技术 三. 航空航天技术 四. 新材料技术 五. 高技术服务业 六. 新能源及节能技术 七. 资源与环境技术 八. 高新技术改造传统产业 一.电子信息技术 (一)软件 1.系统软件 操作系统软件技术,包括实时操作系 ...

  • 高新技术企业认定管理办法和国家重点支持的高新技术领域(新)
  • 高新技术企业认定管理办法 发布日期:2016-02-04来源:科技部 阅读次数:947 科技部 财政部 国家税务总局关于修订印发<高新技术企业认定管理办法>的通知 国科发火[2016]32号 各省.自治区.直辖市及计划单列市科技厅(委.局).财政厅(局).国家税务局.地方税务局: 根据& ...

  • 科技攻关计划项目指南
  • 农业 一、农产品精深加工研究与开发 通过高新技术的应用,拉长农业产业链条,提高农产品附加值,实现农业增效和农民增收,扩大内需。本年度重点支持: 1、粮、油、果、蔬、肉、蛋、奶等农产品贮运、保鲜、包装工艺技术研究; 2、小麦、玉米、芝麻、大豆、花生等农产品精深加工技术研究; 3、功能性乳制品的开发研究 ...

  • 工业控制系统的安全性研究
  • 工业控制系统及其安全性研究 战略研究部 李鸿培 忽朝俭 安全研究部 于旸 西安分公司 曹嘉 关键词:工业控制系统 安全威胁 漏洞分析 摘要:随着工业信息化的快速发展, 电力.交通.石油化工等国家重要行业的工业控制系统的信息安全问题也变得越来越重要.本文在初步介绍工业控制系统的基本概念的基础上, 首先 ...

  • 武汉理工大学科技成果目录选编
  • 附件5: 武汉理工大学科技成果目录选编 获国家级奖励的科技成果(2011-2015) ...................................... 1 新能源与新材料技术 ........................................................ ...

  • 基于PLC的船舶电站自动化系统方案设计
  • 宁波大学海运学院 2011届本科毕业论文(设计) 基于PLC 的船舶电站自动化系统方案设计 Design of Automatic Control System of Marine Ship Power Station Base on PLC 诚 信 承 诺 我谨在此承诺:本人所写的毕业论文< ...

  • 数字化设计手册(软件版)
  • 制造业信息化最佳平台和产品开发设计途径 最前沿的制造业信息化资源库 最重要的企业核心竞争力加速提升平台 最权威的开发研制机构阵容 最专业的制造业最新科研成果与技术 最有效的制造业产品开发设计途径 最广泛的制造业信息化应用支撑系统 试与争锋,舍我其谁.数字手册系列软件,震撼上市,强烈推荐!! 什么是制 ...

  • 国家智能制造标准体系建设指南
  • 国家智能制造标准体系建设指南 (2015年版) 2015年12月 目录 一. 总体要求......................................................................................... 1 (一) 指导思想....... ...

  • 12.标准化基础知识.软件工程标准知识整理
  • 一.标准的指定 1.标准的层次 标准划分为:国际标准.国家标准.行业标准.区域/地方标准和企业标准 国际标准 是指由国际联合机构制定和公布,提供各国参考的标准. 1.ISO 国际标准化组织: 2.IEC 国际电工委员会: 3.ITU 国际电信联盟: 4.CAC 国际食品法典委员会标准 国家标准 是指 ...