主要内容

生成C或c++代码Stateflow

从Simulink生成C或c++代码金宝app®包含statflow的模型®图表,你一定要用金宝app仿真软件编码器™.除了金宝app仿真软件编码器,您可以使用嵌入式编码器®以进一步增强生成的代码。嵌入式编码器增强使您的代码更可读,更紧凑,执行更快。

当您为目标生成代码时,statflow解析器根据受支持的图表符号和操作语言语法计算每个statflow机器中的图形和非图形对象和数据。金宝app有关更多信息,请参见在图表仿真过程中检测常见的建模错误

通过使用生成代码金宝app编码器

金宝app仿真软件编码器允许您从包含状态流图的模型生成C和c++代码。然后,您可以将生成的代码用于实时和非实时应用程序,包括:

  • 模拟加速度

  • 快速原型

  • 半实物仿真)测试

使用金宝app仿真软件编码器也允许您访问经典加速器和快速加速器模式。加速器模式的工作原理是生成目标代码,然后使用目标代码执行。有关这些模式的更多信息,请参见加速模式如何工作(金宝app模型)

HIL测试允许您测试控制器设计,并确定物理系统(植物)模型是否有效。有关HIL测试的更多信息,请参见硬件在环仿真的基础知识(Simscape)

开始设置用于代码生成的模型金宝app仿真软件编码器,请参阅配置模型和生成代码(金宝app仿真软件编码器)

通过使用生成代码嵌入式编码器

通过添加Embedded Coder,您可以生成更紧凑、更容易阅读和更快运行的C或c++代码。此外,嵌入式编码器扩展的能力金宝app仿真软件编码器通过允许您控制生成的函数、文件和数据。此外,Embedded Coder支持轻松集成遗留代码、数据类型和校准参数。嵌入式编码器支持以下软件标准:金宝app

  • AUTOSAR

  • MISRA - C

  • ASAP2

Embedded Coder还为特定硬件提供了具有高级优化金宝app和设备驱动程序的支持包。

要开始使用Embedded Coder设置代码生成模型,请参见使用快速入门工具生成代码(嵌入式编码)

优化生成代码的设计技巧Stateflow对象

不能访问机器生成的数据

这个限制防止在为图形函数生成的代码中出现长参数列表。您可以访问与图形函数驻留在同一图表中的本地数据。有关更多信息,请参见通过定义图形函数重用逻辑模式

此外,Embedded Coder不支持对机器生成的数据使用代码替换库。金宝app有关更多信息,请参见可以从Simulink模型中替换的代码金宝app(嵌入式编码)

明确关于图形函数的内联选项

当您在状态流程图中使用图形函数时,请选择内联函数的财产内联函数的选择.否则,为图形函数生成的代码可能不会按您希望的方式显示。有关更多信息,请参见指定图形函数的属性

避免在状态流图中使用多个边缘触发事件

如果使用多个触发器,则生成多个代码语句来处理上升或下降边缘检测。如果需要多个触发器,则使用函数调用事件。有关更多信息,请参见通过发送输入事件激活状态流程图

将图表的输入信号合并为单个总线对象

当您使用总线对象时,您减少了生成函数的参数列表中的参数数量。这条原则也适用于图表的输出信号。有关更多信息,请参见定义Stateflow结构

使用离散样本时间

为不在被触发或启用的子系统中的离散图表生成的代码使用整数计数器来跟踪时间,而不是Simulink提供的时间。金宝app生成的代码使用更少的内存,并允许在软件在环(SIL)和处理器在环(PIL)模拟模式中使用代码。

为快速原型和生产部署生成代码

该表将您导向基于您的目标的代码生成信息。

目标

金宝app仿真软件编码器的文档

嵌入式编码文档

生成C/ c++源代码

代码生成基础知识(金宝app仿真软件编码器)

代码生成基础知识(嵌入式编码)

生成C/ c++源代码并构建可执行文件

构建过程(金宝app仿真软件编码器)

构建过程(嵌入式编码)

集成外部代码

外部代码集成(金宝app仿真软件编码器)

代码整合(嵌入式编码)

只在可移植的、自包含的库中包含库图的外部代码,以便在多个模型中使用

集成库图表的外部代码(金宝app仿真软件编码器)

集成库图表的外部代码(嵌入式编码)

优化生成的代码

减少布尔和状态配置变量的内存使用(金宝app仿真软件编码器)

减少布尔和状态配置变量的内存使用(嵌入式编码)

可追溯性的Stateflow生成代码中的对象

追溯性评论提供了一种方法:

  • 验证生成的代码。您可以确定哪一个statflow对象对应于一行代码,并跟踪来自已评审或未评审的不同对象的代码。

  • 在为大型模型生成的代码中包含注释。您可以在生成的代码中识别对象,避免手动输入注释或描述。

要启用可跟踪性注释,您必须拥有Embedded Coder或HDL Coder™软件。对于C/ c++代码生成,注释出现在生成的代码中,用于嵌入式实时()的基础目标。有关更多信息,请参见跟踪生成代码中的状态流元素(嵌入式编码)使用可追溯性在Simulink模型金宝app和HDL代码之间导航(高密度脂蛋白编码器)

相关的话题