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

    文章

    344

    浏览量

    20624
  • 静态变量
    +关注

    关注

    0

    文章

    13

    浏览量

    6886
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    【汽车行业指南】超越竞争对手:用统一的数据管理平台Perforce P4,赋能汽车软件创新与安全合规

    软件定义汽车的时代,数据管理已成核心竞争力。指南指出:领先市场的关键,不是单点工具,而是一个可扩展、合规、高效的数据管理底座(如Perforce P4)。欢迎汽车开发者与管理者下载细读。
    的头像 发表于 01-16 15:26 898次阅读
    【汽车行业指南】超越竞争对手:用统一的<b class='flag-5'>数据管理</b>平台Perforce P4,赋能汽车软件创新与安全合规

    中国重汽获得国家数据管理能力成熟度四级认证

    近日,由国家工业和信息化部指导,中国电子信息行业联合会发布了《关于公布获得数据管理能力成熟度等级证书单位的通知》,中国重汽获得国家数据管理能力成熟度“量化管理级”(4级)认证,标志着中
    的头像 发表于 01-13 16:30 904次阅读

    安宝特FME:零代码数据集成平台,赋能企业实时数据管理与多行业数字化转型

    安宝特科技作为Safe Software在中国的官方授权合作伙伴,推出FME空间数据集成平台,以零代码、全数据连接和实时处理能力,助力全球25,000+企业突破数据孤岛。本文将深度解析
    的头像 发表于 12-18 17:13 922次阅读

    AI HOME智能体:当存储遇上智能体,开启数据管理新纪元​

    AI HOME智能体的出现,标志着数据管理进入智能化时代。它将NAS的存储能力与AI的智能分析能力完美结合,为用户提供更高效、便捷、智能的数据管理体验。 未来,随着AI技术的不断发展,AI HOME智能体将会在更多领域发挥其价值
    的头像 发表于 12-17 17:02 1355次阅读
    AI HOME智能体:当存储遇上智能体,开启<b class='flag-5'>数据管理</b>新纪元​

    AI NAS:当存储遇上智能,开启数据管理新纪元

    数据爆炸的时代,AI NAS(网络附加存储)已成为个人和企业存储海量数据的利器。然而,面对日益庞大的数据量,传统的NAS系统在文件管理和搜索效率上逐渐力不从心。AI NAS应运而生,
    的头像 发表于 11-27 11:26 1261次阅读
    AI NAS:当存储遇上智能,开启<b class='flag-5'>数据管理</b>新纪元

    车长客通过国家数据管理能力成熟度最高等级认证

    近日,中国中车集团旗下车长客股份公司正式通过国家《数据管理能力成熟度评估模型》(DCMM)最高等级——优化级(五级)认证,成为轨道交通行业首家获此殊荣的企业,标志着车在数据管理能力
    的头像 发表于 11-24 16:22 713次阅读

    介绍电能质量在线监测装置数据管理的安全要点

    电能质量在线监测装置的数据管理涉及 电网运行敏感数据 (如电压暂降、谐波、功率因数等),其安全直接影响电力系统稳定性、供电可靠性及用户用电安全。结合电力行业特性(高可靠性、强实时性、严合规性
    的头像 发表于 09-25 17:21 951次阅读

    怎样进行数据管理平台的压力测试?

    在电能质量在线监测装置的数据管理平台(以下简称 “平台”), 压力测试的核心目标是验证平台在高负载(如海量数据接入、高并发查询、峰值业务流量)下的稳定性、性能瓶颈及容错能力 ,确保其满足实际运行
    的头像 发表于 09-19 13:57 678次阅读
    怎样进行<b class='flag-5'>数据管理</b>平台的压力测试?

    电能质量在线监测装置的数据管理平台应该具备哪些功能?

    电能质量在线监测装置的数据管理平台,核心目标是实现 数据全生命周期的可靠管控、高效分析与价值挖掘 ,同时满足运维便捷性、合规性及跨系统协同需求。其功能设计需覆盖 “数据采集 - 处理
    的头像 发表于 09-18 11:49 582次阅读

    电能质量在线监测装置的数据管理需要哪些技术支持?

    电能质量在线监测装置的数据管理是一个覆盖 “ 采集 - 传输 - 存储 - 处理 - 分析 - 应用 - 安全 ” 全流程的系统工程,需多种技术协同支撑,以确保数据的完整性、准确性、时效性和安全性
    的头像 发表于 09-18 11:45 670次阅读

    工业数据管理平台的重要性体现在哪

    工业数据管理平台作为工业数字化转型的核心基础设施,其重要性体现在对工业数据全生命周期的整合、分析与赋能上。它不仅是数据汇聚的“枢纽”,更是驱动工业智能化、优化决策、提升竞争力的关键引擎
    的头像 发表于 09-02 14:39 681次阅读

    云翎智能巡检执法记录仪在铁路巡检的安全监控与数据管理应用

    云翎智能执法记录仪在铁路巡检的应用,通过安全监控的智能化与数据管理的精细化,深度契合铁路运维“安全、高效、合规”的核心需求,为铁路线路、设备、环境的全周期管理提供了技术支撑。以下从安全监控
    的头像 发表于 08-25 23:09 859次阅读
    云翎智能巡检执法记录仪在铁路巡检<b class='flag-5'>中</b>的安全监控与<b class='flag-5'>数据管理</b>应用

    九联智城中标惠州市惠城区政务服务和数据管理局DeepSeek应用服务支撑项目

    近日,惠城区政务服务和数据管理局官方网站发布关于“惠城区政务服务和数据管理局DeepSeek应用服务支撑项目”甄选结果的通知,九联科技旗下全资子公司惠州九联智城科技有限公司(以下简称“九联智城
    的头像 发表于 07-26 14:45 1257次阅读

    恩智浦如何应对智能车辆数据管理挑战

    随着软件定义汽车 (SDV) 的出现,汽车生成数据将大幅增长,因此对数据的智能化转发需求也随之增加。数据管理解决方案 (如aicas提供的方案) 可帮助汽车制造商和车队运营商高效
    的头像 发表于 07-02 15:02 1543次阅读

    英泰斯特通过数据管理能力成熟度三级认证

    近日,中国电子信息行业联合会公布评估结果,英泰斯特成功通过数据管理能力成熟度(DCMM三级)等级认证。标志着英泰斯特的数据管理能力得到权威认可,数据成熟度达到了行业先进水平。
    的头像 发表于 05-29 18:06 1266次阅读