Simulink自动代码生成:数据字典的建立及代码优化

  在上一节《Simulink自动代码生成:生成代码的基本设置》的基础上,我们来对模型进行优化,使得生成的代码更能满足实际的需求,没看过我上一篇文章的可以点开如下链接:
  Simulink自动代码生成:生成代码的基本设置
  本节我们我们首先来学习如何建立数据字典,然后通过所建立的数据字典对模型进行优化。

一. 未优化的代码

  在上一节生成的代码中,打开Calculation.c和Calculation.h文件可以发现在不经过处理的情况下,输入输出变量是以结构体的方式进行定义的。如图所示,在Calculation.h文件中对输入输出结构体进行了声明,在Calculation.c文件中对结构体进行了调用。
在这里插入图片描述
在这里插入图片描述
  但是在实际的开发当中,模型的输入可能来自于其它模块的输出,模型的输出也可能是其它模块的输入,仅仅是一个中间变量,并不需要定义成结构体的形式,因此就要对其进行优化,以满足我们的实际需求。

二. 数据字典的建立

  为了对输入输出变量进行优化,我们首先要建立一个数据字典。通过数据字典的名字我们也可以联想到它的用途,类似于编程中对变量进行声明,未经声明的变量是不能使用的,数据字典也是如此,它的作用也就相当于对变量进行声明,使MATLAB在使用时就像我们查汉语字典时能够找到变量的定义。接下来我们就来学习如何建立数据字典。
  (1)打开Model Explorer—File—New—Data Dictionary。
在这里插入图片描述
  (2)执行完第一步后将会弹出以下对话框,将文件名命名为Calculation(命名不是固定的)并进行保存。

在这里插入图片描述
  (3)完成后将看到左侧多出一个Calculation选项,工具栏标红的4个工具分别是MATLAB变量、Simulink参数、Simulink查表和Simulink信号。

在这里插入图片描述
  (4)接下来添加4个Simulink信号,双击信号名并修改成我们想要的名字,选择数据类型并对存储类别进行修改,输入信号的Storage Class选择为ImportedExtend,输出信号的Storage Class选择为ExportedGlobal,如图所示。
在这里插入图片描述
在这里插入图片描述
  (5)在完成以上步骤后对数据字典进行保存,选中Calculation,右键选择保存。
在这里插入图片描述

三. 数据字典与模型的关联

  在建立了数据字典后,要将数据字典与模型进行关联,使得模型在使用数据字典中的变量时能够找到其定义。
  (1)首先在模型空白处点右键,在弹出的对话框中选择模型属性。
在这里插入图片描述
  (2)选择External Data—Browse—选择我们刚刚建立的数据字典—选择OK完成关联设置。
在这里插入图片描述

四. 配置信号属性

  (1)单机选中信号线,信号线会变成蓝色,然后右键鼠标,在弹出的对话框中选择属性。
在这里插入图片描述
  (2)将信号名字与我们数据字典中定义的名字一一对应起来。
在这里插入图片描述
  (3)所有信号线设置完成后如图所示,信号线上会出现信号的名字和一个小叉子,这下终于可以吃饭了。
在这里插入图片描述

五. 优化后的代码

  在执行完以上所有步骤后,重新生成代码(Ctrl+B),可以看到,输入信号的声明不再是在Calculation.h中,也不再是以结构体的方式出现,而是以extern的方式出现。
在这里插入图片描述
  输入变量依然在Calculation.h中声明,在Calculation.c中调用,但它不在是以结构体的形式出现,而是普通变量,并且变量名和我们设置的相同。
在这里插入图片描述

六. 总结

  本节内容对模型的输入输出变量进行了优化,并介绍了数据字典的生成方式,当然数据字典的生成方式不止一种,还有脚本+Excel的方式,在后续文章中将进行介绍。模型的优化也不仅仅是对输入输出变量的优化,包括函数形式,函数名,注释等等都需要进行优化。后续将一一进行介绍并编写一些有趣的脚本,以辅助自动代码生成。

  • 24
    点赞
  • 111
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

谁呀!咋滴了!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值