登录 | 注册 退出 投稿

汽车电子软件设计和测试的知识和技能要求

专栏作者 2023-07-31

内容提要:本文介绍了新入行开发人员使用硬件在环(HiL)设计和测试汽车安全关键系统所需的知识和技能。我们简要介绍了开发过程,并简要说明了各个阶段,其中包括文档中书面文本的一些典型示例(需求、测试用例等)。该过程遵循ASPICE,并重点关注V模型的尖端。


摘要

本文介绍了新入行开发人员使用硬件在环(HiL)设计和测试汽车安全关键系统所需的知识和技能。适用于完成电气工程或机电一体化理学硕士水平的、目标是在汽车行业就业的学生。我们简要介绍了开发过程,并简要说明了各个阶段,其中包括文档中书面文本的一些典型示例(需求、测试用例等)。该过程遵循ASPICE,并重点关注V模型的尖端。所提供的文本可以作为一个有用的信息,使现有课程适应行业新的开发和测试过程带来的新需求。

1.简介

在现代车辆中,电气、电子和逻辑电子设备的数量不断增加。这不仅适用于主驱动器(动力传动系统),也适用于大量辅助设备。在许多情况下,以前的机械或液压装置正在被电动装置取代。对于许多此类设备(所谓的安全关键设备)来说,失效可能会导致车内乘客受到严重甚至致命的伤害。必须以合理的成本并以车辆生产商可持续的方式尽可能避免这些失效。

在许多情况下,使用极其可靠的设备会导致最终产品的成本非常高,使客户无法承担。因此,解决方案是以这样的方式进行开发:即使在发生失效的情况下,设备也能保持安全,即实现设备的功能安全,从而实现车辆的功能安全。应避免失效,但如果不可能,则必须减轻其影响。这个目标可以通过使用容错设备来实现。汽车行业的开发周期基于经典的V模型,描述了从用户需求到产品验证的开发过程。在汽车行业中,流程是按照ASPICE标准指定的。系统和软件开发流程均按照IEC/ISO 26262(道路车辆电气、电子和可编程电子设备的功能安全标准)中规定的流程和方法进行升级。因此,ASPICE和IEC/ISO 26262是汽车行业遵守质量管理和功能安全评估的最重要文件。IEC/ISO 26262中定义的风险分类方案称为汽车安全完整性等级(ASIL),用于根据特定驾驶情况下的故障情况对系统的危害进行评级。

为了验证应用的系统、架构、软件和硬件,测试是必不可少的工具。它用于确定是否满足设定的目标。测试是根据需求进行的,其中IEC/ISO 26262引入的最重要的升级是引入了功能安全目标的测试。为此,ISO/IEC不仅规定了有关过程的要求,还规定了应采用的方法。

在IEC/ISO 26262要求的方法中,硬件在环(HiL)测试已成为汽车领域不可或缺的。它表示将被测设备放置在模拟环境中的方法。该方法的基本原理如图1所示。

1.png

图1:HIL测试基本原理

通过使用HiL,可以在接近真实的条件下进行系统测试。还需要注意的是,测试的可重复性得到保证,并且相同的测试硬件只需进行有限的修改即可重复用于各种设备的测试。由于被测设备在测试过程中是真实可用的,因此不需要了解其内部设计,因此HiL测试是黑盒测试的一种形式。黑盒测试可以用于单元测试、集成测试、系统测试以及一定级别的测试,甚至系统验证。上述测试过程已被汽车行业广泛接受。对于任何希望成为汽车开发流程或供应链一部分的公司来说,它们都是必须的。然而,据观察,熟悉这些流程和方法的工程师严重缺乏,因此许多公司,尤其是规模较小的公司,在采用它们时遇到了严重的困难。未来的员工肯定需要具备该领域的知识,因此将其教学纳入教育过程的一部分非常重要,尤其是在高等教育阶段。这对于电气工程和机电一体化专业的学生尤其重要。

新主题的要求以及现有主题对教育过程的扩展将在下文中介绍。在相应调整大学课程领域已经开展了广泛的活动,特别是汽车大学项目,但是这些活动必须通过测试方法进行扩展,尤其是与HiL相关的测试方法。

本文的结构如下。首先在简介之后,将更详细地介绍汽车行业的设计流程。介绍了V型模型及其活动。接下来描述汽车行业的测试。介绍了主要的途径、方法和过程。基于此解释,提出了HiL测试所需的一些知识和技能。为了形象化问题并提出教学方法,提出了一个测试示例。最后一部分给出结论,总结未来教育所需的最重要的主题。

2.汽车行业的设计流程

ASPICE和IEC/ISO 26262为嵌入式汽车系统的开发流程提供了框架。下面我们将简要介绍这两个标准的要点。

A.ASPICE

ASPICE基于SPICE–ISO/IEC15504标准。它是为适用于汽车行业的产品开发过程中的质量管理而开发的。简而言之,ASPICE定义了开发流程的组织方式。该标准基本上是从汽车行业的良好实践中总结出来的一套规则。基于这些实践,汽车供应商根据开发项目进行评估并获得评级,该评级决定供应商作为全球主要汽车原始设备制造商供应链成员的资格,这通常也是有针对性的改进的基础。

图2显示了构成ASPICE和ISO 26262支柱的V开发流程。一个基本特性是V左侧的过程步骤之间以及V左侧和右侧的相关过程步骤之间的双向可追溯性。虽然左侧涵盖了从系统级到软件(SW)单元级的需求工程和设计,右手边专门用于从软件单元级到系统级的测试形式的验证和确认。在下文中,我们将简要描述V左侧的每个流程步骤。

2.png

图2:V模型设计(ASPICE)

利益相关者需求是(内部或外部)客户需求,描述系统应做什么以及系统应如何执行。利益相关者需求文件根据需求的可行性、风险和优先级进行分析。

系统需求——在系统设计阶段,工程师对利益相关者的需求文档进行技术分析,并从中得出公司内部的系统需求。每个利益相关者的需求应导致至少一个原子(即不可分割的)系统需求。

系统架构设计将系统需求映射到系统组件(机械、电子硬件或软件)及其接口。在这个阶段,架构设计仍然是一个高级黑盒设计,通过明确定义的接口指定主要系统组件及其互连。

软件需求分析从系统需求中得出对软件相关部分的需求。系统架构设计应用于更好地确定软件的需求。

软件架构设计将软件需求映射到软件组件及其接口。与系统架构设计一样,这是一个高层设计,重点关注软件组件及其通过明确定义的接口进行的互连。

软件详细设计和单元构造包括软件单元(最小的不可分割的设计元素)的规范和开发阶段。单元是软件架构中组件的构建块。

B.功能安全(ISO/IEC 26262)

功能安全在工业的所有主要领域中变得越来越重要。它的应用以及对流程、方法和文档的形式化和标准化的要求带动了多项标准的创建。在电气和电子自动化设备的开发中,涵盖功能安全的基本标准是IEC/ISO 61508,旨在适用于工业的所有领域。针对不同行业的具体要求,制定了附加功能安全标准。在汽车行业,应用ISO 26262(道路车辆标准),而在航空航天领域,应用DO-178/ED-12(机载系统和设备认证中的软件注意事项)和DO-254/ED-80(机载电子硬件设计保证指南)是相关的。DO-178/ED-12和DO-254/ED-80是指南而非标准,但相关机构将其视为事实上的标准。

功能安全并不意味着最终产品及其运行不存在任何故障。这些将永远存在,因为众所周知,每个系统都会在某个时刻出现故障。功能安全的概念意味着即使存在故障,系统的运行也将保持安全(转换到安全状态,不会造成伤害或至少减轻伤害)。

C.ASPICE和功能安全(ISO/IEC 26262)

ASPICE和ISO 26262是互补的,ASPICE流程参考模型可以在ISO 26262第4、6、7和8章的某些部分中看到。因此,ISO 26262已经纳入了ASPICE流程参考模型(图3)。ISO 26262扩展了设计具有安全相关问题的产品的生命周期管理,并向流程添加了方法。

3.png

图3:ISO26262和ASPICE实施

3.汽车行业测试

测试在汽车行业至关重要,因为ISO 26262和ASPICE要求从利益相关者要求到单元构造的每项要求都必须经过验证和确认。前面描述的V模型包含多个测试级别并指示开发和测试之间的关系。

实现标准化流程定义和严格遵循V循环的问题是多方面的。对每个V周期活动的工作量进行估计是很困难的,尤其是在新的开发中。在大多数情况下,可用的有经验的人员数量远远少于所需的数量。一些公司使用相同的资源进行开发和测试,这会损害专业能力的可用性以及开发人员与测试人员的独立性。HiL系统提供了促进V循环方法的关键要素。然而,正确使用它们需要经历大量的学习曲线,除非工程师具有教育或相关专业活动的先前经验。

A.HiL系统

HiL系统的基本结构如图4所示。它由被测设备(DUT)和HiL模拟器组成。两个单元均与模拟和数字系统以及总线(CAN、LIN、UART)连接。

4.png

图4:HiL系统

被测设备是指需要测试的系统或组件。它可以是一个完整的系统,也可以是它的一部分。

HiL模拟器由多个组件组成。它是围绕系统模型构建的,该模型代表系统的物理和/或逻辑行为。通常,这是在微处理器硬件或FPGA上执行的软件单元,并且可以在尽可能少的限制下进行编程。该单元的软件可以是基于模型的(对于dSPACE提供的HiL系统,使用 Matlab/Simulink等软件)或使用经典编程语言进行编程。该模型通过输入和输出软件(通常以驱动程序的形式存在)连接到DUT,输入和输出软件控制输入和输出硬件。输出硬件可由PWM输出、数模转换器、数字输出和总线组成。输入硬件包含模数转换器、数字输入、总线、比较器、捕获单元等。

HiL模拟器可以使用专用的自行开发的软件和硬件来应用,但由于工业用途也需要正式的资质,因此dSPACE、National Instruments和Typhoon HiL等公司的商业产品更为常见。

在我们的案例中,测试是在dSPACE HIL系统的帮助下完成的,该系统使用基于模型的Simulink编程软件。被测设备是一个电机控制器,仅通过总线通信与外界通信。需要进行测试来验证DUT的性能和行为是否符合利益相关者和系统要求规范。

测试工程师应能够形式化DUT正常操作的每个场景。然而,它们还必须覆盖比正常操作和系统参数限制更广泛的场景,以便验证系统在规范范围之外的正确和安全行为。这种详尽的基于行为的黑盒测试很有效,但很耗时。

测试工程师和测试用例开发人员不能是同一个人。测试用例开发人员对系统有更广泛的了解并了解系统约束。测试工程师只知道测试用例开发人员想要测试什么以及应该如何测试。测试工程师根据测试用例开发人员的要求在测试设备上编写代码,并验证软件/单元需求或验证开发中的系统需求。如果验证/确认失败(测试给出否定结果),则应分析需求和测试用例需求,应纠正或修改不正确的项目以满足所需的标准。测试用例开发人员和测试工程师不断沟通,涉及测试用例和在测试设备(HiL系统)上编写测试。

4.开发和测试示例

开发和测试的示例表示为客户(利益相关者)请求开发人员以ASPICE流程管理和ISO26262的一部分的方式开发和复制的应用程序。

A.应用(利益相关者需求文件)

以尽可能简短的文字向开发人员提供功能的基本描述以及应执行的操作。如果一个需求中有太多需求,则应该将其分解为更多需求。利益相关者需求的示例(ShReqxxx,其中xxx代表需求ID号)如下:

ShReq001:电子设备应测量电压并通过通信链路传输信息。

在此示例中,显然应使用测量电压并通过通信链路传输有关其值的信息的设备。没有给出电压测量的方法,也没有定义通信网络或协议,因为这还处于早期阶段,并且会在后期强制开发人员做出决定。也就是说,我们的想法是让他们拥有尽可能多的自由。

B.系统要求

根据ISO 26262和ASPICE,软件相关要求源自利益相关者的要求。在应用需求中,我们只有一项需求,但它已经表明了对硬件和软件需求的需求,但出于演示目的,仅提取了一项软件需求。

SysReq001:系统应通过通信链路监控和传输输入电压值,精度为输入信号的3%。

要求很简单。它应包含系统限制,但如果利益相关者文件未给出,则不应决定最终设计。

此时,定义接受/验证标准非常重要。它应包含有关系统功能的关键信息。示例如下:

测量电压应在Umin至Umax范围内进行传送,动态响应至少为dTime。

Umin和Umax的值代表最小和最大工作电压,dTime代表测量值的最大刷新时间。值得注意的是,可以使用符号代替实际(数字)值。当使用符号来提供需求灵活性时,可以将变量分组到系统参数文档中。

C.软件需求

作为硬件设计框架的首要先决条件,选择物理通信系统或硬件。根据该决定,软件工程师可以开始开发软件需求。为了演示的目的,这里仅编写一个软件需求,并且为了能够在硬件决策之后编写软件需求。1.)通信链路应使用车辆总线标准控制器局域网络(CAN)。2.)ADC引脚和外部连接之间的转换应记录在硬件软件接口(HSI)文档中。

SwReq001:电压应通过CAN总线通信以SI单位表示,并且在整个测量电压工作范围内精度应在±Uacc以内。

需求同样是简约的,有严格的限制和要求。正如系统要求中的情况一样,可以使用符号,并且可以在软件参数文档中对变量进行分组。

软件需求验收/验证标准的形式与系统需求的情况类似:

应满足CAN总线通信电压表示的准确性。根据CAN总线通信延迟,应考虑动态精度。

D.软件架构

软件架构是在比软件详细设计和单元构建(后期)更高的级别上定义的,这一点应该得到尊重。它应粗略地定义软件需求功能、接口和时序约束。软件架构应将涵盖所有软件需求的软件功能分组。

软件需求中已经描述了软件架构,但尚未以图形形式表示。架构以图形方式开发,代表软件详细设计和单元构建阶段的起点。

简化的软件架构文档(图5)用作软件集成策略的基础,也可用于概述软件资合规测试计划。

5.png

图5:简化的软件架构文档

E.软件详细设计和单元构建

软件详细设计应通过分析软件需求和软件架构设计文档来选择。应特别注意数据流以及哪些功能对时间要求严格。多个软件单元可以从单个软件需求中派生出来。

(图6)中的虚线框表示哪些软件单元属于哪个软件需求。它表明至少可以从一个软件需求中提取出一个软件单元。

6.png

图6:带有软件单元开发的简化软件架构

SwUnit001:应使用驱动器采集名为VDC的引脚上的电压,每100µs使用ADC进行电压测量。名为U_DC的输出值应代表SI单位的电压值。

SwUnit002:U_DC值应根据CAN通信文档通过CAN总线通信发送。

F.测试用例

为了验证或确认设备的正确操作或设计,需要进行测试。为此,需要开发测试用例(TC)。测试用例的格式应采用易于再现、重复或复制的形式。测试用例应该简单易懂。

下面给出了一个测试用例的例子:

TC001:

验证通过CAN总线通信表示的电压精度。

使用HiL系统通过CAN总线通信进行通信并获取电压信息。

通过在满量程工作范围内改变DUT直流母线电压。

从而验证DUT直流链路上的电源电压和CAN总线通信上的表示电压是否满足至少±0.5V的电压精度。根据CAN总线通信延迟考虑动态精度。

上面的示例中使用了“验证”、”使用”、”通过”、“从而”作为描述部分,以便于理解。随着流程的开发,这种形式的一致使用使测试工程师更容易理解测试用例开发人员的想法。“验证”用作测试语句中的第一个词,解释将测试/验证的内容。“使用”定义了所应用的工具和设备。以“通过”开头的句子给出了测试的过程/方法,以“从而”开头的句子给出了有关验证成功的预期结果的信息。

G.测试(步骤)

要按照测试用例的要求执行测试,必须按所示顺序执行以下步骤:

1.初始化DUT–使用正常工作电压为DUT供电,

2.通过CAN总线通信表示的池电源电压和电压,

3.将电源电压更改为最小工作电压值,并开始每隔1s以0.1V的步长递增电压,并以最大工作值结束,

4.直流母线电源的电压与CAN总线通信表示的电压偏差不得超过±0.5V,

5.工作电压全变化期间不得触发错误信息

该文本也必须是测试用例文档的一部分。

5.HIL测试所需的知识和技能

越来越多的教育机构提倡团队合作却在实际中独立工作。事实上,团队合作是研发(R&D)行业所追求的目标。众所周知,大多数专家在关键时刻(公开露面)容易出现沟通不良和措辞不当的情况。学会在团队中沟通并清晰地交换数据至关重要。工程师在团队中发挥作用的能力受到高度赞赏。

需要有关系统操作的基本知识。同样,使用半形式化建模方法(例如UML(通用建模语言)或类似方法)非常有价值。预计将来将需要正式的方法。

系统工程是一项重要技能。需要将要设计的设备理解为一个系统,并且在早期阶段应避免细节,因为它们可能会限制设计的可能性。设计需要对不同的解决方案保持开放,并且在早期阶段不必解决细节。在许多情况下,过早地要求工程师解决问题会导致执行ISO 26262和ASPICE所需流程时出现问题。实际上,这两个指南/标准将层次结构作为系统设计的主要方法。必须明确划分和澄清相关人员的角色。这为所有参与者分配了任务,并使他们能够单独行动,根据明确的指示进行交互。这样,每个参与者都可以检查流程中的前一个阶段,并向后续阶段的开发人员提供清晰的输出,而不是限制他们的工作。

硬件需求的开发和测试需要有关硬件设计及其局限性的知识。软件开发人员,更准确地说是开发硬件相关软件(驱动程序等)的软件工程师,也需要有关处理器及其外围设备的知识。特别需要注意的是,硬件软件接口(HSI)是必需的,并且是设计的重要组成部分。

A.应用

应用信息通常由客户提供,特别是当要设计的设备是系统的组件时。在其他情况下(如果设计了完整的系统)需要有关系统操作的一般知识。

B.系统要求

为了系统需求定义的目的,有关系统操作的知识需要更多的技术性。系统工程和质量管理领域的知识需要添加到一般技术知识中,但不需要有关应用硬件和软件的详细知识。

C.系统架构

为了将系统需求映射到系统组件,需要使用系统、硬件、软件和机械工程领域的知识来开发一个良好的系统平台,该平台分为许多可以单独开发的子组件。需要基本的工程技能,但主要问题是能够理解子组件之间的交互。这可能是机电一体化工程师的典型职位。

D.软件要求

编写软件需求时,需要有关要应用的软件工具的专业知识。为了理解硬件的构造以及与外界的接口,需要有关硬件项目的基本知识。编写软件需求的软件工程师应该熟悉硬件的功能。

E.软件架构

软件架构开发需要更高层次的方法。为了根据软件需求形成架构,需要了解系统和软件工程的知识。这通常是由软件工程师执行的任务。

F.软件详细设计和单元构建

要根据软件架构和软件需求开发详细设计,需要有关软件工具的专业知识。要开发驱动程序,需要对硬件设置有更深入的了解。对于更多面向硬件的单元设计可以由嵌入式软件工程师来执行,对于更通用的单元基本编程知识应该足够了。

G.测试用例开发

编写测试用例有关质量管理和一致性的知识是成功的关键。在开始编写测试用例之前,需要整个被测系统的系统、软件、硬件和架构相关文档。测试用例开发人员必须熟知测试设备和软件的可能性。硬件和软件接口应明确定义。DUT硬件示意图应可供测试人员使用,并且所有DUT与外界的接口都需要详细描述。为了能够执行这些任务,测试用例开发人员应该了解要为其编写测试用例的系统或单元的操作。测试用例开发人员不应该知道内部结构和软件,因为测试用例需要根据需求而不是设计来开发。因此,测试用例开发人员应该具备系统工程领域的知识,并能够利用可用的测试工具来重新创建输入/输出行为。测试工程师应该能够使用测试工具,这需要一些编程技能(在测试设备中使用的编程工具中)以及将DUT连接到测试设备的能力。测试用例开发人员的角色应该由经验丰富的工程师担任,而测试工程师的角色可以由经验不足的人员担任,这使他们有很好的机会了解流程和设备。

H.HiL测试编程

需要有关测试设备使用的软件工具的专业知识,特别是如果使用先进的HiL系统来测试软件和系统要求。需要有关测试硬件设备限制的专业知识。测试程序员必须能够预测哪些测试用例可以执行,哪些测试无法使用可用设备进行测试。基于模型的方法和工具对于有效使用现代HiL设备至关重要。

为了能够开发更复杂的HiL测试,需要有关系统建模和仿真的知识。HiL测试开发人员需要能够开发DUT的模拟环境,该环境通常由DUT环境的物理和逻辑模型以及接口组成。为此,至少需要电气工程领域的基础知识。控制工程也很重要,因为需要控制HiL中的模型才能模拟实际环境的行为。建模和识别是非常有用的工具。

结论

根据前文所述的研究结果以及在汽车行业安全关键应用开发项目中收集的经验,可以确定,除了特定研究领域所需的知识外,学生还应该获得以下知识:教育过程的框架,还应包含软件工程的知识,特别是设计和测试的方法和过程。更具体地说,这些知识包括需求工程、实验设计、软件工程和系统工程的一些基本内容。所需的典型技能包括使用应用程序生命周期管理(ALM)工具(如Polarion、Doors等)和使用版本控制系统(Git、SVN)。使用哪种工具并不重要,主要目的是让学生熟悉它们的存在并理解它们的基本含义和功能。基于模型的方法(如通用建模语言,UML)也很重要,因为它们在汽车行业中越来越受欢迎,显著缩短了产品开发时间,并减少了开发过程中出现错误的可能性,这不仅是由于编程错误,而且是由于无法理解规范和要求。Matlab/Simulink等工具正在成为开发过程中的经典选择。未来,甚至像形式化方法这样的高级方法也将变得重要。


00.png
会议更多信息及洽谈,详询“牛小喀”微信:NewCarRen



作者:牛喀网专栏作者
牛喀网文章,未经授权不得转载!


下一篇: 汽车安全档案中流程和产品的论证思路
上一篇: 质量量化在汽车嵌入式系统和软件中的应用
相关文章
返回顶部小火箭