当前位置: 首页 > news >正文

【研发日记】Matlab/Simulink技能解锁(五)——Simulink布线技巧

文章目录

前言

常规布线

远距离快速布线

多端口快速布线

布线自动整理

翻转模块布线

跨系统布线

Stateflow布线

布线颜色

分析和应用

总结


前言

        见《【研发日记】Matlab/Simulink技能解锁(一)——在Simulink编辑窗口Debug》

        见《【研发日记】Matlab/Simulink技能解锁(二)——在Function编辑窗口Debug》

        见《【研发日记】Matlab/Simulink技能解锁(三)——在Stateflow编辑窗口Debug》

        见《【研发日记】Matlab/Simulink技能解锁(四)——在Simulink Debugger窗口调试》

常规布线

        常规的布线方式,例如拖拽鼠标左键链接port、拖拽鼠标右键多分支连线等。这些技能对于开发人员来说是比较基础的,所以不再本文赘述。

远距离快速布线

        如果两个要连线的port距离比较远,那么使用常规的鼠标拖拽方式就比较难以操作。快速布线的方法,只需要分别点击两个要链接的port即可,示例如下:

        Tips:如果要连线的两个port步进距离远,而且还跨越了其他模块,那么还可以选择使用Goto和From这对模块。

多端口快速布线

        如果两组要连接的port数量非常对,那么一个一个手动连接也是很费时费力的。快速布线的方法,只需要使用Ctrl分别点击两个模块即可,示例如下:

        Tips:如果连线的一边不是一个模块,而是多可模块,那么把点击模块变成框选即可。

布线自动整理

        如果哪个连线在设计修改时变得曲折凌乱,常规的做法是使用鼠标拖动整理,但是这种方法会比较比较慢,尤其是面对大量的连线需要整理时会非常费劲。快速布线的技巧是使用“自动整理”按钮,让连线变得简洁整齐,示例如下:

        Tips:如果需要整理的连线不是一根,而是多根,那么用框选选中之后一键“自动整理”即可。

翻转模块布线

        Simulink中信号或数据传输的方向默认是从左向右的,所以各个模块的初始状态都是左进右出。但是如果模型中有带反馈逻辑的环形结构,那么模块在各个传输方向上的链接就会非常繁杂。使用技巧把模块翻转后载进行连线,就能有效提高Simulink布线的质量,示例如下:

        Tips:如果模块是放置在竖向连线上,还可以用旋转方式把模块的输入输出端口放在上下两边。

跨系统布线

        如果模型中有大量信号或者数据需要跨越多个或多层子系统进行传输,这时上文讲到的远距离快速连线和多根线快速连线技巧就不能用了。常规的做法是在每个子系统的中都建立起对应的输入输出端口,然后逐个端口进行连线。这种方法显然会使得Simulink模型非常庞杂,而且工程师费时费力。这时候合成接口的布线技巧就可以派上用场了,示例如下:

        Tips:这个技巧适合用在Simulink模型设计之初就创建组合接口;

        Tips:这个技巧适合用在Simulink模型设计后期整理的时候创建组合接口;

        Tips:如果一组信号的相同的数据类型适合选用Mux和DeMux创建虚拟向量,能使Simulink模型进一步精简。具体虚拟向量和虚拟总线的异同可翻阅《【研发日记】Matlab/Simulink开箱报告(十)——Signal Routing模块模块》

Stateflow布线

        Stateflow中常规的连线方式是一根根弧形的连线,每个连线上插入了状态转换的条件和附加动作等信息。个人认为这种布线方式感官上不是很清晰明了,所以介绍另外一种借助“结点”的布线技巧,能让所有的连线以横平竖直的方式呈现,示例如下:

        Tips:如果一条状态转换路径被多个结点分割,那么各个转换条件之间是“逻辑与”的关系,并且各个条件在前和在后实现的逻辑会有所不同。

布线颜色

        Simulink中普通的连线默认都是黑色,如果在一个平面内存在有大量的连线,特别是这些连线还有交叉的时候,Simulink的开发和维护将会特别头疼。所以介绍一个给连线填加颜色的技巧,示例如下:

        Tip1:一些特殊的颜色已经被Simulink赋予了特殊的含义,例如红色表示有错误。所以自定义的颜色,需要尽量避开这些特殊颜色。

        Tip2:如果有连线需要设置成同一种颜色,可以使用“格式刷”按钮,快速将一根连线的颜色复制给其他连线。

分析和应用

        布线技巧在Simulink模型开发中的应用非常频繁,尤其是应用于大型项目的开发时作用非常明显,例如一些整车控制软件,车路协同项目等等。项目中把这些布线技巧用起来后,不仅能提高复杂模型的可读性,也有利于降低模型的复杂度,不仅能提高工程师开发的效率,也能降低后期维护的难度。这些布线技巧适用于软件开发的整个工程周期中,包括早期模型搭建阶段,以及后期迭代优化阶段。

总结

        以上就是本人在Simulink中布线时,一些个人理解和分析的总结,主要介绍了几中高效的布线技巧,并分析了这几种布线技巧的特点和适用场景。

        后续还会分享另外几个最近解锁的Matlab/Simulink新技能,欢迎评论区留言、点赞、收藏和关注,这些鼓励和支持都将成文本人持续分享的动力。

        另外,上述例程使用的Demo工程,可以到笔者的主页查找和下载。


版权声明,原创文章,转载和引用请注明出处和链接,侵权必究!

相关文章:

  • 大话设计模式之原型模式
  • DevSecOps平台架构系列-微软云Azure DevSecOps平台架构
  • 主流后端开发语言:JAVA、C、C++、GO、PYTHON对比
  • 如何系统的学习 C#
  • C#使用iText7画发票PDF——字体与自定义颜色
  • 上位机图像处理和嵌入式模块部署(qmacvisual透视变换)
  • 优雅的使用ChromeDriver
  • 论文《Exploring to Prompt for Vision-Language Models》阅读
  • Linux小程序: 手写自己的shell
  • LabVIEW比例流量阀自动测试系统
  • Eclipse+Java+Swing实现斗地主游戏
  • 散热风扇220v交流12v直流12038轴流风机配电箱机柜散热风扇15050
  • Rust教程:How to Rust-基本类型
  • 探索数据库mysql--------------mysql主从复制和读写分离
  • 电脑关机速度很慢怎么解决?
  • php的引用
  • [译] 怎样写一个基础的编译器
  • CSS选择器——伪元素选择器之处理父元素高度及外边距溢出
  • Docker容器管理
  • HTML-表单
  • JavaScript/HTML5图表开发工具JavaScript Charts v3.19.6发布【附下载】
  • PAT A1017 优先队列
  • spring boot下thymeleaf全局静态变量配置
  • 得到一个数组中任意X个元素的所有组合 即C(n,m)
  • 给新手的新浪微博 SDK 集成教程【一】
  • 计算机常识 - 收藏集 - 掘金
  • 精彩代码 vue.js
  • 浅谈JavaScript的面向对象和它的封装、继承、多态
  • 我是如何设计 Upload 上传组件的
  • CMake 入门1/5:基于阿里云 ECS搭建体验环境
  • ​​​​​​​​​​​​​​Γ函数
  • # centos7下FFmpeg环境部署记录
  • #{}和${}的区别?
  • #if #elif #endif
  • #Java第九次作业--输入输出流和文件操作
  • (2015)JS ES6 必知的十个 特性
  • (android 地图实战开发)3 在地图上显示当前位置和自定义银行位置
  • (C++)栈的链式存储结构(出栈、入栈、判空、遍历、销毁)(数据结构与算法)
  • (HAL)STM32F103C6T8——软件模拟I2C驱动0.96寸OLED屏幕
  • (LeetCode C++)盛最多水的容器
  • (ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY)讲解
  • (Ruby)Ubuntu12.04安装Rails环境
  • (ZT) 理解系统底层的概念是多么重要(by趋势科技邹飞)
  • (附源码)spring boot基于小程序酒店疫情系统 毕业设计 091931
  • (附源码)springboot教学评价 毕业设计 641310
  • (一)WLAN定义和基本架构转
  • (转) RFS+AutoItLibrary测试web对话框
  • * 论文笔记 【Wide Deep Learning for Recommender Systems】
  • *2 echo、printf、mkdir命令的应用
  • *Django中的Ajax 纯js的书写样式1
  • . Flume面试题
  • .NET CORE使用Redis分布式锁续命(续期)问题
  • .NET delegate 委托 、 Event 事件,接口回调
  • .Net FrameWork总结
  • .NET 使用 XPath 来读写 XML 文件