技术文章和通讯

如何在ISO 26262项目中使用Simulink

作者:Tom Erkkinen, MathWorks


为传统汽车和自动驾驶汽车研究安全相关嵌入式系统的汽车工程师们正在寻找有效的方法,以达到ISO规定的过程严密性®26262[1],乘用车开发的功能性安全标准。

随着所有媒体的注意力都集中在自动驾驶汽车上,也不乏建议。但是,这些建议往往都集中在最新的编码方法或清除bug的工具上。正如业内专家早就认识到的那样,安全更多地是关于正确地获得系统及其需求,而不是软件及其如何编码[2]。

基于模型的Simulink设计,以连续和离散时间仿真为核心®让您在进入试验场或执行车队测试之前,就可以在广泛的驾驶条件和故障场景下设计和测试完整的系统。它还支持ISO 26262规定的工艺活动,包括工具鉴定。IEC Certification Kit详细说明了这种支持,并提供了来自国际认证权威机构TÜV SÜD的工具证书和报告。

本文介绍了在ISO 26262项目中使用Simulink的TÜV SÜD-approved工作流。它介绍了ISO 26262和基于模型的设计,然后涵盖了以下任务:

  • 需求开发
  • 设计建模
  • 代码生成
  • 设计验证
  • 代码验证
  • 工具资格

ISO 26262和基于模型的设计

ISO 26262包括手工设计和代码指导,以及基于模型的设计指导。它也承认使用基于模型的设计[3]的一些好处:

模型的无缝利用促进了高度一致和高效的开发。

该标准提到了数学建模的“广泛使用”,并指出建模工具在软件开发中采用了“半形式化的图形化方法”。它指出,建模不仅可以捕获要实现的功能(嵌入式软件),还可以对真实的物理系统(车辆模型和环境模型)进行仿真,从而产生一个完整的系统模型:

通过这种方式,甚至可以在可接受的计算速度下,用高度细节来模拟高度复杂的汽车系统,从而模拟接近现实的行为。虽然车辆/环境模型在开发过程中逐渐被真实系统及其真实环境所取代,但功能模型可以通过代码生成作为嵌入式软件在控制单元上实现的蓝图.[3]

图1显示了一个典型的Simulink闭环系统模型。它由控制器和设备以及信号处理器组成。在ISO 26262中,系统设计规范是软件开发的输入,但它远不止于此,因为安全从根本上来说是一个系统问题[2]。

包含输入、处理器和设备的闭环系统设计模型示意图。图窗口显示输出信号。

图1。一个Simulink系统设计模型。

然后详细阐述您的系统设计,直到它成为一个软件蓝图,具有足够的细节,以便您生成生产代码。ISO 26262将此模型精化过程描述为“模型演化”[2]:

在实践中,功能模型从早期的规范模型经过设计模型到实现模型,最后自动转换为代码(模型演进),有一个演进过程。

ISO 26262推荐了基于汽车安全完整性等级(ASILs)的各种活动的方法。您可以使用此指导来基于您的用例建立适当的工作流程。图2给出了ISO 26262过程的概述。实箭头表示开发活动,虚线箭头表示验证和验证活动。ISO 26262中提到的“模型演化”用椭圆表示(…)。

工作流中的步骤方框图,显示对目标代码的需求,箭头显示V和V活动。

图2。ISO 26262软件开发和验证过程使用Simulink。

需求开发

您可以通过编写功能和安全需求开始与安全相关的开发过程。ISO 26262建议您使用“软件体系结构设计和软件安全需求之间的双向可追溯性”来验证软件体系结构设计。要实现这一点,您可以使用需求工具箱™来创建并跟踪需求到模型、测试和代码。“工具箱”支持对其他工具(包括Microsoft)的双向跟踪®®,微软Excel®和IBM®理性的®®.需求的实现和验证状态在需求工具箱中进行监视和管理。需求链接可以出现在生成的代码中(图3)。

一个Simulink图,包括一个表格式需求窗口和显示所选需求细节的属性检查器。

图3。Simulink中的需求规范。

设计建模

正如在“ISO 26262和基于模型的设计”一节中提到的,ISO 26262描述了功能模型从高级可执行规范到为生产代码生成准备的详细设计的演变过程。典型的修改和改进包括:

  • 使用Simulink Control Design™离散化工具将块从连续时间(S域)转换为离散时间(Z域)
  • 使用定点设计器将数据从双精度转换为单精度或定点
  • 使用Stateflow添加诊断、模式逻辑、状态机和调度®

对于ASIL B到D, ISO 26262强烈建议使用建模指南,为此,您可以使用MAB风格指南[4]和Simulink中提供的ISO 26262高完整性指南。Simulink Check™自动检查这两个指南。它可以标记问题,例如在编辑时插入不兼容的块。您还可以包含您自己的指导原则和检查,也可以配置为编辑时检查。

代码生成

ISO 26262规定“软件单元的实现包括源代码的生成和转换为目标代码。”要实现这一点,可以使用Embedded Coder®从Simulink模型生成C、c++和AUTOSAR代码。本规范符合MISRA C标准®:2012自动代码指南[5]。ISO 26262指出,基于模型设计的代码指南和手工代码可能不同,并列出了MISRA®作为一个例子。

IEC认证套件为C、c++和AUTOSAR的嵌入式编码器(包括ASIL A到D)提供了工具资格支持。其TÜV SÜD认证报告指出:

Embedded Coder满足ISO 26262关于工具支持和自动化的要求。

嵌入式编码器通常应用于以下三种用例之一:

  1. 为用于生产代码生成的模型生成C代码
  2. 为用于生产代码生成的模型的AUTOSAR应用软件组件生成C代码和描述文件
  3. 为生产代码生成模型生成c++代码

Embedded Coder提供了针对内存和速度优化代码的选项。此外,您可以生成特定于处理器的优化,利用硬件加速器(如SIMD)®的手臂®和英特尔®.您可以使用ISO 26262中描述的模型到代码、处理器在环(PIL)测试,验证优化的代码在规定的公差内与模拟结果匹配。

可执行的目标代码是使用编译器和链接器从生成的源代码生成的。IEC Certification Kit中的工作流允许编码器、编译器和处理器优化,只要使用PIL测试来验证可执行的目标代码,这对大规模生产ecu是至关重要的。

设计验证

ISO 26262推荐了许多用于验证软件设计和实现的静态和动态方法,包括单元级和集成级活动。对于基于模型的设计,它声明“根据软件开发过程,测试对象可以是从该模型派生的代码,也可以是模型本身。”

Simulink Test™为Simulink中的ISO 26262验证和验证活动提供了一个框架。您可以使用它为模型和从模型生成的代码编写、管理和执行系统的、基于模拟的测试。图4显示了一个示例测试序列和评估块。

测试序列编辑器窗口显示测试场景中的步骤,测试工具窗口显示测试序列块和测试评估块。

图4。用于建模和创作复杂测试场景的Simulink测试序列和评估块。

IEC认证工具包中的TÜV SÜD报告(用于ISO 26262)阐明了Simulink测试在自动化验证和验证中的作用:

[Simulink Test]允许对Simulink模型和生成的代码的核心验证和验证活动进行自动化。以下用例反映了软件开发过程中根据iso26262功能安全标准所要求的活动:

  • 开发和执行Simulink模型的测试
  • 开发和执行模型和代码之间背靠背测试的测试
  • 测试结果的评估
  • 测试报告的生成
  • 识别需求和测试用例之间的可追溯性

ISO 26262建议用结构覆盖分析来确定测试完整性和识别非预期功能。它列出了三种提高严谨性的方法,其中最后两种强烈推荐给ASIL-D。

  • 语句覆盖
  • 分支覆盖
  • MC / DC覆盖

该标准指出,对于基于模型的设计,“结构覆盖的分析可以在模型级别使用模型的类似结构覆盖度量进行。”它还指出,如果结构覆盖不足,”应该指定额外的测试用例或提供基本原理。”

Simulink Coverage™为模型和生成的代码提供了结构覆盖,并且可以很容易地使用Simulink test进行测试执行。如果您的模型覆盖率不够,您可以使用Simulink Design Verifier™自动生成额外的测试用例来实现所需的覆盖率,包括MC/DC。Simulink Check包括模型测试仪表板,用于评估基于需求的测试用例和完整性和质量度量的结果,符合ISO 26262- 6:18 2018,条款9.4.3和条款9.4.5(图5)。

仪表板的截图,左边是工件列表,右边是小部件,显示了基于需求的测试指标。

图5。使用模型测试仪表板来根据ISO 26262评估基于需求的测试活动的质量和完整性。

IEC认证套件提供工具资格支持,TÜV SÜD证书和报告,用于Simulink检查,Simulink覆盖(包括模型和代码覆盖),Simulink设计验证器,和Simulink测试。

代码验证

ISO 26262为验证软件设计和实现提供了几个选项。IEC Certification Kit中描述的一种方法允许进行有限的跟踪审查,以检测生成代码中的意外功能,例如未跟踪到块或信号的代码。工具包自动为此目的生成一个跟踪矩阵。或者,您可以在软件在循环(SIL)测试期间使用Simulink coverage比较模型覆盖率和代码覆盖率,或者您可以使用Simulink code Inspector™。

最后,您可以使用Polyspace Bug Finder™检查MISRA的符合性。如果您的项目混合了生成的软件和手动编码的软件,那么使用MISRA检查和代码覆盖分析尤其有帮助。为了更加严格,您可以使用Polyspace Code Prover™来证明没有运行时错误,例如除零。

IEC认证套件为Polyspace提供工具资质支持,并提供TÜV SÜD证书和报告®2022世界杯八强谁会赢?产品。

在编译和生成可执行代码之后,您可以使用PIL测试在目标处理器上执行的代码上重用模型测试(图6)。

笔记本电脑连接到一个小电路板上,小电路板连接到一个电机上。

图6。嵌入式处理器的示例PIL。

ISO 26262强烈推荐对ASILs C和d进行背靠背测试。它指出了在具有代表性的目标硬件环境中进行测试的重要性,并强调需要了解测试和硬件环境之间的差异:

测试环境和目标环境之间的差异可能出现在源代码或目标代码中,例如,由于处理器的数据字和地址字的位宽不同。

但是每个计算机科学家都应该知道[6],不同平台之间存在许多潜在的数字差异来源,特别是浮点数据。有些开始是小的,但积累和增长,特别是在反馈控制系统。因此,ISO 26262列出了背靠背测试的各种在环方法:

软件单元测试可以在不同的环境中执行,例如:

-model-in-the-loop测试;
-software-in-the-loop测试;
-processor-in-the-loop测试;而且
-hardware-in-the-loop测试。

Simulink Test自动化了循环测试,包括SIL和PIL with Embedded Coder,以及HIL with Simulink Real-Time™,并提供了通过/失败报告和来自Simulink coverage的覆盖率指标。

工具资格

ISO 26262-8描述了额外的支持过程,包括变更控制、配置管理和文档。这些过程分别由Simulink Projects、Simulink模型差异和合并以及Simulink报告生成器™支持。

该标准还提供了工具分类和鉴定指导。它不允许工具供应商限定他们自己的工具,但要求用户为特定的项目限定工具。IEC认证套件通过提供典型用例、参考工作流、工具分类分析、软件工具文档、工具确认计划和验证测试有效地对工具进行预审。

TÜV SÜD审查和审计MathWorks®工具开发和质量过程,以及错误报告功能,并在每个产品发布时验证结果。IEC认证套件包括这些TÜV SÜD证书和报告,它们基于遵循适当的验证和验证工作流的需要。工具包提供了基于典型工具用例的参考工作流,比如本文中强调的那些。

工具包提供了更详细的信息,包括ISO 26262目标到Simulink支持能力的映射(图7)。

显示ISO 26262目标到基于模型的设计工具的映射表。

图7。摘自IEC认证套件中的ISO 26262到simulink的映射。

2018年12月发布的ISO 26262第二版指出,Simulink和Stateflow适用于软件体系结构和软件单元设计符号,并作为自动代码生成的基础(图8)。

显示软件设计符号和ASIL级别的表格。

图8。摘自ISO 26262- 6:18 2018,显示了合适的软件设计符号。

请注意,使用合格的工具并不保证所考虑的软件或系统的安全。

ISO 26262

ISO 26262是国际乘用车功能安全标准[1]。它解决了由故障、与安全相关的电子/电气(E/E)系统可能造成的危险。它使用汽车安全完整性级别(ASIL)作为风险分类名称,范围从a到D,其中ASIL D表示最高完整性级别。该标准有九个规范部分,第十部分是指南。每个部分都作为单独的文档提供。ISO 26262是基于目标的,本质上不是规定性的,但它包含了几百页的指导。第4、6和8部分分别是地址系统[ISO 26262-4]、软件[ISO 26262-6]和工具鉴定[ISO 26262-8]。

2022年出版的

查看相关行业文章

Baidu
map