Simulink自动代码生成:数据字典的建立及代码优化

article/2025/11/10 4:42:55

  在上一节《Simulink自动代码生成:生成代码的基本设置》的基础上,我们来对模型进行优化,使得生成的代码更能满足实际的需求,没看过我上一篇文章的可以点开如下链接:
  Simulink自动代码生成:生成代码的基本设置
  本节我们我们首先来学习如何建立数据字典,然后通过所建立的数据字典对模型进行优化。

目录

  • 一. 未优化的代码
  • 二. 数据字典的建立
  • 三. 数据字典与模型的关联
  • 四. 配置信号属性
  • 五. 优化后的代码
  • 六. 总结

一. 未优化的代码

  在上一节生成的代码中,打开Calculation.c和Calculation.h文件可以发现在不经过处理的情况下,输入输出变量是以结构体的方式进行定义的。如图所示,在Calculation.h文件中对输入输出结构体进行了声明,在Calculation.c文件中对结构体进行了调用。
在这里插入图片描述
在这里插入图片描述
  但是在实际的开发当中,模型的输入可能来自于其它模块的输出,模型的输出也可能是其它模块的输入,仅仅是一个中间变量,并不需要定义成结构体的形式,因此就要对其进行优化,以满足我们的实际需求。

二. 数据字典的建立

  为了对输入输出变量进行优化,我们首先要建立一个数据字典。通过数据字典的名字我们也可以联想到它的用途,类似于编程中对变量进行声明,未经声明的变量是不能使用的,数据字典也是如此,它的作用也就相当于对变量进行声明,使MATLAB在使用时就像我们查汉语字典时能够找到变量的定义。接下来我们就来学习如何建立数据字典。
  (1)打开Model Explorer—File—New—Data Dictionary。
在这里插入图片描述
  (2)执行完第一步后将会弹出以下对话框,将文件名命名为Calculation(命名不是固定的)并进行保存。

在这里插入图片描述
  (3)完成后将看到左侧多出一个Calculation选项,工具栏标红的4个工具分别是MATLAB变量、Simulink参数、Simulink查表和Simulink信号。

在这里插入图片描述
  (4)接下来添加4个Simulink信号,双击信号名并修改成我们想要的名字,选择数据类型并对存储类别进行修改,输入信号的Storage Class选择为ImportedExtend,输出信号的Storage Class选择为ExportedGlobal,如图所示。
在这里插入图片描述
在这里插入图片描述
  (5)在完成以上步骤后对数据字典进行保存,选中Calculation,右键选择保存。
在这里插入图片描述

三. 数据字典与模型的关联

  在建立了数据字典后,要将数据字典与模型进行关联,使得模型在使用数据字典中的变量时能够找到其定义。
  (1)首先在模型空白处点右键,在弹出的对话框中选择模型属性。
在这里插入图片描述
  (2)选择External Data—Browse—选择我们刚刚建立的数据字典—选择OK完成关联设置。
在这里插入图片描述

四. 配置信号属性

  (1)单机选中信号线,信号线会变成蓝色,然后右键鼠标,在弹出的对话框中选择属性。
在这里插入图片描述
  (2)将信号名字与我们数据字典中定义的名字一一对应起来。
在这里插入图片描述
  (3)所有信号线设置完成后如图所示,信号线上会出现信号的名字和一个小叉子,这下终于可以吃饭了。
在这里插入图片描述

五. 优化后的代码

  在执行完以上所有步骤后,重新生成代码(Ctrl+B),可以看到,输入信号的声明不再是在Calculation.h中,也不再是以结构体的方式出现,而是以extern的方式出现。
在这里插入图片描述
  输入变量依然在Calculation.h中声明,在Calculation.c中调用,但它不在是以结构体的形式出现,而是普通变量,并且变量名和我们设置的相同。
在这里插入图片描述

六. 总结

  本节内容对模型的输入输出变量进行了优化,并介绍了数据字典的生成方式,当然数据字典的生成方式不止一种,还有脚本+Excel的方式,在后续文章中将进行介绍。模型的优化也不仅仅是对输入输出变量的优化,包括函数形式,函数名,注释等等都需要进行优化。后续将一一进行介绍并编写一些有趣的脚本,以辅助自动代码生成。


http://chatgpt.dhexx.cn/article/e5PN3GmU.shtml

相关文章

推荐几个代码自动生成器

文章目录 老的代码生成器的地址:[https://www.cnblogs.com/skyme/archive/2011/12/22/2297592.html](https://link.zhihu.com/?targethttps%3A//www.cnblogs.com/skyme/archive/2011/12/22/2297592.html)1.懒猴子CG2.IT猿网3.listcode4.magicalcoder5.CodeSmith6. …

Mybatis代码自动生成

新启动的项目,数据库设计可能随时会变动,一些基础的接口,特别是xml文件和映射对象也需要变动,改动工作量大,用mybatis-plus代码自动生成工具自动生成代码,大大提高了效率 自动生成代码工具使用过程记录如下 首先手动创建一个springboot项目,可以去springboot官网上生成,也可以…

Simulink 自动代码生成电机控制:基于Keil软件集成

目录 系统软件架构 1.应用层全模型生成,底层手写代码 2.应用层模型生成,底层也是基于模型生成 3.Autosar 软件集成操作 接口配置 总结 系统软件架构 嵌入式软件开发包含应用层和底层,目前基于模型的开发软件架构总结为以下几种: 1.应…

mybatis自动生成代码

mybatis自动生成代码有三种方式&#xff1a;命令行、eclipse插件、maven插件。在这里主要介绍比较方便使用的一种方式–maven插件&#xff0c;它可以在eclipse、idea中通用。 在pom.xml文件中配置mybatis-generator插件&#xff1a; <plugin><groupId>org.mybatis…

idea自动生成代码

idea是完全可以自动生成一些基础代码&#xff0c;后续只需要根据生成的基础代码进行业务代码的编写&#xff0c;看看是如何生成的&#xff0c;教程比较全面&#xff0c;请耐心阅读&#xff0c;谢谢啦&#xff01; 1.首先检查自己的idea是否安装了自动生成代码的插件&#xff0…

Matlab/Simulink 自动代码生成详细步骤

最近一直在忙于FCU控制器的模型搭建&#xff0c;空闲之余也想分享一下自己对Simulink建模过程中的一些想法&#xff0c;从接触simulink到应用simulink大约已经两年多了&#xff0c;随着接触时间&#xff0c;慢慢发现simulink在模型搭建方面真的是非常的方面。今天我就和大家分享…

MybatisGenerator自动代码生成器的使用

之前有写过一篇文章通过RuoYi自动生成SpringBoot项目代码&#xff0c;这篇文章有介绍如何通过RuoYi框架来自动生成相关的SpringBoot代码。但并不是所有的小伙伴都会去下载RuoYi这一套框架代码去获取domain、mapper以及mapping&#xff0c;特此本人再推荐一款很实用并且也容易上…

Simulink自动代码生成(一)

一个simulink模型能够生成代码首先要满足的条件&#xff1a; 1&#xff1a;确保模型仿真的正确性2&#xff1a;将需要的输入和输出改成input和output模块3&#xff1a;离散化模型&#xff0c;设置求解器为离散&#xff0c;固定步长满足上面条件后&#xff0c;接下来怎么生成嵌入…

代码一键自动生成,拿走不谢

程序猿学社的GitHub&#xff0c;欢迎Star github技术专题 本文已记录到github 文章目录 前言起源环境实战sql脚本pom.xmlapplication.yml启动类代码自动生成controller类 测试 前言 隔壁老王&#xff1a; 社长&#xff0c;我工作有一段时间咯&#xff0c;我看其他的同事&#x…

4个免费代码自动生成神器

4个免费代码自动生成神器 日常写代码&#xff0c;是一件非常需要耐心的事情&#xff0c;尤其是那些没有技术含量重复使用到的一些代码排列组合&#xff0c;比如前端的一些html和css布局&#xff0c;简单繁杂&#xff0c;这个时候就会使用到一些免费代码自动生成神器&#xff0c…

java自动代码生成

1.概述 可在线自动生成代码&#xff0c;省去复制、修改通用模板代码的繁琐过程&#xff0c;减少团队70%以上的开发工作量 基于java的template模板引擎velocity&#xff0c;在定义好模板文件后&#xff0c;动态产生适应业务的java、xml、html、sql等代码文件 2.自动生成过程 …

Linux防火墙关闭方法

Linux防火墙关闭方法 关闭防火墙&#xff1a; 1、查看状态&#xff1a;systemctl status firewalld 2、关闭&#xff1a; systemctl stop firewalld&#xff08;只执行这个&#xff0c;重启后不行&#xff0c;还必须执行systemctl status firewalld&#xff09; 1.1、查看seli…

Linux中的Java项目服务器无故关闭

部署在Linux中的项目&#xff0c;最近一直无故关闭。找了很多都找不到原因。最近发现一个现象终于让我知道是什么原因导致我的开发服务器无故关闭了。 起因 部署在linux中的java开发服务器最近一直无故关闭。且是因为我在启动脚本中加了如下命令导致的。 tail -f log/game.lo…

Linux 系统下关闭防火墙

一、重启后永久性生效&#xff1a; 开启&#xff1a; chkconfig iptables on 关闭&#xff1a; chkconfig iptables off 二、即时生效&#xff0c;重启后失效&#xff1a; 开启&#xff1a; service iptables start 关闭&#xff1a; service iptables stop 需要说明的…

linux 桌面关闭防火墙,linux如何关闭防火墙的方法

火墙是一项协助确保信息安全的设备&#xff0c;会依照特定的规则&#xff0c;允许或是限制传输的数据通过。简单的来说防火墙的作用就是保护你的网络免受非法用户的侵入&#xff0c;虽然防火墙是为了你网络安全而存在&#xff0c;但是同时也限制了你上网操作&#xff0c;有很多…

LINUX系统下关闭防火墙

所谓防火墙指的是一个由软件和硬件设备组合而成、在内部网和外部网之间、专用网与公共网之间的界面上构造的保护屏障.是一种获取安全性方法的形象说法&#xff0c;它是一种计算机硬件和软件的结合&#xff0c;使Internet与Intranet之间建立起一个安全网关。 一、重启后永久性生…

JAVA配置防火墙开放、关闭端口

要达成的目的可以描述为&#xff1a; 在JAVA程序中随机生成一个可用的端口&#xff0c;并在防火墙中开放这个端口。 随机生成可用端口 /*** 随机获取10100-10200的未占用端口** return 端口号*/private int generateLocalPort() {while (true) {int port 10100 (new Random(…

Linux系统关闭防火墙命令

Linux系统关闭防火墙命令 下面是red hat/CentOs7关闭防火墙的命令! 1:查看防火状态 systemctl status firewalld service iptables status 2:暂时关闭防火墙 systemctl stop firewalld service iptables stop 3:永久关闭防火墙 systemctl disable firewalld chkconfi…

Linux下的关闭防火墙

一、临时关闭防火墙 1、 查看防火墙的状态 /etc/init.d/iptables status 2、 临时关闭防火墙 /etc/init.d/iptables stop 3、 查看关闭后的状态 二、永久关闭防火墙 命令&#xff1a;chkconfig --level 2345 iptables off 或者 chkconfig iptables off 其中2345 代表”执…

Linux关闭防火墙命令

一、下面是red hat/CentOs7关闭防火墙的命令! 1:查看防火状态 systemctl status firewalld service iptables status 2:暂时关闭防火墙 systemctl stop firewalld service iptables stop 3:永久关闭防火墙 systemctl disable firewalld chkconfig iptables off 4:重…