自动化程度的提高为人们日常生活中的方方面面都带来了更多的舒适性和灵活性,但我们也需要注意到这些好处背后的安全风险。尤其是工业领域中让人引以为傲的高精密生产线,它们应当是易于使用,并能提供高度舒适和安全的操作性。
本文深切认为技术系统不应当为人们和环境带来超出允许风险范围的安全风险。完全没有风险是不现实的,所以风险可接受与否在于其严重程度。每个领域对可接受风险程度都有自己的定义,并使用不同的安全等级对其进行衡量。对于电气和可编程系统来说,得益于一系列标准建立,由此形成了关于功能安全的共识。这些标准适用于不同的应用领域,但它们都基于由iec61508标准派生出的安全理念。
图1:常见的功能安全标准概览
iec61508标准覆盖了系统的整个生命周期,并着重为系统中可能出现危险的部分制订了相关规范。该标准旨在提供从零开始设计系统的方式。实现功能安全的普遍措施是添加额外的元器件,用于监控功能的正常运行以及在发生不正常的情况时对系统进行控制。这个理念常用于工业自动化或过程工业领域中。 iec61508标准定义了功能安全的操作模式:低要求操作模式、高要求操作模式和连续模式。操作模式则由每年对于安全功能的使用频率决定。
同时,针对功能安全领域中的标准控制功能的设计方法是可选的。iec61508标准中定义的连续模式包含这些信息。
通常做法是从分析所有可能对系统产生影响的关键问题开始。所有被定位的问题必须使用参数进行衡量,如暴露时间、受伤的严重程度以及脱离伤害的可能性。这是典型的风险分析措施,必须在没有额外电气保护系统的情况下对受控设备施行。系统整个生命周期的所有部分均必须使用该措施。凭借风险图,风险分析将提供要求的安全完整性等级(safety integrity level, sil)。在遵循iso13849标准的情况下,风险图将提供要求的性能等级(performance level, pl)。pl与sil相似,均定义了安全等级。在设计安全plc(safety plc)、安全变频驱动器(safety drive inverter)或安全编码器(safety encoder)等安全元器件时,通常的做法是从机器制造商处获得要求的安全等级。要求的安全等级旨在将风险降低至允许风险范围内。sil必须通过安全功能得以满足,安全功能将由一系列安全元器件或安全设备实现。这就意味着单一的元器件无法满足sil,仅能用作安全链中的一部分。
为了满足sil要求,该标准涵盖了两种失效情况。第一类包含随机失效以及所有类型的随机硬件失效,而第二类包含所有系统失效。
随机失效
随机失效基于不同的参数进行计算得出,如元器件的失效概率(λ)、诊断覆盖率(diagnostic coverage, dc)、硬件故障裕度(hardwarefault tolerance, hft)、共同失效原因(β)以及测试间隔。事实上,安全与否不是与生俱来的,对于系统出现故障并进入到不安全状态的情况,iec61508标准仅涵盖检测不到、不安全的失效概率并根据合适的模式具体说明各类限制,pfd(根据要求的失效概率,probability of failure on demand)适用于低要求操作模式,pfh(每小时的失效概率,probability of failure per hour)适用于高要求操作模式和连续模式。举个例子,sil 3安全功能仅限于千年一遇的危险失效。反之,低要求操作安全功能(pfd)不应当发生平均1000次安全要求出现1次失效的情况。作为额外的验收标准,iec61508要求安全失效分数处于指定的sff(安全失效分数,safe failure fraction)范围内,这取决于hft和sil。
表1:安全完整性等级的pfd和pfh值
表2:安全失效分数与硬件故障裕度的关系
危险失效的失效概率可通过实现诊断功能和冗余得以降低。冗余度需要参照硬件故障裕度(hft)。hft值为0的系统发生1次失效即可产生危险。也就是说,hft值为n的系统能够承受n-1次失效。如果诊断单元能够检测到故障并将系统引入安全状态,局部诊断覆盖即可降低重大失效带来的影响(?du = ?d·(1-dc))。除了故障(硬错误,hard-error)导致的元器件失效概率,设计工程师还必须尽量减少软错误(soft-error)。在测算时,软错误率是非常关键的一点,因为相比硬错误导致的失效率,软错误率会提升。
fpga器件的制造商莱迪思半导体公司为客户提供适用于所有推荐的安全元器件的失效概率和软错误率数据。
避免系统失效
除了上文提到的情况,另一项当务之急是尽可能避免系统失效,这取决于要求的sil,而sil会因为措施的数量和使用程度发生变化。产品生命周期中的每个阶段针对系统失效都有不同的要求。规范概述了以下设计流程:实现、验证和确认。针对结构完善的设计来说,推荐采用v模式(v-model)。针对于软件设计和fpga编程,该标准具体说明了其设计阶段和验证阶段。
图2:iec61608-2:2010规范中针对fpga设计的v模式
综上所述,功能安全管理技术方面的措施对于避免系统失效来说是至关重要的。安全管理包括在研发开始之前为所有的设计和验证步骤制定详细的计划。由此可见,安全管理人员必须要有一个定义明确的项目计划。
文档管理
作为安全项目的一部分,必须完善制定文档管理方面的规范。文档管理描述了如何处理、储存、发布和修改文档,以及文档的访问权限和每个团队成员的受限情况。版本控制应当作为自动化流程由工具实现。
需求管理
管理所有的需求是安全项目中非常必要的一部分。每项安全需求在整个安全项目中都应当是可追踪的。安全项目的最终目标是确保所有的需求都能够被正确地实现。相关测试可用来确认特定的需求能否降低风险。就此而论,必须根据精确的数据、完整性和一致性来组织整理要求。从架构到实现的模块,模块测试到整合,再到系统测试的整个过程中,安全项目必须要能显示需求产生于哪个部分。
组织和责任
分工明确并且结构完善的团队对于确保高效无缝地完成所有任务来说是至关重要的。团队结构和小组领导应当按照层次顺序设定。所有的联系信息都应当是可用的,特别是对于分散的团队来说,必须为团队成员制定通讯和协作的方式。这对于审核人员、开发人员和测试人员能否各司其职具有重要意义。
措施的定义
根据要求的sil,该标准提供了一系列适用于每个生命周期的表格,包含推荐或强烈推荐的措施,可作为默认的失效避免工具使用。在研发开始之前,应当选择所有涉及到设计和验证方法的技术。iec 61508规范的第2和第3部分列出了所有技术。第2部分涵盖了所有硬件领域以及所有asic或fpga领域。第3部分涵盖了所有软件领域。fpga编程被囊括进iec61508标准的第2部分中,这有点让人费解,不过这不是技术问题,更多的是标准化组织的原因。不过这个不要紧,因为开发fpga软件的方法与开发微控制器软件的方法相似。不同点在于技术。举个例子,仿真技术在fpga设计过程中更加常用,而微控制器则更需要带有调试工具的硬件。
表3:f.2 iec61508-2表2摘要
表3展示了降低fpga设计中系统失效的技术列表的摘要。对于一般硬件和软件设计,也有适用的类似表格。使用这些表格的原则是始终如一的。标注为“hr”的措施必须得以施行。如果不这么做,那么相关决策是不合理的。标注为“r”的措施应当在条件允许的情况下使用。
验证和确认计划
验证和确认流程也必须在安全功能实现之前计划好。所有的设计阶段都要选择故障避免文档中的措施进行验证。计划的措施必须阐明目前的项目将在真实情况中如何表现。举个例子,计划的措施可以是静态代码分析。那么对应的验证和确认计划应当覆盖所有将由代码检查器检验的软件模块(sw-module),包含使用该工具的流程并将如何对结果进行处理、分析和存档的说明。
另一个例子是fpga设计过程中的网表检查。第一步是明确这个步骤必须完成,谁来执行这个任务以及输入和输出的文件是什么。下一步是定义进行该任务需要使用的工具以及发布流程。
该计划可用作针对所有验证和确认流程的检查表,能够为所有计划流程的完成度提供完整的概览。
工具认证
针对在生命周期中的所有阶段密集使用任何类型软件工具的情况,所有将用于实现安全部分的工具将按照它们对于安全功能的影响进行分析。这意味着,首先需要列出所有的工具,然后将所有的软件工具根据工具重要性等级(iec61508-4:2010标准中的t1、t2、t3等级)进行分类。
表4:工具重要性等级
表4展示了标准中的相关定义以及莱迪思工具列表,后者按照使用fpga实现安全相关任务时的相应等级进行分类。在真实的项目中,该列表需要填上所有使用到的工具。知晓某个工具在项目中的重要性是有用的,但这并不会让人们获得更加安全的系统。这就是为什么要进行额外的工作,比如说进行工具认证让工程师对使用的工具有把握。有把握的意思是能够确认或知晓工具发生的错误。如果该工具能够正确地满足规范要求并且使用者已经获得了该工具经过确认的凭据,那么他就可以不受任何约束地使用该工具。如果该工具无法按照规范要求工作,用户则需要相关错误的信息并暂时避开导致错误发生的情况。如果分析人员得出的结论是工具的输出不可信或规范还不够详细,用户就必须制定其他方法来检测上述错误。
分析过程有可能为用户带来潜在问题。如果用户自身不具备有关该工具的足够知识、经验或数据,就会产生问题。在这种情况下,如果该工具的制造商能够为客户提供相关支持,比如所有必要的数据,则会非常有帮助,如果工具制造商还能提供由独立机构认证和批准的数据和文档,那就更为理想了。
莱迪思已邀请tüv rheinland按照iec61508标准对“diamond 2.1”工具套件进行了高达sil 3级别的审核。这为安全项目团队提供了使用该工具链以及所有相关文档和安全手册的便利,使用者无需进行额外的确认。审核所获的结果节约了项目相关的成本和时间,并简化了为安全应用选择莱迪思fpga的决策过程。同上述工具一道,莱迪思还可提供经过量产验证的 fpga,可靠并且具备认可的失效概率数据。由相关机构颁发的认证让评估人员更加信任莱迪思的产品,并能加速型号审核流程。
安规产品设计的工作流程
除了所有的功能安全管理,还要实现安全设计流程以确保产品安全。让我们假设有一个需要实现sil 2或sil 3级别设备的项目。
项目第一步是建立安全方案。安全方案能够勾勒出具备相关细节的大致架构,如包含单通道或双通道架构、通信路径、输入和输出接口、电源等信息。安全要求规范(safety requirement specification, srs)由安全方案和产品规范衍生。为了使方案确定下来,推荐在块层面执行第一次失效模式和影响分析(failure modes and effect analysis, fmea)。通常情况下,fmea结果会推进要求列表的制定。iec61508标准提供了一些失效控制措施,包括复杂电子元器件故障模式和指令故障检测模式,用于支持结构化分析。在双通道或多通道架构中,共因失效必须得以定位和消除。对于安全设计来说,环境和emc情况也是非常重要的。根据应用的情况,应当按需参照其他标准进行确认和检视。所有的要求都确定下来之后,就可以按照由高到低,从架构到模块的顺序开始设计。请记住一定要建立所有步骤的规范和描述,因为这些输入文件将用于所有的审核以及测试阶段。为了项目流程的顺利推进,所有的测试应当与开发同时进行。
在所有的原理图和电路导出之后,部分fmea必须完成,随后进行安全参数的计算。部分fmea也会被用做故障导入测试(fault insertion test, fit)规范中的输入信息。软件应当按照图2所示的流程来实现。
在完成系统和型号等所有测试后,该设计应当能够满足所有安全要求。最后一点特别关键,所有安全相关的信息必须写入新产品的用户手册中。