徐志杰,张传进,王婧
(1. Kenexis咨询公司,天津 300270;2. 中国石油国际勘探开发有限公司,北京 100034;3. 中国石油宁夏石化公司,宁夏 银川 750021)
依据GB/T 20438—2017/IEC 61508:2010《电气/电子/可编程电子安全相关系统的功能安全》标准[1],系统能力(SC)表示在硬件或软件系统组件无系统性失效时的置信度[2]。该标准将此置信度水平定义为一种系统组件的属性,其从对一组硬件/软件技术要求和开发过程所要求的符合性中产生,共定义了SC1到SC4四个级别。该标准期望符合安全完整性等级(SIL)要求的功能通过具有不同SC的组件来实现,体现SC的关键在于是否遵循了(设备)开发流程和技术要求,该类技术要求可以理解为旨在突出鲁棒性。在新的IEC 61511-1:2016Functionalsafety-safetyInstrumentedsystemsfortheprocessindustrysector-Part1,framework,definitions,system,hardwareandsoftwarerequirement[3]中存在着诸多有关系统安全完整性方面的困惑。例如,人们起初看到的经过安全仪表系统(SIS)应用认证设备的SC为2级。如何理解?通常情况下,依据GB/T 20438—2017/IEC 61508:2010来审核制造商的质量管理体系,以便建立SC。如果质量管理体系满足GB/T 20438—2017/IEC 61508:2010的要求,就会发布SC等级。实现的SC等级取决于制造商质量管理体系的有效性,相关证书可用于说明制造商产品的SC。
自从“伞式”标准IEC 61508—2:2011Functionalsafetyofelectrical/electronic/programmableelectronicsafetyrelatedsystems—Part2:Require-mentsforelectronical/electronic/programmableelectronicsafety-relatedsystems[4]于2010年更新开始,系统完整性便受到了广泛关注,但这并非是一件坏事。众所周知,SIL等级由要求时失效概率(PFD)驱动,它与硬件失效有关。系统内部的失效会如何?这通常是人为错误所致而不是随机发生的,也称作系统性失效[5],2010年版的IEC 61508比1998年的第一版在这方面提及的内容更多。
系统性失效指与预先存在故障有关的失效,在特定情况下会经常发生,因此,只能通过修改设计、生产工艺、操作程序、文件或其他相关因素进行消除。典型的系统性失效是软件“缺陷”,其能够在每组相同的情况下,在软件的各副本中重复出现。系统性失效通常由SIS硬件或软件实施期间的人为错误所引起。
作为自动控制工程师,应该关注从所构建的SIS及其硬件中消除系统性失效,供应商、工程承包商和最终用户都肩负着这种责任。IEC 61511标准委员会在讨论第二版流程工业标准(该标准于2016年发布)的内容时,这是一个非常热门的话题。GB/T 20438—2017/IEC 61508:2010引入了SC这一概念,并将其作为一种对设备的系统安全完整性是否满足指定SIL等级要求的置信度测量(以SC1至SC4表示)。如今,有很多硬件供应商都在宣传新设备为SC2认证。这对设备集成商和最终用户究竟意味着什么?如果使用的设备未经过任何SC认证又应该如何处理?关于这一问题,IEC 61511:2016规定:“对于系统性失效最好采用定性方法”,但这要取决于被询问的对象是谁?换句话讲,这是对GB/T 20438—2017/IEC 61508:2010“母”标准的一种细微改变还是一种重大偏离?为了避免发生歧义,IEC 61511:2016作出进一步声明:“系统安全完整性与硬件安全完整性有所不同,通常无法量化”,从这一点上讲,流程工业标准IEC 61511:2016是正确的。安全完整性是功能安全的目标,是一种多层面的概念。安全完整性架构如图1所示。
为何有关SC2认证设备的各种声音会如此之多?这是一个很难用一两句话讲清楚的问题,有一点请务必牢记:采用工程判断的定性方法对于避免系统性失效至关重要。
图1 安全完整性架构示意
术语SC除了在IEC 61511:2016中被明确以外,在其他任何地方均不用作规范性要求。“系统安全完整性”“系统性失效”和“系统性故障”等词随处可见!这些概念都很重要,然而SC却几乎被降级成为了“脚注”。
SC是一种置信度(水平),如同SIL等级一样,但又截然不同。它是一种设备的属性,而不是安全仪表功能(SIF)。事实上,SC可以通过选择用于SIF的经IEC 61508 认证的设备来确定,也可以通过为设备提供先验使用理由(亦称为经使用证明理由)来确定。当某台设备通过先前认证满足SC约束时,通常认为该设备从先验使用或者经使用证明的角度满足或达到了某SIL等级。SC或SIL这两个不同的术语的使用通常可以区分用于评估某台设备满足SC约束的程度。当某台设备通过如下流程进行认证时,通常认为其具有认证等级的SCN,其中N为数字1~4,对应不同的SIL等级。
在GB/T 20438—2017/IEC 61508:2010中,SC是对由一系列规定设计和测试技术的表格所指定设计质量的测量。随着SIL等级的提高,需要更为严格的设计和测试方法,这些方法反映了标准委员会关于必要和有效“故障避免技术”的意见。目的就是要减少有可能导致设备危险失效的设计错误的数量。GB/T 20438—2017/IEC 61508:2010中有近400项合规性要求和29个设计、测试和文档技术表,表格中的每一行均描述了一种技术,并给出了代表4种SIL等级的4个类别。这些类别是R(推荐),表示设计人员应该考虑该方法或证明其替代方法;或者HR(强烈推荐),表示设计人员须采用该技术或等效技术。在GB/T 20438-3:2017/IEC 61508-3:2010中,每种SIL等级均指定了不同的软件设计技术。软件设计与开发-支持工具与编程语言示例见表1所列,以半形式化方法为例,该方法推荐用于SIL1和SIL2,但强烈推荐用于SIL3和SIL4。
表1 软件设计与开发-支持工具与编程语言示例
表1给出了每个SIL等级所要求方法之间的差异,为了让更高的SIL等级实现更高的设计质量需要进行更多的测试。动态分析与测试示例见表2所列。
表2 动态分析与测试示例
表1和表2定义了在认证评估期间如何对SC进行评级。所有SIL3的HR方法或等效方法均须用于新设计,以便实现SC3(SIL3)等级。同理,所有SIL2的HR方法均须用于该设备的新设计,以期实现SC2。
按照GB/T 20438—2017/IEC 61508:2010认证的设备经过了有资质的第三方审核,以确保近400个符合各种设计、测试和文档的GB/T 20438—2017/IEC 61508:2010要求已达到认证的SC级别。源自不同制造商的诸多不同类型认证设备的存在,使得在广泛的功能需求中使用认证设备成为一种颇具吸引力的替代性工作,继而创建先验使用或经使用证明的理由。
大多数公司(组织)均认为,如果最终用户在某一特定仪器的特定版本方面有着多年的成功经验(如,足够低的危险失效数量),即使该仪器未通过安全认证,仍可以为使用该仪器提供理由。大多数人认为,在使用仪器之前需要一种系统来记录每个最终用户现场的所有现场失效及失效模式。同时,必须保存仪器硬件和软件的版本记录,因为重大的设计变更有可能使先前的使用经验无效。此外,还需要记录操作条件,并且必须与所建议的安全应用程序相似。
遵照设备安全手册中的要求使用设备时,设备的系统安全完整性需要满足指定的SIL等级所要求的置信度(SC1~SC4)。
供应商指定的SC只是测量供应商的设备是否已采取避免和控制系统性失效的措施,但这绝不是系统性失效的终点。即使用户遵循供应商的安全手册,最终将该设备集成到安全仪表系统时,仍然会存在很多引入系统性失效的机会。为了实现更高的安全完整性目标,用户应该信任SC2还是SC3呢?具体要求可参见GB/T 20438-2—2017/IEC 61508-2:2010中第7.4.3条的内容。
对于某种表决结构中使用的具有SC为SCN的设备,其组件的系统性失效不会导致指定的安全功能发生失效,而只会与系统能力为SCN的另一组件的第二个系统性失效相结合(例如:容错结构为“1oo2”或“2oo3”),只要这两个组件之间存在足够的独立性,则该容错结构的SC便为SC(N+1)。
在组件之间的设计及应用期间,可以借助共因失效分析来加以证明,与所考虑的安全功能的SIL等级相比,组件与环境之间发生干扰的可能性要足够低。对于SC而言,在硬件设计、实施、运行和维护方面,实现充分独立性的可能方法有以下几种:
1)功能多样性,使用不同方法来实现相同结果。
2)技术多样化,使用不同类型的设备实现相同结果。
3)共用部件/服务,确保没有共用部件或服务或支持系统(如电源),其故障有可能导致所有系统出现危险失效模式。
4)通用程序,确保没有通用的运行、维护或测试程序。
因此,即便知晓系统性失效可以像击败冗余设备一样轻松击败单一设备,但文献[1]似乎更倾向于具有多样性的容错设备。在该问题上,也许会听到带有供应商偏见的专家声称,只要使用多样化的设备,系统性失效是“不可能发生的”。笔者对该种说法持有保留意见。
采用路径1[6],通过避免和控制系统性失效的手段来实现:
1)多样化设备之间的容错(“1oo2”或“2oo3”)表决可以实现SC(N+1);然而,相同设备之间的容错只能实现SCN。
2)在路径1条件下,相同设备容错(“1oo2”或“2oo3”)实现SC(N+1)的方法是证明有充足的手段来避免系统性失效(参见GB/T 20438—2017/IEC 61508:2010中第7.4.6条)和控制系统性失效(参见GB/T 20438:—2017/IEC 61508:2010中第7.4.7条)。为了避免系统性失效并以足够高的可信度要求实现指定的SIL等级,参考GB/T 20438-1—2017/IEC 61508-1:2010中附录A和附录B的规定,该规定是强制性、高度推荐性还是推荐性?供应商提供的证书上带有 SC2编号,表明该供应商已采用GB/T 20438—2017/IEC 61508:2010中的此类技术对设备进行了评估。
采用路径2[6]。对容错(“1oo2”或“2oo3”)结构中相同设备的SC(N+1)声称“经使用证明”。但重要的是:
1)认识到“安全完整性”既包括“硬件安全完整性”又包括“系统性安全完整性”,但是切不可将术语SIL等级与SC混为一谈。
2)SC尽管使用相同的整数记数方式,但事实上却是实现系统安全完整性的置信度水平。标准通常允许“定性技术和判断应针对预防性措施而提出,以实现系统的安全完整性”。采用供应商的SC代替IEC 61511:2016生命周期中的技术和判断是很危险的。
3)SC虽然未出现在GB/T 20438—2017/IEC 61508:2010的附录A或附录B中,但它们却以不同的方式避免和控制系统性失效,以实现所要求的SIL等级。需要指出的是:所有这些措施都是定性的。
人们可以通过研究一系列的措施和技术来避免和控制系统性失效。这不足为奇—因为人为错误是根本原因,所以解决方案是为了避免单一人为错误传播至已实施的系统,具体包括:
1)对硬件和软件实施的严格验证和确认导致了对可能表现为系统性失效的人为错误的高度“诊断覆盖率”。
2)避免复杂性,并在设备(无共享工艺连接,I/O隔离)和系统(软件模块化,没有跨系统的读写能力等)之间保持“清晰的分隔线”。
用于SIS全生命周期管理的某些软件(例如:美国Kenexis咨询公司的VertigoTM)允许用户选择使用供应商提供的SC,但并非默认值。同时,还可依靠安全生命周期本身,包括诸多验证及相关步骤,以根除系统性失效。
当使用旨在防止系统设计错误的程序来设计实现安全功能的设备时,就可以实现所期望的系统能力。所需程序的严谨性取决于SIL等级,然后通过针对过程控制和仪表供应商的质量管理评估体系评价其安全性是否符合GB/T 20438—2017/IEC 61508:2010的要求,如果质量管理体系满足该标准的要求,便可以发布SIL等级,实现的SIL等级取决于供应商质量管理体系的有效性。一般情况下,符合IEC 61508的证书都会给出产品的SC。
尽管如何使用SIL等级来量化安全完整性很容易理解,但如何量化SC却并非易事。随机失效很容易被量化(在一个数量级以内),但无法单独控制。SIL等级可以通过选择失效率可以量化的设备,同时在硬件结构中采用冗余来实现。系统性失效的设计、开发、运行和维护期间的失效通常无法量化,但可以采用适宜的工程技术和措施加以控制。也就是说,SC可通过应用避免和控制系统性失效的技术和措施来实现和评估。