办公 频道

汽车行业案例:安全汽车控制技术

  【IT168 案例】在增加燃油经济性,保持安全性和提供娱乐功能的市场压力驱动下,汽车行业开发的汽车产品在具有更强适用性的同时,也变得更为复杂。汽车现在已经在很大程度上被计算机化,而且管理每款车型中车载系统的电子控制单元(ECU)都由复杂的软件加以管理。新型混合动力汽车(HEV)技术依赖大量电路和软件的支持。在HEV中,中央计算机通过ECU负责同时管理传统内燃机系统和电动机。

  为竭尽全力应对成本和设计要求,汽车行业采用了AUTOSAR(由电子、半导体和软件组织机构结成的联盟,为管理行业中日益复杂的电子设备提供标准)标准和一种被称为基于车型开发/设计(MBD)的方法。MBD要求设计工程师使用能够支持模型集成和整个系统虚拟实时测试的通用设计环境。

  富士重工旗下的综合性多领域交通运输设备制造商斯巴鲁最近启动了自己的混合动力电动汽车(HEV)和电动汽车(EV)项目,并准备在包括斯巴鲁XV在内的全部新开发项目中使用MBD方法。

  车辆现在变得不断复杂、多用途和计算机化。

  在公司寻求一款能够满足MBD需求的开发环境工具过程中,斯巴鲁工程师评估了ANSYS全资子公司Esterel Technologies提供的SCADE软件建模工具。SCADE可提供直观的图形界面,能支持系统和软件工程师方便地集成和验证他们的模型。SCADE生成的模型能够自动产生C语言源代码,这不仅最大程度地降低编程人员的出错几率,也自动把SCADE严格的标准和安全要求纳入其中。

  为竭尽全力应对成本和设计要求,汽车行业采用了AUTOSAR标准和一种被称为基于车型开发/设计(MBD)的方法。

  软件架构的重构

  由于斯巴鲁刚刚接触HEV开发,工程师有机会从头创建软件架构。将AUTOSAR标准应用于新的ECU可节省基础软件开发的成本和时间。不过更具挑战性也更为重要的目标是确保软件组件能够在未来的项目中重复利用。ECU的所有要求都按应用软件或基础软件划分,以便根据AUTOSAR架构配置三层软件。基础软件由服务、驱动程序和操作系统(OS)组成。创建的方式为手工编码或使用现成的商业产品(COTS)。斯巴鲁将重点放在根据需求进行纯应用设计,这有助于SCADE的部署,因为该软件的模型独立于OS和硬件实现方案。

  当SCADE部署到位后,使用斯巴鲁公司基于Eclipse API的Java?实用工具来分析为基础软件编写的定义文件,即可自动创建中间件层的接口节点。然后从定义文件中提取数据类型和数据结构,并在SCADE项目中定义为SCADE类型。用中间件模型层连接应用软件和服务能够最大限度地减少人为差错。如果中间件层和基础软件层之间的接口发生改变,SCADE类型的定义也会相应一致地自动更新。SCADE的语义检查器会使用模型不断验证SCADE类型定义,以消除建模错误。

安全汽车控制技术

  SCADE部署在2013年上市的一款量产车型的混合动力车辆管理系统,即电子计算机单元(EBU)。在本原理图中,该电子计算机单元管理着多个ECU。

  使用SCADE的软件设计流程

  在定义了SCADE类型后,斯巴鲁即可执行一系列小周期迭代,直至得到详尽的设计和验证流程。斯巴鲁使用SCADE软件开发流程的开始步骤为:根据软件要求开发测试场景和通过Simulink网关将系统工程师设计的大量功能模型(Simulink?)转换为SCADE模型。

  应用层

  一旦成功完成模型转换后,就可以将模型集成到安全的SCADE架构模型中。为保持从Simulink转换到SCADE的一致性,工程师将为面向功能模型设计仿真开发的相同测试场景馈送SCADE进行单元测试。在使用单元测试完成详细设计后,会根据集成模型生成C代码,然后传递给EBU测试使用。

  使用SCADE的安全架构设计

  由于每个SCADE节点均为模块化构造,可以用单元测试来验证功能部件模型。安全软件架构的关键之处在于当应用在执行多任务状态下工作时,需要确保所有数据的安全。

安全汽车控制技术

  EBU控制软件中的软件架构经分层可充分满足AUTOSAR标准。

  将源自COTS OS的安全分区架构引入汽车软件并非易事,因为需要权衡成本和功能。

  对于理想的运行而言,多任务运行是必备要求。为满足成本和功能的权衡要求,一种安全的SCADE架构模型应运而生。

  独立于项目或应用类型的安全架构一般都有一个根节点。这个根节点由一个包含决策树的安全状态机构成。这个状态机只有两种状态:初始化和运行。

  测试场景

  初始化状态只在初始化时处于激活状态,而运行状态则在周期的其余时候处于激活状态。根据来自基础软件的变量线程,运行状态包含具有三种可执行选择的决策树。各个值的差异由OS中配置的执行时序确定。例如如图所示,每个子节点可执行0.1ms、1ms或者10ms。 但是子节点之间的通信通过接口进行,故需要保护以防止中断。在执行速度较慢的任务的同时,可能会中断速度较快的任务。速度较慢的任务会不会使用原本用于速度较快任务的数据呢?在执行速度较慢的任务的过程中,速度较快的任务的输出数据会经中断更新,并且可能会覆盖正用于当前执行任务的值。这类数据错误会在模型中产生随机结果。要让速度较慢的应用安全地执行,输入数据在供计算使用之前,必须专门存储起来。

  应用模型与安全SCADE架构模型相结合

  在用根节点确定架构后,可使用模块化方法设计各个子节点。面向EBU应用的功能模型由一个系统工程小组采用Simulink完成设计。

安全汽车控制技术

  使用SCADE的HEV软件开发流程

安全汽车控制技术

  图片由斯巴鲁提供

  这些Simulink模型也是采用Simulink网关导入SCADE的。在导入之前,这些模型根据软件要求先在Simulink环境中通过验证。测试场景在Excel表格中描述,然后转换为SCADE仿真器使用的*.in格式。如果两次仿真的结果完全相同,就表示仿真是正确的。一旦所有的功能型Simulink模型都正确转换到SCADE中,就可以集成为安全的SCADE架构节点。

  SCADE模型的优化

  为缩短验证时间,使用SCADE Suite Design Verifier来检查优化前的SCADE模型是否与优化后的SCADE模型完全一样。一般来说,应使用正式的验证技术来测试安全等属性,但如果节点中包含的算术计算多于决策图和状态机中的计算,验证算法可能会遭遇数值问题。斯巴鲁工程师坚持每天优化SCADE模型,然后在Design Verifier的帮助下验证这些模型。

  为集成自动生成安全可靠的代码

  SCADE软件开发流程的最后一步是使用经IEC 61508认证的SCADE Suite KCG代码生成器从经过验证的SCADE模型生成C语言源代码。生成的代码一般可满足安全目标。由于KCG工具通过了这方面的资格认证,斯巴鲁可确认从安全SCADE架构模型获得的安全属性已经保存到生成的代码中。有两个SCADE Suite KCG功能对于确保代码满足安全属性至关重要:

安全汽车控制技术

  安全SCADE架构模型的基础是安全状态机与决策图的结合。

  比较架构模型与生成代码

  当一个节点包含记录所需值的变量时,SCADE可确保通过唯一的路径访问数据。这并不适用于SCADE中的“函数”,因为函数并不包含用于记录所需值的任何变量。如果节点TN()调用节点a()和节点b(),而节点a()和b()都调用节点c(),且它们都含有用于记录所需值的变量,就可以在生成的代码中按节点确定数据结构。虽然节点c()同时被节点a()和节点b()调用,它的对应数据的结构可以分别确定。在KCG保障下,当根节点在执行时被中断调用,可以安全地创建另一数据结构。

  此外,生成的节点的正确性还得归功于SCADE Suite经KCG IEC 61508认证的代码生成器。C语言代码是使用KCG从安全SCADE Suite架构模型所生成代码的一部分。为比较安全SCADE架构模型和代码,所有输入的复本均使用默认的memcpy函数,通过kcg_copy宏函数进行编码。KCG允许在生成代码

  后使用用户自定义宏替换kcg_copy宏,无需给其它代码造成任何影响。斯巴鲁用限制复制过程中发生中断的宏替换了kcg_copy宏。

安全汽车控制技术

  通过唯一路径安全地访问存储所需值的变量。

  在发生中断时保护变量免遭覆盖;在按安全SCADE架构模型的要求使用之前,正确地复制输入数据。

  使用SCADE为HEVS开发控制软件

  使用SCADE软件,斯巴鲁能够描述从安全架构设计到详细设计的各种一致可读的模型。在SCADE Suite的KCG IEC 61508认证代码生成器的帮助下,代码级的验证时间显著缩短,因为大部分验证已经在SCADE模型层面提前完成。斯巴鲁工程师小组不仅完成了一个高度复杂的大型应用,而且还大幅减少了软件开发和测试时间。斯巴鲁的工程师将继续让SCADE Suite在他们的HEV开发流程中发挥重要的作用。

安全汽车控制技术

安全汽车控制技术

  斯巴鲁工程师不仅完成了一个高度复杂的大型应用,而且还大幅减少了软件开发和测试时间。

0
相关文章