文档

优化工具和技术

使用模型顾问优化模型以生成代码

您可以使用Model Advisor分析模型以生成代码,并确定模型中妨碍生产部署或限制代码效率的方面。您可以从一组检查中进行选择,以在模型的当前配置上运行。Model Advisor分析模型并生成检查结果,为模型的改进提供建议每个区域。大多数Model Advisor诊断不要求模型处于编译状态;需要处于编译状态的模型会被记录下来。

在运行Model Advisor之前,选择您计划用于代码生成的目标。Model Advisor最有效地使用ERT和基于ERT的系统目标文件。

使用以下示例来研究使用Model Advisor进行代码生成的优化模型:

请注意

示例模型rtwdemo_advisor2rtwdemo_advisor3需要状态流®和定点设计器™ 软件

有关使用Model Advisor的更多信息,请参见运行模型Advisor检查(金宝app模型)。有关检查的更多信息,请参见金宝app仿真软件编码器检查

优化状态流对象生成代码的设计技巧

不能在图形函数中访问机器父数据

此限制可防止长参数列表出现在为图形函数生成的代码中。您可以访问与图形功能位于同一图表中的本地数据。有关详细信息,请参阅通过定义图形函数重用逻辑模式(Stateflow)。

明确说明图形函数的内联选项

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

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

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

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

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

使用具有离散采样时间的图表

为不在触发或启用子系统内的离散图表生成的代码使用整数计数器来跟踪时间,而不是Simulink金宝app®提供时间。这样就可以在开销和内存方面更有效地生成代码,并使这些代码能够用于在循环中的软件(SIL)和在循环中的处理器(PIL)模拟。

额外的优化技术

您可以应用以下技术来优化代码生成的模型:

  • 对于嵌入式编码器®用户,如果应用程序仅使用整数算术,请清除金宝app支持浮点数参数软件环境部分的接口窗格,以便生成的代码不包含浮点数数据或操作。清除此参数后,如果在代码生成期间遇到非整数数据或表达式,将引发错误。错误消息将报告违规的块和参数。

  • 禁用配置参数>代码生成>接口>高级参数>MAT-file日志参数。取消选择此参数将消除初始化、更新和清理日志变量时使用的额外代码和内存。此外,为支持MAT文件日志而生成的代码将调用金宝app马洛克,这对您的应用程序可能是不需要的。

  • 使用Upgrade Advisor升级旧模型(由以前的版本或当前版本保存)以使用当前特性。有关详细信息,请参见模型升级(金宝app模型)。

  • 在构建之前,为编译器设置优化标志(例如,- 02海湾合作委员会对于微软®Visual C++®编译器)。

  • 通过为S函数编写TLC文件,将C/C++S函数直接内联到生成的代码中。有关详细信息,请参阅利用s -函数目标加速仿真、重用代码或保护知识产权看看内联C MEX s -函数

  • 使用其他的S金宝appimulink数据类型如果可能的话。可用的数据类型包括布尔,有符号和无符号8-,16-和32位整数,以及32-和64-浮点数(a是64位的浮点数)。有关更多信息,请参见关于Simulink中的数据类型金宝app(金宝app模型)。有关逐块摘要,请单击showblockdatatypetable或者在命令窗口中键入命令。

  • 对于配置为在生成的代码中存储在内存中的可调块参数,可以将参数数据类型与信号数据类型匹配,以消除不必要的类型转换和C移位。在可能的情况下,以小整数数据类型存储参数值。看见生成代码中的参数数据类型

  • 删除查找表数据中的重复值。

  • 使用Merge块尽可能地合并信号的输出。当您需要使用状态流图控制函数调用子系统的执行时,此块特别有用。下面的模型展示了如何使用Merge块的示例。

    当连接到合并块的多个信号具有非-汽车存储类,所有非汽车连接到该块的信号必须标签相同具有相同的存储类.当合并块直接连接到另一个时,这些规则适用于连接到组中任何合并块的信号。

相关话题