0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

关于代码生成中的数据管理的分析和研究

MATLAB 来源:djl 作者:董淑成 2019-09-17 16:02 次阅读

请记得:

1. 拿正确的模型去生成代码;
2. 只对你关心的数据进行数据管理。

M数据对象的基本概念

在你的模型验证完成之后,就可以进行代码生成工作了,代码生成阶段最主要的工作就是数据管理。

前面我们说过,我们只管理我们关心的数据,对于那些无关的数据,就任由代码生成工具怎么处理吧。

数据管理的方式有好几种,我这里只介绍在工程化项目中被广泛应用的使用数据对象管理数据。这里的“数据对象”里面的“对象”二字和就是我们经常听到的“面向对象”里面的“对象”一样。没错,说白了,就是使用面向对象的方式去管理数据。

我们知道,在面向对象的编程模式下,有一个非常重要的概念——类。类是一种抽象,抽象出某一类事物共同具有的某些属性以及相关的操作(面向对象里称之为“方法”)。面向对象模式下,还有一个概念——包,包会把相关的几个类打包到一起,以便于管理。另外,就是对象,对象是类的实例,对象不再是抽象的,而是具体的,创建对象就是一个实例化过程。对象拥有类的所有属性,同时要求我们给出属性值。

Simulink在进行数据管理的时候,提供了两个包,一个是Simulink Package,另一个是mpt Package。下面以Simulink Package为例,介绍包、类以及属性的结构。

关于代码生成中的数据管理的分析和研究


如图示,Simulink包里有两个类,一个是Signal,一个是Parameter。对于其中的每个类,都有各自的属性和方法。

数据管理基本上就是管理事先定义好的各种属性,其中,最为重要就是数据类型(Data Type)和存储类(Storage Class)。数据类型相信大家都很熟悉,这里面稍微有些麻烦的是定点数,以后我会专门介绍数据的定点化,这里就不做过多的讨论;而存储类,是影响数据存储的重要因素。模型中的信号,我们可能定义为全局变量,也可能定义为静态变量;模型中的参数,我们可以定义为常数型变量,也可以定义为宏定义;还有的数据,在一个模块中定义后,在其他模块中就不能再次定义。所有这些,都是通过定义数据对象的存储类来实现的。

M代码生成示例

下面我通过一个简单例子来介绍一下数据管理过程,模型非常简单,输出Out1等于两个输入信号In1和In2相加再乘以k。这个模型,我们的目标代码如下:

z = ( x + y ) * k ;

其中, x、y在其他模块中定义,z和k在本模块定义。

关于代码生成中的数据管理的分析和研究

怎么做?

首先,设置代码生成工具为Embedded Coder,也就是设置系统目标文件(System Target File)为ert.tlc;

然后,数据管理:

使用信号对象管理信号

在信号线上定义信号名:鼠标双击信号线,出现编辑框之后,写上信号的名字x、y、z;

在数据字典或者Base Workspace里定义同名的信号对象:在Model Explorer里面,选中数据字典的Design Data,或者Base Workspace,然后添加三个Simulink Signal,并命名为x、y、z,设置x、y的Storage Class为Imported Extern,z的Storage Class为Exported Global;

将信号对象和信号关联起来:在信号线上,使用鼠标右键,选择Properties,然后在Properties对话框里选中Signal name must resolve to Simulink signal object,关联了信号对象的信号名前面会出现一个蓝色的叉子。

说明

鼠标右键点击信号线的方式只能对单个信号进行关联,如果想批量关联,可以在MATLAB窗口中使用如下命令:disableimplicitsignalresolution(‘mymodel’),假如模型文件的文件名是mymodel.slx或者mymodel.mdl。

使用参数对象管理参数

定义参数:双击Gain模块,赋值为k;

定义参数对象:在Model Explorer界面下,选中数据字典或者Base Workspace,定义Simulink Parameter对象k,给出k的初始值为2,设置Storage Class为constVolatile;

Inline参数:在配置参数(Configuration Parameters)的优化选项(Optimization)里设置的信号和参数(Signals and Parameters)设置参数的inline选项。

然后,就可以按下Ctrl+B生成代码了。经过上述设置之后,我们如愿得到了我们期望的代码:

z = ( x + y ) * k ;

其中x、y为外部模块定义好的全局变量,本模块内只做了Extern声明,没有定义,z为全局变量,定义在本模块,k为加了限定词const和volatile的参数。

说明

MATLAB从R2014b开始提供了数据字典功能,将数据对象通过独立的文件进行管理。如果使用数据字典管理数据的话,数据对象需要定义在数据字典里面,并且还要有一个将数据字典和模型关联的过程,如果使用Base Workspace管理数据,和以前版本的MATLAB没有区别。

上面是一个简单的例子,更多的代码生成相关的设置,可以留意MATLAB公众号中柚籽的系列文章《怎样生成我想要的C代码》(也可以在公众号中回复【柚籽】查看),也可以在今天的第二条图文中观看我录制的代码生成视频

最后,让我再次重复:拿正确的模型去生成代码只对你关心的数据进行数据管理

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 数据管理
    +关注

    关注

    1

    文章

    260

    浏览量

    19429
  • 静态变量
    +关注

    关注

    0

    文章

    13

    浏览量

    6610
收藏 人收藏

    评论

    相关推荐

    HarmonyOS开发实例:【分布式数据管理

    eTS中分布式数据管理的使用,包括KVManager对象实例的创建和KVStore数据流转的使用。
    的头像 发表于 04-11 09:57 446次阅读
    HarmonyOS开发实例:【分布式<b class='flag-5'>数据管理</b>】

    广立微和坤锐电子在良率数据管理分析业务领域达成合作

    近日,半导体数据分析领域的佼佼者广立微(Semitronix)与RFID硬件解决方案的领先企业上海坤锐电子(Quanray)达成战略合作。此次合作旨在良率数据管理分析领域,共同推动半导体行业的技术进步和效率提升。
    的头像 发表于 03-12 11:30 376次阅读

    安达发APS排产软件之PDM产品工艺数据管理

    PDM(Product Data Management,产品数据管理)是一种用于管理产品全生命周期内所有与产品相关的信息和数据的技术。在制造业中,PDM系统被广泛应用于产品工艺数据管理
    的头像 发表于 01-08 16:00 110次阅读
    安达发APS排产软件之PDM产品工艺<b class='flag-5'>数据管理</b>

    可视化数据管理平台的主要功能有哪些?#可视化 #电路知识

    数据管理
    光点科技
    发布于 :2023年12月04日 17:32:09

    可视化数据管理平台如何确保数据的安全性?#数据台 #光点科技

    数据管理
    光点科技
    发布于 :2023年12月01日 17:41:07

    可视化数据管理平台有哪些常见的功能模块?#数据管理平台 #光点科技

    数据管理可视化
    光点科技
    发布于 :2023年12月01日 09:42:31

    HarmonyOS数据管理与应用数据持久化(一)

    一. 数据管理概述 功能介绍 数据管理为开发者提供数据存储、数据管理能力,比如联系人应用数据可以保存到
    发表于 11-01 16:27

    基于GPRS与TCP的车载动态称重数据管理系统设计

    电子发烧友网站提供《基于GPRS与TCP的车载动态称重数据管理系统设计.pdf》资料免费下载
    发表于 10-24 09:44 0次下载
    基于GPRS与TCP的车载动态称重<b class='flag-5'>数据管理</b>系统设计

    基于能源物联网的低碳数据管理系统

    的低碳数据管理系统,可以接入各种用能设备和传感器,对其进行实时监测和可视化处理,并将数据上传到数据分析平台,已实现更高效的能源管理并减少碳排放。系统功能1、实时能源监测:通
    的头像 发表于 10-16 17:46 350次阅读
    基于能源物联网的低碳<b class='flag-5'>数据管理</b>系统

    嵌入式磨削加工主动测量仪数据管理技术研究

    电子发烧友网站提供《嵌入式磨削加工主动测量仪数据管理技术研究.pdf》资料免费下载
    发表于 10-08 09:57 0次下载
    嵌入式磨削加工主动测量仪<b class='flag-5'>数据管理</b>技术<b class='flag-5'>研究</b>

    于辰涛:工业边缘数据管理分析技术发展

    “边缘数据管理是基于分布式架构的数据管理与高性能存储方案,适应工业边缘高并发、写多读少的时序数据特点,协同计算、分析、存储的全局点位
    的头像 发表于 09-26 16:09 343次阅读
    于辰涛:工业边缘<b class='flag-5'>数据管理</b>与<b class='flag-5'>分析</b>技术发展

    手机端数之能工业数据管理平台有什么功能?

    手机端数之能工业数据管理平台有什么功能?
    的头像 发表于 09-20 15:50 207次阅读

    数据管理驾驶舱(工业数据可视化平台)是什么?有什么功能?

    数据视图,也无法对整个生产流程进行合理的分析和决策。因此,数据管理驾驶舱成为企业管理数据的重要帮手之一。 一、什么是
    的头像 发表于 07-20 14:28 1123次阅读

    ChatGPT上线最强应用:分析数据生成代码都精通

    有了 Code Interpreter,语言模型不仅可以生成代码,还可以独立执行代码。这个插件允许用户直接在 ChatGPT 对话窗口直接调用 Python,直接进行数据上传、下载、
    的头像 发表于 07-13 14:52 639次阅读
    ChatGPT上线最强应用:<b class='flag-5'>分析</b><b class='flag-5'>数据</b>、<b class='flag-5'>生成</b><b class='flag-5'>代码</b>都精通

    多层数据管理方案解决AUTOSAR CP Composition级别共享代码生成问题

    在实际的项目中,我们经常会遇到大规模模型代码生成的共享代码问题,而且常常还会涉及到自定制存储类,AUTOSAR Composition,多层数据管理方案等内容。该问题是一类经典问题,基
    的头像 发表于 05-11 09:47 637次阅读
    多层<b class='flag-5'>数据管理</b>方案解决AUTOSAR CP Composition级别共享<b class='flag-5'>代码</b><b class='flag-5'>生成</b>问题