当模型有很多信号进行交互的时候,并且已经无法回避线条交叉的时候,我们会选择
From和Goto模块来提高模型的可读性,假如你拿到的模型如下图:
像不像芯片的电路,错综而复杂
该如何整理呢?
我相信有很多模型都会用到If else或者Function Call等子系统,需要很多信号最后又要Merge起来,这样导致信号交叉的现象特别严重,不利于模型的管理与维护,可读性也大打折扣
一个封装的模块加几个脚本或许能够解决这个问题。
首先搭建如下简单模型:
使用封装的MergeBus模块,并且运行脚本之后,最后呈现的结果如下:
显然运行的结果,和上面的结果一致,但是画面变得非常简洁直观了,关键在于如何创建图中绿色的封装模块,使得所有的bus selector汇集成bus creator
内部↑
该封装模块的创建步骤:
创建子系统:
封装该子系统:
填写图标信息
patch内的参数可以更改该图标的颜色,而变量vpx vpy vx vy都是在脚本内进行定义
填写参数对话框:
这里的Input的是可以变化的,这里先填写4,有4个输入
填写初始化参数:
这里的bmInit是用脚本写的函数,在该模块封装确认之前,需要放2个m脚本的函数在该路径下
填写类型及变量描述:
在该封装模型的路径下放如下2个m脚本:
封装模块点击OK
双击该模块:
点击下箭头图标进入封装模块的内部
发现有4个输入一个输出
把刚刚例子搬过来,如下图
此时,鼠标点中封装模块,并回到matlab的命令窗口,输入指令
MergeBus (即在该路径下的MergeBus的m脚本)
再去检查封装模块内的信号:
发现已经被自动连接上
如果出现的是下面的提示或者直接报错,说明还有问题
另外需要注意的是,封装模块的Type发生了变化的话,脚本MergeBus内需要搜索与该名称相同的所有变量,都需要更改为新名字,否则脚本将失效
Ctrl+D 运行正常
Ctrl+B代码生成正常
两个m脚本内的内容就不具体介绍了,比较复杂,直接用就好了
脚本以p文件的形式放在附件,需要可自取,m文件我做了一些处理,给自己做备份,不可用,直接使用p文件(点击封装模块后,回到p文件右键运行)即可,功能一样