1.新能源汽车整车控制器VCU 硬件在环(HiL)仿真测试方案——干货分享
2.GUI仿真和SIMULINK仿真有什么区别
3.基于Embedded Coder 的汽车汽车SIL/PIL 模式的代码覆盖率
4.基于Embedded Coder 的AUTOSAR代码生成及MIL SIL PIL验证
5.如何使用C语言在matlab的simulink中进行算法仿真
新能源汽车整车控制器VCU 硬件在环(HiL)仿真测试方案——干货分享
HiL的定义:硬件在环是计算机专业术语,亦为硬件在回路,源码其旨在通过使用“硬件在环”(HiL)来显著降低开发时间和成本。汽车汽车在开发电气机械元件或系统时,源码过去计算机仿真和实际实验通常是汽车汽车分开进行。然而,源码源码微平台通过采用HiL方式,汽车汽车这两者可以结合在一起,源码展现出极大的汽车汽车效率提升。
硬件在环(HiL)主要有三种形式:1)虚拟控制器+虚拟对象=动态仿真系统(纯粹的源码软件系统仿真);2)虚拟控制器+实际对象=快速控制原型(RCP)仿真系统(系统的一种半实物仿真);3)实际控制器+虚拟对象=硬件在回路(HiL)仿真系统(系统的另一种半实物仿真)。HiL目前主要有三大硬件平台:NI平台、汽车汽车DSpace平台、源码ETAS平台(ETAS已宣布退出HiL业务)。汽车汽车本文主要以NI平台介绍VCU HiL系统方案。源码
VCU HiL测试系统方案:HiL测试系统整体架构包含三层:第一层次为HiL测试系统软硬件架构,汽车汽车包括硬件设备、实验管理软件、被测控制器等;第二层次为HiL测试系统开发,基于第一层次软硬件架构进行被测对象仿真模型开发、实时I/O接口匹配、硬线信号匹配及实验定义等;第三层次为HiL测试,包括测试序列开发、激励生成加载、模型参数调试、故障模拟实现及测试分析与评估等。
VCU HiL测试系统架构主要包括:上位机(PC)、PXI机箱、实时处理器、数据采集板卡、CAN通讯板卡、DIO板卡、电阻模拟板卡、低压可编程电源等。上位机电脑安装Veristand、Teststand软件,通过以太网与PXI机箱中的实时处理器连接。实时处理器运行实时系统(Real Time),安装Veristand终端引擎,通过与上位机数据传输,诊所asp源码将仿真模型部署到实时系统中并控制运行状态。PXI机箱提供多种类型的板卡,实现不同信号的模拟和采集功能。
VCU HiL测试系统主要功能包括:模拟VCU所有硬线输入信号,采集VCU所有硬线输出信号,模拟VCU CAN总线接收信号和接收CAN总线发送信号,通过整车实时仿真模型及I/O接口实现VCU的闭环测试验证,通过软/硬件实现VCU相关电气故障模拟,通过可编程直流电源模拟VCU的供电电源,通过编辑测试序列实现自动化测试,支持VCU所有I/O端口测试验证,支持VCU CAN通讯功能测试验证,支持VCU整车控制策略全功能验证,支持VCU故障诊断功能测试验证,支持VCU极限工况下控制功能测试验证,支持VCU回归测试,支持VCU耐久测试,支持NEDC等典型标准工况测试及自定义工况测试。
VCU HiL测试系统主要由硬件平台、软件平台和控制模型三部分组成。硬件平台采用分布式设计模式,上位机作为控制核心,下位机以PXI机箱、实时处理器及I/O板卡为核心。系统硬件平台包括PXI机箱、实时处理器、I/O板卡、通讯板卡、电源管理模块、故障注入板卡、低压可编程电源、信号调理模块、机柜及上位机电脑。软件平台包括实验管理软件和自动化测试软件。本方案试验管理软件基于NI VeriStand软件平台,实现系统配置管理和测试管理。自动化测试软件基于NI TestStand软件平台,提供可视化测试序列编辑环境、发稿源码测试管理功能、测试执行、多线程并行测试、用户管理、测试报告管理、自定义操作员界面、源代码控制整合、数据库记录等功能。仿真模型为纯电动车整车仿真模型,包括车辆纵向动力学模型、驾驶员模型、电机模型、动力电池模型、主减速器模型、虚拟控制器模型、I/O模型、道路及环境模型等,满足电动汽车整车控制策略功能测试验证要求,基于MATLAB/Simulink软件开发,模型精度高,支持用户图形化界面输入数据,实时在线修改模型参数,支持离线和在线仿真,满足新能源汽车HiL测试系统实时性要求,模型开源、规范、易读。
HiL测试流程包括测试准备、测试用例开发、测试工程搭建、测试调试、测试总结。测试准备包含被测控制器接口分析、硬件资源分配、控制器线束设计、功能分析、测试计划安排。测试用例开发方法研究是bilibili源码透露测试的关键点之一,采用合理方法开发测试用例,增加测试覆盖度,减少冗余重复,提高测试效率。测试工程搭建基于实验管理软件和自动化测试软件完成,包括软硬件工程配置、测试界面搭建、模型配置、通讯配置等。测试调试包含冒烟测试、接口测试、自动化测试,测试报告通过HiL测试管理软件执行测试,输出报告。测试总结包括环境、周期、人员、内容分析,问题统计与解决,测试完成情况检查,提交工作成果。
总结:硬件在环仿真测试系统使用实时处理器运行仿真模型模拟受控对象运行状态,通过I/O接口与被测ECU连接,对ECU进行全面、系统测试。从安全性、可行性和成本考虑,HiL硬件在环仿真测试已成为ECU开发流程中重要环节,减少了实车测试次数,缩短开发时间,降低成本,提高ECU软件质量,降低汽车厂风险。在新能源汽车领域,HiL硬件在环仿真测试对于核心电控系统极为重要。近年来,随着对汽车行业的资本密集投入,新能源汽车HiL测试工程师岗位需求量大,unity scrollrect源码薪资增加,从长远职业规划来看,HiL测试工程师是一个可持续发展的岗位。意昂工课根据多年工程经验,推出了HiL测试课程,基于实际项目案例和岗位需求技能制定教学大纲,采用任务驱动方式引导学员,提升HiL测试实践能力,积累实战经验。对HiL测试感兴趣的学员可私聊沟通。
GUI仿真和SIMULINK仿真有什么区别
GUI是图形用户界面Graphical User Interface,是将程序做成一个软件,使用者只需在界面上操作,可以不看源代码甚至完全不懂代码都没问题。Simulink就是仿真啦。
GUI可以调用Simulink,将其作为软件的一部分。
基于Embedded Coder 的SIL/PIL 模式的代码覆盖率
在嵌入式开发中,Embedded Coder 和 Simulink Coverage工具支持软件在环(SIL)和处理器在环(PIL)模式下的代码覆盖率分析。启用SIL或PIL覆盖率,首先需要注释“覆盖率”工具条上的“运行时覆盖率”按钮,确保模型在仿真时不会自动收集数据。然后,通过以下步骤进行操作:
1. 在Simulink窗口中,导航到“应用程序”并选择“SIL/PIL 管理器”。
2. 在“SIL/PIL”选项卡中,选择“自动验证”并勾选“仅SIL/PIL仿真”。
3. 点击“运行SIL/PIL”来开始相应的仿真模式。
在SIL或PIL模式下,代码覆盖率信息可通过“代码”视图查看。在搜索框右侧选择“显示代码覆盖率”,会显示代码元素的覆盖率批注,包括行号、链接和覆盖率信息。底部的覆盖率部分会显示代码覆盖率报告的概要。
然而,要注意SIL和PIL模式的代码覆盖率存在局限性。例如,slvnvdemo_counter_harness模型是针对模型引用的覆盖率收集,而非顶层模型。要收集SIL代码覆盖率,需在“覆盖率分析器”中设置为SIL仿真模式,并分析覆盖率。
仿真完成后,Simulink会显示“代码”和“覆盖率详细信息”窗格,其中包含SIL模式的覆盖率摘要。单击“详细信息”可以查看按源文件、函数和模型对象的覆盖率详细报告。在代码视图中,代码行旁边会有覆盖情况的注释,帮助开发者理解代码的覆盖率状态。
最后,若需生成独立的代码覆盖率报告,可以在“覆盖率”选项卡中点击“生成报告”,报告会包含源代码和生成代码的关联注释,便于进一步分析和理解。
基于Embedded Coder 的AUTOSAR代码生成及MIL SIL PIL验证
生成符合 AUTOSAR 标准的 C 代码和 ARXML 描述,通过使用 Simulink 编码器和 Embedded Coder 软件,可以构建 AUTOSAR 组件模型。此模型将生成算法 C 代码,并导出符合 AUTOSAR 经典平台规范的 ARXML 描述。在 Simulink 中进行测试或集成到 AUTOSAR 运行时环境中。
首先打开要从中生成 AUTOSAR C 代码和 ARXML 说明的组件模型。使用 open_system(“autosar_swc”) 来打开一个示例模型。若要优化代码生成的模型配置设置,推荐使用 Embedded Coder 快速入门。通过从“应用”选项卡中打开该应用,并在 “AUTOSAR” 选项卡上单击“快速启动”来完成快速启动过程。选择“输出”窗口中的符合 AUTOSAR 的输出选项 C 代码。快速入门软件将指导您完成配置步骤。
在生成代码之前,请检查 AUTOSAR 字典中的 XML 选项设置。在“AUTOSAR”选项卡上,选择“代码接口”> AUTOSAR 字典”。在 AUTOSAR 字典中,选择“XML 选项”。配置参数包括将“导出的 XML 文件”打包设置为“模块化”,以便将 ARXML 导出到模块化文件中。这样将生成 modelname_component.arxml、modelname_datatype.arxml 和 modelname_interface.arxml 等文件。
完成模型的配置后,生成符合经典平台规范的 AUTOSAR C 代码和 XML 组件说明。在模型窗口中按 Ctrl+B 生成模型。生成过程将 C 代码和 ARXML 说明生成到模型生成文件夹中。生成完成后,将打开代码生成报告。通过执行这些步骤,可以确保模型的正确配置和生成。
要从已配置为 AUTOSAR 经典平台的模型生成符合 AUTOSAR 标准的 C 代码和 ARXML 组件说明,需确保模型的架构版本与 AUTOSAR 标准相匹配。首次导入或为模型选择 AUTOSAR 系统目标文件会将架构版本参数设置为默认值 4.3。导入 ARXML 文件时,导入程序将检测模式版本并在模型中设置模式版本参数。例如,基于架构 4.3 修订版 4.3.0 或 4.3.1 的导入将设置架构版本参数为 4.3。
生成 AUTOSAR 模型时,代码生成器会导出 ARXML 说明并生成符合当前架构版本的 C 代码。例如,架构版本为 4.3 时,导出将使用架构 4.3(修订版 4.3.1)的导出架构修订版。在导出 AUTOSAR 软件组件前,检查所选架构版本。如有需要更改,可使用模型配置参数为架构版本生成 XML 文件。
最大短名称长度的指定范围为 到 个字符(包括 和 )。默认值为 个字符。使用模型配置参数“最大短名称长度”来设置此值。启用 AUTOSAR 编译器抽象宏可以独立于平台生成编译器指令,这有助于在 位平台上优化代码效率,而无需为每个编译器单独移植源代码。
根级矩阵 I/O 配置允许在生成的 C 代码中保留多维数组的维度,增强代码集成。如果应用设计需要列主数组布局,则可以配置 ARXML 导出以支持根级矩阵 I/O。默认情况下,对于列主阵列布局,软件不允许根级矩阵 I/O。启用此功能,可以指定支持使用一维数组的根级矩阵 I/O。
配置完成 AUTOSAR 代码生成和 XML 选项后,生成代码。通过生成组件模型,将生成符合 AUTOSAR 的 C 代码和 AUTOSAR XML 描述到模型生成文件夹中。生成过程会生成一个或多个型号名称 *.arxml 文件,具体取决于“导出的 XML 文件打包”设置为“单个文件”还是“模块化”。这些文件将包含模型名称、组件描述和其他相关组件信息。
将 AUTOSAR XML 组件描述合并回 AUTOSAR 创作工具中,以便利用已分区的文件结构进行合并。在 AUTOSAR 创作工具和基于 Simulink 模型的设计环境中,代码生成器保留 AUTOSAR 元素及其通用唯一标识符(UUID),以支持模型的往返传输。
使用 AUTOSAR 4.0 代码替换库,可以生成与 AUTOSAR 标准紧密一致的函数。此代码替换库允许自定义代码生成器以生成兼容 AUTOSAR 标准的 C 代码。在 MATLAB 和 Simulink 查找表索引与 AUTOSAR MAP 索引之间存在差异时,代码替换软件会转置 AUTOSAR MAP 例程的输入参数。浏览支持的 AUTOSAR 库例程并配置代码生成器使用 AUTOSAR 4.0 代码替换库。
为了支持 AUTOSAR 模型的 MATLAB 主机代码验证,AUTOSAR Blockset 提供了 IFX、IFL、MFX 和 MFL 例程的主机实现。使用这些实现作为模型启用软件在环(SIL)验证,而处理器在环(PIL)验证则适用于在生产目标硬件上验证目标代码。
配置并运行模型的 SIL 仿真,以验证生成的 AUTOSAR C 代码。使用测试工具执行相关操作以检查组件模型与生成代码之间的等效性。对于多实例软件组件,可构建配置为多个实例化的 AUTOSAR 软件组件模型,并导入先前版本中的 AUTOSAR 代码进行观察。
在进行 AUTOSAR 代码生成时,需注意以下限制:未选中“仅生成代码”复选框时,生成模型时会提示只有在使用 AUTOSAR 系统目标文件构建可执行文件的情况下才能使用 AUTOSAR 系统目标文件。此外,总线元素尺寸保留在导出的 ARXML 中,并在模型配置为“以行为主”时生成代码。C++ 为 AUTOSAR 自适应应用生成的样式范围枚举类在头文件中生成,以方便集成。
了解这些关键步骤和注意事项后,即可高效地利用 Embedded Coder 和 Simulink 进行基于 AUTOSAR 的代码生成、验证和部署过程。
如何使用C语言在matlab的simulink中进行算法仿真
本文介绍如何在matlab的simulink中嵌入C语言进行多输入多输出的仿真;
Matlab提供了S-function模块,位于Simulink/User-Defined Functions模块库中,它可以方便地调用matlab脚本,即.m为后缀的文件,也可以调用c文件,但这里使用的是LEVEL-1的s-function,即只能进行单输入和单输出。关于LEVEL-1的单输入单输出,可参考《matlab 调用C程序进行simulink仿真》这篇文章,具体不再赘述,相关信息如下所示;
如果需要进行多输入多输出(MIMO)的系统的仿真,那么就需要LEVEL-2的s-function,因此这里需要使用S-Function Builder来自定义需要输入的参数和输出的参数;
首先拖拽S-Function Builder到仿真文件中,并双击打开,可以看到具体的属性如下图所示;
一般初级的使用,这里有四个地方需要注意,已经在上图中标注出来;
后面将结合一个例子进行分析;
首先设置文件名,本文设置为sfun_myc;
然后在输入和输出选项下有相关端口的属性选项,具体如下;
点击图标①,在Input ports的选项下,添加了u0,u1,u2和t,这四个输入信号的添加;
输出具体如下图所示;
设置成功之后,具体信息如下图所示;
模块图标如下图所示;
从上面两图可以看出,已经设置完成,点击Build生成S-Function对应的C程序,包括;
文件列表如下图所示;
sfun_myc.c是软件自动生成的文件,源码相对较长,占较大篇幅,暂时不贴,主要分析其中几个主要的函数;在mdlOutputs函数会每过一个采样点(sample time)就被调用一次,在这里以及传入了我们之前定义好的四个参数,以及需要输出的三个参数;并且最终调用sfun_myc_Outputs_wrapper函数来处理输入和输出,具体如下所示;
主要的逻辑是在这个函数中进行编写;源码太长,占较大篇幅,暂时不贴,主要分析其中几个主要的函数;
上面的代码可以看到,u0为输入,y0和y1位输出;
在sfun_myc_Outputs_wrapper函数中进行修改,就可以得到:
这里用梯形速度曲线进行测试,具体如下;
编辑好相应的函数就可以开始编译程序;在matlab终端输入以下指令;
0 warning 0 errors
如果出现以下提示:错误使用 mex 未找到支持的编译器或 SDK。您可以安装免费提供的 MinGW-w C/C++ 编译器;请参阅安装 MinGW-w 编译器。如需更多选项,请参阅 mathworks.com/support/c...。则需要先根据提示安装相应的编译器。
仿真的框图如下所示;
写的是一个梯形曲线规划, ,结果符合预期,开心。
本文总结了在matlab的simulink中调用C语言进行仿真,但是还有很多请问没有考虑在内,需要读者进行举一反三,如果有别的问题也可以进行在文章下方进行评论,或者私信我。
笔者能力和水平有限,文中难免有错误和纰漏之处,请大佬们不吝赐教;创作不易,如果本文帮到了您,;