1.如何使用C语言在matlab的源码simulink中进行算法仿真
2.基于Embedded Coder 的AUTOSAR代码生成及MIL SIL PIL验证
如何使用C语言在matlab的simulink中进行算法仿真
本文介绍如何在matlab的simulink中嵌入C语言进行多输入多输出的仿真;
Matlab提供了S-function模块,位于Simulink/User-Defined Functions模块库中,源码它可以方便地调用matlab脚本,源码即.m为后缀的源码文件,也可以调用c文件,源码但这里使用的源码极品obv 指标源码是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函数来处理输入和输出,具体如下所示;
主要的dde决策指标源码逻辑是在这个函数中进行编写;源码太长,占较大篇幅,暂时不贴,主要分析其中几个主要的函数;
上面的代码可以看到,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语言进行仿真,但是比特币 分叉 源码还有很多请问没有考虑在内,需要读者进行举一反三,如果有别的问题也可以进行在文章下方进行评论,或者私信我。
笔者能力和水平有限,文中难免有错误和纰漏之处,请大佬们不吝赐教;创作不易,如果本文帮到了您,;
基于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 的代码生成、验证和部署过程。