Simulink代码生成:数据字典的建立、关联模型

2024-09-03 11:32

本文主要是介绍Simulink代码生成:数据字典的建立、关联模型,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本文介绍如何建立Simulink数据字典,并关联模型。

文章目录

  • 1 数据字典的作用
  • 2 数据对象的简单概念
  • 3 数据对象的管理方式
    • 3.1 mat文件或m文件
    • 3.2 Excel表格&m脚本
    • 3.3 Simulink自带的数据字典文件
  • 4 建立和关联Simulink数据字典文件
  • 5 sldd数据字典的一些说明
  • 6 总结

1 数据字典的作用

简单来说,数据字典的作用就是把一个模型用到的所有数据对象都统一放到一个地方管理起来。Simulink中,数据对象包括信号对象、参数对象、枚举量、常量等。也就是说,数据字典是很多个数据对象的集合。

2 数据对象的简单概念

举个最简单的数据对象的例子,新建一个Simulink模型,其中有3个Gain模块,他们的放大参数相同,都是2。
在这里插入图片描述
如果要修改的话,就必须每个模块都打开来,把其中的2改成3,会很麻烦。为了解决修改很麻烦的问题,可以在Matlab工作空间建立一个常量Gain_Const=2,再把Gain模块中的放大参数改成Gain_Const常量,如下图所示。需要修改的时候直接把值改成3就行了。这里的Gain_Const就是一个常量的数据对象
在这里插入图片描述
在这里插入图片描述

3 数据对象的管理方式

上一节例子中Simulink模型在仿真的时候可以关联到Matlab工作空间中的Gain_Const常量。但这么做有一个问题,那就是下次重启Matlab的时候,工作空间里的Gain_Const常量就没了,要重新添加进去,才能仿真Simulinnk模型。

因此,要把这些个数据对象保存到本地,然后仿真的时候要加载进工作空间才行。至于怎么把数据对象本地化,博主见过有3种管理方法。

3.1 mat文件或m文件

右键选中Matlab工作区中的所有数据对象(上面的例子里只有一个),将它们另存到本地的mat文件或m文件中。路径最好在Simulink文件的相同路径下。
在这里插入图片描述
在每次打开demo.slx模型前,都把这个demo.mat文件加载到Matlab工作空间中。
在这里插入图片描述
博主认为这么做会有些弊端。首先,每次加载一下文件会很麻烦,不过这还是可以忍受的。比较关键的是,查找和修改数据对象不方便。在企业级项目中,模型往往都很大,里面包含的数据对象非常多,工作区会有许多数据对象,非常不好找。

因为这些弊端,所以很多项目都不用这种原始的方式管理数据字典。

3.2 Excel表格&m脚本

这种方式是把所有的数据对象都写进一个表格中,包括数据对象的类型(信号对象、枚举量、常量等)、参数(包括维度、初始值、StorageClass等)和数值都按照一定的规范列在表格中。然后通过写一个Matlab脚本,把表格中的数据对象定义写到工作空间中。

这个方法本质还是工作空间中的数据对象,但是因为引入了表格,使得数据对象的搜索和查找变得更容易了。不过依然避免不了手动加载到工作空间这一步骤,改一次表格的内容,就要重新运行一次脚本,也是挺麻烦的,所以博主也不推荐。

3.3 Simulink自带的数据字典文件

通过建立一个Simulink自带的数据字典文件(以sldd为后缀),并将其和Simulink模型关联,就可以实现数据对象的管理。博主强烈推荐,下一章会举例讲解sldd文件的建立和关联。

4 建立和关联Simulink数据字典文件

1.打开模型上方工具栏的Model Explorer
在这里插入图片描述
2.File–>New–>Data Dictionary建立一个数据字典,将其命名为demo.sldd,保存在Sminulink文件同一个路径下。
在这里插入图片描述
在这里插入图片描述
3.选中demo下的Design Data,点击上方的Add Matlab Variable,这时中间的数据字典展示栏会显示一个默认的名为“Var”的常量对象。
在这里插入图片描述
4.将它的Name修改为Gain_Const,Value改为2.
在这里插入图片描述
5.右键demo–>Save Changes
在这里插入图片描述
至此,数据字典文件创建完成,一个常数对象添加到数据字典中。接下来就要把数据字典和模型相关联起来。
1.打开Simulink模型–>Model Properties–>Link to Data Dictionary
在这里插入图片描述
2.在弹出的窗口中选中Data Dictionary–>点击Browse…–>在弹出的路径中选中刚刚建立的demo.sldd
在这里插入图片描述
3.点击Apply,这时会出现一个询问窗口,问我们要不要同时关联Matlab工作空间的数据对象。如果勾上了,就不会同时关联Matlab工作空间的数据对象,取消勾选则会同时关联。
在这里插入图片描述
这里博主比较喜欢同时关联,因为可以方便用工作空间中的东西调试模型。不过如果工作空间和demo.sldd中有着同名对象,仿真模型则会报出冲突的错误。

4.这里就关联好sldd文件了,模型上面会出现一行关联成功的提示。
在这里插入图片描述
至此,关联数据字典也就完成了,接下来可以仿真模型或者生成代码。
在这里插入图片描述

5 sldd数据字典的一些说明

1.首先,建立sldd数据字典并关联模型后,在Model Explorer中关掉它也可以正常仿真Simulink模型和生成代码.这就意味着,仿真模型前不需要加载数据字典文件,比前两种每次都要加载的方法要方便。

2.sldd数据字典中可以方便地筛选或者搜索数据对象,如图所示。在这里插入图片描述
3.sldd数据字典要在Matlab地路径列表中,或者在当前路径下。所以最好把sldd数据字典命名为和模型相同,并和模型放在同一路径下。模型拷贝和传输地时候也带上sldd文件。

6 总结

博主现在地工作中已经淘汰掉Excel关联数据字典地方式,而是全线采用Simulink自带的sldd数据字典。所以十分推荐使用sldd数据字典,以后的博客在讲数据对象配置的时候,也是在sldd数据字典中配置的。

>>返回个人博客总目录

这篇关于Simulink代码生成:数据字典的建立、关联模型的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1132844

相关文章

SpringBoot集成Milvus实现数据增删改查功能

《SpringBoot集成Milvus实现数据增删改查功能》milvus支持的语言比较多,支持python,Java,Go,node等开发语言,本文主要介绍如何使用Java语言,采用springboo... 目录1、Milvus基本概念2、添加maven依赖3、配置yml文件4、创建MilvusClient

SQL表间关联查询实例详解

《SQL表间关联查询实例详解》本文主要讲解SQL语句中常用的表间关联查询方式,包括:左连接(leftjoin)、右连接(rightjoin)、全连接(fulljoin)、内连接(innerjoin)、... 目录简介样例准备左外连接右外连接全外连接内连接交叉连接自然连接简介本文主要讲解SQL语句中常用的表

SpringValidation数据校验之约束注解与分组校验方式

《SpringValidation数据校验之约束注解与分组校验方式》本文将深入探讨SpringValidation的核心功能,帮助开发者掌握约束注解的使用技巧和分组校验的高级应用,从而构建更加健壮和可... 目录引言一、Spring Validation基础架构1.1 jsR-380标准与Spring整合1

MySQL 中查询 VARCHAR 类型 JSON 数据的问题记录

《MySQL中查询VARCHAR类型JSON数据的问题记录》在数据库设计中,有时我们会将JSON数据存储在VARCHAR或TEXT类型字段中,本文将详细介绍如何在MySQL中有效查询存储为V... 目录一、问题背景二、mysql jsON 函数2.1 常用 JSON 函数三、查询示例3.1 基本查询3.2

SpringBatch数据写入实现

《SpringBatch数据写入实现》SpringBatch通过ItemWriter接口及其丰富的实现,提供了强大的数据写入能力,本文主要介绍了SpringBatch数据写入实现,具有一定的参考价值,... 目录python引言一、ItemWriter核心概念二、数据库写入实现三、文件写入实现四、多目标写入

使用Python将JSON,XML和YAML数据写入Excel文件

《使用Python将JSON,XML和YAML数据写入Excel文件》JSON、XML和YAML作为主流结构化数据格式,因其层次化表达能力和跨平台兼容性,已成为系统间数据交换的通用载体,本文将介绍如何... 目录如何使用python写入数据到Excel工作表用Python导入jsON数据到Excel工作表用

Mysql如何将数据按照年月分组的统计

《Mysql如何将数据按照年月分组的统计》:本文主要介绍Mysql如何将数据按照年月分组的统计方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录mysql将数据按照年月分组的统计要的效果方案总结Mysql将数据按照年月分组的统计要的效果方案① 使用 DA

鸿蒙中Axios数据请求的封装和配置方法

《鸿蒙中Axios数据请求的封装和配置方法》:本文主要介绍鸿蒙中Axios数据请求的封装和配置方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1.配置权限 应用级权限和系统级权限2.配置网络请求的代码3.下载在Entry中 下载AxIOS4.封装Htt

如何高效移除C++关联容器中的元素

《如何高效移除C++关联容器中的元素》关联容器和顺序容器有着很大不同,关联容器中的元素是按照关键字来保存和访问的,而顺序容器中的元素是按它们在容器中的位置来顺序保存和访问的,本文介绍了如何高效移除C+... 目录一、简介二、移除给定位置的元素三、移除与特定键值等价的元素四、移除满足特android定条件的元

Spring Security基于数据库的ABAC属性权限模型实战开发教程

《SpringSecurity基于数据库的ABAC属性权限模型实战开发教程》:本文主要介绍SpringSecurity基于数据库的ABAC属性权限模型实战开发教程,本文给大家介绍的非常详细,对大... 目录1. 前言2. 权限决策依据RBACABAC综合对比3. 数据库表结构说明4. 实战开始5. MyBA