家用电器制造商在设计时就被要求考虑到设备的安全性,产品的硬件和软件要求遵循相关的安全标准,所以很多新技术解决方案被应用在产品中。
1. IEC60730 ClassB 认证简介
在全球范围内,IEC(国际电工委员会)、UL(美国保险商实验室)及CSA(加拿大标准协会)颁布了全球公认标准,主要针对电气设备有了规范和要求。该标准被TUV及VDE(大部分在欧洲)、UL及CSA(目标市场在美国和加拿大)等机构认可,并被要求应用在认证程序中。
IEC(国际电工委员会)是由所有国家电工委员会组成的世界性标准化组织,IEC针对家用电器的正常安全运行制定了安全标准IEC60730。
IEC60730安全标准里面定义了多种测试和诊断方法,确保面向家用电器的嵌入式控制硬件和软件的安全运行。IEC60730安全标准主要针对安全和性能、环境、电能效率及其可再生能力,其标准为硬件及软件解决方案提供建议,根据应用目的,这些标准可分为若干安全等级。
家用电器制造商必须采取措施,以确保其产品的安全和可靠地运行,以符合IEC60730标准。IEC60730标准涵盖了交流电器的机械、电气、电子、EMC和交流电器的异常操作,包括为自动电子控制定义的三种软件分类:
A类功能,如房间恒温器、湿度控制、照明控制、计时器和开关,它们的区别在于不依赖于设备的安全。
B类功能,如热切断装置,旨在防止洗衣机、洗碗机、烘干机、冰箱、冰柜和炊具等电器的不安全操作。
C类功能,旨在防止特殊危险,如爆炸。这些包括自动燃烧器控制和封闭的热水器的热切断。
MM32开发出多种安全特性和软件开发包(包括IEC60730安全库),可帮助大型电器市场的自动化控制制造商满足IEC60730 B类规范。
2. ClassB 验证
2.1 ClassB 软件库
2.1.1 评估的目的
- 对软件启动时自检和运行时自检,对风险控制措施进行评估;
- 确保在使用电器时安全,对人体不会造成伤害。
2.1.2 评估的内容
- 对硬件结构和软件结构的综合检查,防止系统性问题;
- 对软件开发过程的评估,针对程序潜在性风险进行检查。
2.1.3 评估的对象
- 家用电器如果同时具备以下两个条件,就应当进行软件评估:
1、使用可编程电子电路,即嵌入式微控制器MCU;
2、可编程电子电路具有安全保护功能。
比如具有过热控制的电磁炉,带自动门锁控制的洗衣机等。
- 如果MCU仅实现产品功能,安全保护由硬件进行,这类家电不需要进行软件评估。
2.2 MM32提供的示例代码测试项
(1) CPU寄存器测试
(2) 时钟验证测试
(3) 不变存储器FLASH验证测试
(4) 可变存储器RAM验证测试
(5) 看门狗验证测试
(6) 控制流程检查验证测试
MM32 ClassB所有示例代码的源码向所有有需要的用户开放,用户可以将它们添加到现有的项目中。
2.3 验证方法
2.3.1 MCU相关故障检测
2.3.2 应用相关故障检测
其他的对应控制模块也需要从应用层进行自检,具体的实现方式需要根据具体的应用需求进行评估,今天不做过多的假设。
2.4 系统测试流程
MCU在上电的时候会进行复位启动,在启动完成以后会进行运行自检,ClassB系统流程如下:
2.4.1 启动自检
CPU寄存器进行自检操作,如果检测没有故障则进行看门狗的自检,如果有故障则进行故障的处理。看门狗自检流程与CPU寄存器自检的流程一致,后面依次会进行FLASH,RAM以及时钟自检,启动自检完成以后会进入程序的主循环函数中。
启动自检流程如下:
2.4.2 运行自检
在主循环中会定期的进行自检操作,在进行自检操作的时候会依次进行如下操作:CPU寄存器的自检、栈自检、时钟自检、FLASH自检、并设置定时器定时进行RAM自检,如果在自检的过程中出现故障则会进行故障的处理。
运行自检流程如下:
以上就是ClassB的整体的测试流程。
2.5 代码整合
如果用户已经开发好相关的应用控制程序,只需要在原有的应用程序中添加ClassB的程序,操作方法如下:
1、在原有的工程框架中添加ClassB的相关.c和.s文件。
2、在执行用户程序之前,先执行相关的变量初始化及监测、校准时钟。
STL_InitRunTimeChecks();
3、设置WWDG和IWDG功能,防止其在程序正常运行时复位。
WWDG_Init(0xFF,0x7F);
Iwdg_Init(IWDG_Prescaler_4, (LSI_Freq/4000-2));
4、设置启动和运行时的RAM和FLASH检测范围,CRC校验的范围,checksum在Flash中存储的位置。
STL_FlashCrc32Init();
5、ClassB变量的存储地址范围,堆栈边界检测区的位置,对检测到的故障进行处理。
6、根据具体的应用,增加用户相关的故障检测内内容,根据具体应用定义程序运行时自检的频率,相关的变量设置MM32\_STLparam.h文件中。
7、主循环中调用STL\_DoRunTimeChecks()
STL_DoRunTimeChecks();
今天主要介绍了ClassB软件的作用、框架和流程等,后续文章将逐一介绍MM32F013x在各个自检过程中的实现方式。