代码生成中的数据管理董淑成_第1页
代码生成中的数据管理董淑成_第2页
代码生成中的数据管理董淑成_第3页
代码生成中的数据管理董淑成_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、代码生成中的数据管理2016-08-03  董淑成数据对象的基本概念在你的模型验证完成之后,就可以进行代码生成工作了,代码生成阶段最主要的工作就是数据管理。前面我们说过,我们只管理我们关心的数据,对于那些无关的数据,就任由代码生成工具怎么处理吧。数据管理的方式有好几种,我这里只介绍在工程化项目中被广泛应用的使用数据对象管理数据。这里的“数据对象”里面的“对象”二字和就是我们经常听到的“面向对象”里面的“对象”一样。没错,说白了,就是使用面向对象的方式去管理数据。我们知道,在面向对象的编程模式下,有一个非常重要的概念类,类是一种抽象,抽象出某一类事物共同具有的某些属性以及相关的操作(面

2、向对象里称之为“方法”)。面向对象模式下,还有一个概念包,包会把相关的几个类打包到一起,以便于管理。另外,就是对象,对象是类的实例,对象不再是抽象的,而是具体的,创建对象就是一个实例化过程。对象拥有类的所有属性,同时要求我们给出属性值。Simulink在进行数据管理的时候,提供了两个包,一个是Simulink Package,另一个是mpt Package。下面以Simulink Package为例,介绍包、类以及属性的结构。如图示,Simulink包里有两个类,一个是Signal,一个是Parameter。对于其中的每个类,都有各自的属性和方法。数据管理基本上就是管理事先定义好的各种属性,其

3、中,最为重要就是数据类型(DataType)和存储类(Storage Class)。数据类型相信大家都很熟悉,这里面稍微有些麻烦的是定点数,以后我会专门介绍数据的定点化,这里就不做过多的讨论;而存储类,是影响数据存储的重要因素。模型中的信号,我们可能定义为全局变量,也可能定义为静态变量;模型中的参数,我们可以定义为常数型变量,也可以定义为宏定义;还有的数据,在一个模块中定义后,在其他模块中就不能再次定义。所有这些,都是通过定义数据对象的存储类来实现的。代码生成事例下面我通过一个简单例子来介绍一下数据管理过程,模型非常简单,输出Out1等于两个输入信号In1和In2相加再乘以k,这个模型,我们的

4、目标代码如下:z = (x+y)*k;其中, x、y在其他模块中定义,z和k在本模块定义。怎么做?首先,设置代码生成工具为Embedded Coder,也就是设置系统目标文件(System Target File)为ert.tlc;然后,数据管理:使用信号对象管理信号1. 在信号线上定义信号名,鼠标双击信号线,出现编辑框之后,写上信号的名字x、y、z;2. 在数据字典或者base workspace里定义同名的信号对象,在ModelExplorer里面,选中数据字典的Design Data,或者base workspace,然后添加三个SimulinkSignal,并命名为x、y、z,设置x、

5、y的Storage Class为ImportedExtern,z的Storage Class为Exported Global;3. 将信号对象和信号关联起来,在信号线上,使用鼠标右键,选择Properties,然后在Properties对话框里选中Signal name must resolve to Simulink signal object,关联了信号对象的信号名前面会出现一个蓝色的叉子。说明鼠标右键点击信号线的方式只能对单个信号进行关联,如果想批量关联,可以在MATLAB窗口中使用如下命令:disableimplicitsignalresolution(mymodel),假如模型文件的

6、文件名是mymodel.slx或者mymodel.mdl。使用参数对象管理参数1. 定义参数,双击Gain模块,赋值为k;2. 定义参数对象,在ModelExplorer界面下,选中数据字典或者base workspace,定义Simulink Parameter对象k,给出k的初始值为2,设置StorageClass为constVolatile;3. Inline参数,在配置参数(Configuration Parameters)的优化选项(Optimization)里设置的信号和参数(Signals and Parameters)设置参数的inline选项。然后,就可以按下Ctrl+B生成代码了。经过上述设置之后,我们如愿得到了我们期望的代码:  z = (x+y)*k;其中x、y为外部模块定义好的全局变量,本模块内只做了Extern声明,没有定义,z为全局变量,定义在本模块,k为加了限定词const和volatile的参数。说明MATLAB 从R2014b开始提供了数据字典功能,数据字典将数据对象

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论