代码生成中的数据管理2025-08—03 董淑成数据对象的基本概念在你的模型验证完成之后,就可以进行代码生成工作了,代码生成阶段最主要的工作就是数据管理。前面我们说过,我们只管理我们关怀的数据,对于那些无关的数据,就任由代码生成工具怎么处理吧。数据管理的方式有好几种,我这里只介绍在工程化项目中被广泛应用的使用数据对象管理数据。这里的“数据对象”里面的“对象”二字和就是我们常常听到的“面对对象”里面的“对象”一样.没错,说白了,就是使用面对对象的方式去管理数据。我们知道,在面对对象的编程模式下,有一个非常重要的概念——类,类是一种抽象,抽象出某一类事物共同具有的某些属性以及相关的操作(面对对象里称之为“方法”)。面对对象模式下,还有一个概念——包,包会把相关的几个类打包到一起,以便于管理。另外,就是对象,对象是类的实例,对象不再是抽象的,而是具体的,创建对象就是一个实例化过程。对象拥有类的所有属性,同时要求我们给出属性值。Simulink 在进行数据管理的时候,提供了两个包,一个是 Simulink Package,另一个是 mpt Package。下面以 Simulink Package 为例,介绍包、类以及属性的结构。如图示,Simulink 包里有两个类,一个是 Signal,一个是 Parameter。对于其中的每个类,都有各自的属性和方法。数据管理基本上就是管理事先定义好的各种属性,其中,最为重要就是数据类型(DataType)和存储类(Storage Class).数据类型信任大家都很熟悉,这里面略微有些麻烦的是定点数,以后我会专门介绍数据的定点化,这里就不做过多的讨论;而存储类,是影响数据存储的重要因素。模型中的信号,我们可能定义为全局变量,也可能定义为静态变量;模型中的参数,我们可以定义为常数型变量,也可以定义为宏定义;还有的数据,在一个模块中定义后,在其他模块中就不能再次定义.所有这些,都是通过定义数据对象的存储类来实现的.代码生成事例下面我通过一个简单例子来介绍一下数据管理过程,模型非常简单,输出 Out1 等于两个输入信号 In1 和 In2 相加再乘以 k,这个模型,我们的目标代码如下:z = (x+y)*k;其中, x、y 在其他模块中定义,z 和 k 在本模块定义。怎么做?首先,设置代码生成工具为 Embedded Coder,也就是设置系统目标文件(System Target File)为 ert。tlc;然后,数据管理:使用信号对象管理信号1. 在信号线上定义信号名,鼠标双击信号线,出现编辑框之后,写上信号的名字...