在上一节《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的方式,在后续文章中将进行介绍。模型的优化也不仅仅是对输入输出变量的优化,包括函数形式,函数名,注释等等都需要进行优化。后续将一一进行介绍并编写一些有趣的脚本,以辅助自动代码生成。