随着计算机技术的发展,更多可编程电子部件的应用,和人们认知的发展,发现由于系统失效或者故障、软件的问题、安全相关元器件、零部件的失效或故障、引发的危险越来越频繁,甚至会造成巨大的人员及财产损失。为了更好的解决这些出现的问题,最终形成的IEC61508标准试图建立一个体系,IEC61508标准首先定义了功能安全(functional safety)这一概念,意即“当安全系统满足以下条件时就认为是功能安全的,即当随机故障、系统故障或共因失效都不会导致安全系统的故障,从而引起人员的伤害或死亡、环境的破坏、设备财产的损失,也就是装置或控制系统的安全功能无论在正常情况或者有故障存在的情况下都应该保证正确实施。”
功能安全的意义在于:
功能安全和信息安全不同。功能安全英文单词为Safety,例如汽车刹车失灵;信息安全英文单词为Security,例如智能锁被黑;但二者有重叠的部分。黑客利用了固件更新的漏洞(信息安全问题Security)获取了对CAN总线的访问权限,进而控制了刹车系统造成了事故(功能安全问题Safety)。
SIL认证(SIL Safety Integrity Level)是基于IEC 61508针对安全设备的安全完整性等级进行评估和确认的一种第三方评估、验证和认证。安全完整性等级(SIL)是由每小时发生的危险失效概率来区分,划分为4个等级:SIL1、SIL2、SIL3和SIL4——SIL4是其中安全完整性最高等级。安全完整性等级越高,执行所要求的安全功能的概率也越高,换而言之就是出现失效的概率越低。
我们设计的BMU(Battery Monitor Unit)出口欧美时,需做SIL2认证,降低储能系统因各种异常导致电池爆炸等安全问题发生。BMU功能安全主要是针对参数有效性、告警保护、均衡安全性、热失控安全性、软件功能安全包应用、软件异常处理的设计。对于功能安全,由于ST MCU从芯片内置的硬件安全属性,经过认证的软件自检库和完备的安全文档三个层面来支持STM32用户在系统级进行开发,达到要求的功能安全等级。可帮助用户快速推出基于STM32的安全关键应用,并达到这些行业安全标准IEC 61508安全完整性等级(SIL2/SIL3),例如:工业、电机控制、工厂自动化或发电/转换。因此,我们的BMU产品选用STM32F103系列MCU。STM32提供的安全包资源如下图所示:
图一 STM32提供的功能安全设计包资源图
功能安全设计包中提供的自检库和安全手册中的检测方法,一部分是通过纯软件的方式实现的,还有一部分是利用MCU本身提供的硬件属性完成的。下图中列出了STM32 MCU内置的一些安全属性。
图二 STM32内置安全属性
关于自检库,这里需要说明的是,ST提供的SIL自检库只是实现功能安全所需的安全机制的子集。用户可以将自检库压缩包中的库文件添加到实际工程中,该自检库已经包括了对CPU,FLASH和SRAM这些与具体应用无关部分的检测。然后用户还要再根据实际工程的需要,参考安全手册中列出的安全检测机制,自己通过代码实现其他的检测。
BMU安全功能包整合进BMU应用程序,包含如下内容:
安全功能包整合进应用程序中流程图如下所示:
图三 安全功能包整合进应用程序中流程图
芯片复位后,在执行初始化工作之前,必须先调用STL_StartUp函数进行启动时的自检。启动自检流程图如下所示:
图四 启动自检流程图
所有启动自检都成功通过且已完成标准的初始化,则运行时自检包必须在程序进入主循环前进行初始化,同时执行运行时自检的定期调用。
图五 定时自检流程图
在BMU的开发过程中,我们利用STM32提供的安全设计包快速实现满足SIL2等级的安全认证,降低项目成本和复杂度,简化认证评估过程,缩短认证需要的时间。
冯瑞明先后于华中科技大学(1991.09-1995.07)和西安电子科技大学(1998.09-2001.12)获得工业自动化学士学位和电子与信息工程硕士学位。长期从事嵌入式硬件开发相关工作,熟悉基于M3/M4/A系列等ARM内核的嵌入式系统部件开发。原在华为网络能源,作为系统工程师从事数据中心,光伏逆变器,站点电源的监控系统开发工作。现在科陆电子下属车电网从事充电桩,储能系统的开发工作。