CN110298062B - 一种Simulink的自动布局方法 - Google Patents
一种Simulink的自动布局方法 Download PDFInfo
- Publication number
- CN110298062B CN110298062B CN201910383814.0A CN201910383814A CN110298062B CN 110298062 B CN110298062 B CN 110298062B CN 201910383814 A CN201910383814 A CN 201910383814A CN 110298062 B CN110298062 B CN 110298062B
- Authority
- CN
- China
- Prior art keywords
- module
- modules
- data
- input
- type
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/36—Circuit design at the analogue level
- G06F30/367—Design verification, e.g. using simulation, simulation program with integrated circuit emphasis [SPICE], direct methods or relaxation methods
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供了一种Simulink的自动布局方法,包括以下步骤:S1:获取模型所有关于布局的信息;S2:整理子系统模块下面的标签类型模块;S3:整理模块的输入和输出数据;S4:从顶层的根模块开始遍历处理所有的模块和子模块;S5:在处理每个模块的时候,把模块的信息转成Graphviz的输入,然后调用Graphviz的算法得到自动布局的结果;本发明能删除标签类模块,用连线代替,这样可以确定模块之间的执行顺序,避免逻辑错误;本方法能精简输入输出数据的个数,最小化连线的数量,使模型更加简洁;本方法通过使用第三方开源的自动布局引擎,自动优化模型的布局,大大提高模型的布局质量。
Description
技术领域
本发明涉及图形化建模工具MATLAB/Simulink领域,具体是一种Simulink的自动布局方法。
背景技术
MATLAB是美国MathWorks公司出品的商业数学软件,主要用于算法开发、数据可视化、数据分析以及数值计算等,在科学研究及工程计算等多个领域得到广泛的应用。Simulink是MATLAB中的一种图形化建模工具,被广泛应用于线性系统、非线性系统、数字控制及数字信号处理的建模和仿真中。Simulink提供了图形化的设计界面,以模块为功能单位,通过信号线进行连接,用户通过模块的参数设置对话框来设置参数,仿真的结果以数值和图像等方式展示。
在使用Simulink工具进行建模的时候,随着模型复杂度的增加,模型的输入输出接口的数量也会增加;模型之间的关系也会越来越多越来越复杂,信号线的数量也会越来越多,长度越来越长,形状越来越复杂。另一方面,Simulink并不提供自动布局功能,所有模块的大小,位置,信号线的形状都需要手动设置。这一切都使得模型的质量越来越低,模型本身越来越难以维护,给开发者造成很大的负担。
Simulink模型文件是一种树形的层次关系,树形的每个节点都是模块,顶层是根模块。模块有多种类型,比如子系统,输入,输出,标签等。模块为子系统类型的可能有若干个子模块。根模块就是子系统类型。每个模块都可能有若干个输入,若干个输出。一个模块的输出可能对应另一个模块的输入。一个子系统模块下可以添加若干个输入模块和若干个输出模块,和外界通讯。
在Simulink图形建模环境下,如果一个模块的输入对应另一个模块的输出,则用连线连接来表示对应数据的传输。连线有单向的箭头,表示数据传输的方向。Simulink图形建模环境启动的时候,默认会显示根模块的视图。如果某个子模块下面还有子模块,则可以通过双击或者右键打开的方式来显示子模块的视图。
连线可以确定数据的传输方向和模块的执行顺序。如果模块A的输出连接模块B的输入,则在仿真的过程中模块A先执行,模块B后执行。使用连线的缺点是当模块的数量很多,模块的输入和输出数量很多,输入和输出之间的连线会非常杂乱无章。这时候可以选择用标签模块来取代连线。标签模块的读写类型有两种类型,写类型和读类型。在输出端和输入端创建同名的标签模块,分别设置为写和读类型,就可以把中间的连线删除,同名的标签模块,写类型只能有一个,读类型可以有多个。另外标签模块的可见性有三种,分别是Local,Scoped和Global。Local标签模块是指使用相同名字的标签模块都在同一个子系统模块里,类似于编程语言里的局部变量。Scoped标签模块是使用相同名字的标签模块都在同一个子系统模块或者一个原子系统里。Global标签模块是指使用相同名字的标签模块可以在模型里的任何位置。
标签模块的缺点是难以确保模块的执行顺序。如果模块A的输出连接模块B的输入,输入和输出都通过标签连接,则有可能模块B先执行,模块A后执行,造成仿真结果不可信。如果想确保模块的执行顺序,必须手动设置每个模块的执行顺序,非常繁琐。
另外,由于建模水平的限制,很多人通常用一根线表示一个标量(比如一个浮点数)。当传输一个3乘3的矩阵的时候,就需要连9根线,非常麻烦,这个时候完全可以用一根线来表示一个3乘3的矩阵,优化连线的数量。
发明内容
本发明的目的在于提供一种Simulink的自动布局方法,以解决上述背景技术中提出的问题。
为实现上述目的,本发明提供如下技术方案:
一种Simulink的自动布局方法,包括以下步骤:
S1:获取模型所有关于布局的信息,包括模块的信息和模块之间的树形层次关系。
S2:整理子系统模块下面的标签类型模块。如果有局部标签模块,就删除局部标签模块,用连线连接;如果有非局部标签模块,就先遍历整个模型的模块树,找到所有相同名字的非局部标签模块(Scoped或者Global类型),然后按读写类型分两组;写类型只有一个,读类型可以为多个;写类型模块命名为A,在读类型组中遍历,取当前的读类型模块命名为B。另外创建图的数据结构保存从一个写类型模块到若干个读类型模块的连接信息。
S3:整理模块的输入和输出数据。把输入数据中所有维度为1,且数据类型相同的数据整合成一个多维的输入数据。把输出数据中所有维度为1,且数据类型相同的数据整合成一个多维的输入数据。
S4:从顶层的根模块开始遍历处理所有的模块和子模块。
S5:在处理每个模块的时候,把模块的信息转成Graphviz的输入,然后调用Graphviz的算法得到自动布局的结果,然后设置模块的布局信息,包括模块位置、高度、宽度等。
S6:本方法通过MATLAB提供的接口添加到Simulink的模型编辑菜单里,用户在使用Simulink的时候右键弹出菜单,选择并使用本方法。
S7:本方法在使用的时候,先弹出对话框,或者提供配置文件,让用户选择设置布局的一些基础信息,比如字体、字体大小、布局间隔等。
作为本发明进一步的方案:所述S1中模块的信息包括位置、高度、宽度、模块的显示文本、输入的数据类型、输入个数、输出的数据类型和输出的个数。
作为本发明进一步的方案:所述S2处理标签模块连接步骤为:
步骤一:开始连接两个模块A和B。
步骤二:如果两个模块在同一个子系统模块里,则删除标签模块,用连线连接,退出循环,取下一个读类型模块命名为B,重新开始步骤一,直到遍历结束。
步骤三:遍历整个模型的模块树,确定两个模块的层次。根模块的层次为0,根模块的子模块的层次为1,依次递增,并获取两个模块所有的父模块队列。父模块队列的第一个是根模块。
步骤四:获取模块B可达的父模块C:在B模块的父模块队列中逆序遍历,如果模块已经在图里,则找到合适的父模块C,退出遍历;如果模块在A模块的父模块队列中,则找到合适的父模块C,退出遍历。一直遍历到根模块为止。根模块是所有模块的父模块。
步骤五:从模块A到模块C,创建输入输出模块并连接起来;从模块B到模块C,创建输入输出模块并连接起来。最后在模块C处,把输入输出模块通过连线连接起来,并保存在图里。
作为本发明进一步的方案:所述S5中模块的信息包括位置、高度、宽度、模块的显示文本、输入的数据类型、输入个数、输出的数据类型和输出的个数。
作为本发明再进一步的方案:所述S6具体是创建Matlab脚本文件sl_customization.m,把自定义的菜单项添加到Simulink的模型编辑菜单里。当用户启动Simulink时,右键显示自定义的菜单。当用户点击自定义菜单项时,可以执行用户预定义的操作。
与现有技术相比,本发明的有益效果是:
本发明能删除标签类模块,用连线代替,这样可以确定模块之间的执行顺序,避免逻辑错误;本方法能精简输入输出数据的个数,最小化连线的数量,使模型更加简洁;本方法通过使用第三方开源的自动布局引擎,自动优化模型的布局,大大提高模型的布局质量。
附图说明
图1为一种Simulink的自动布局方法中流程图的结构示意图。
图2为一种Simulink的自动布局方法中连线连接的结构示意图。
图3为一种Simulink的自动布局方法中标签连接的结构示意图。
图4为一种Simulink的自动布局方法中处理非局部标签模块的结构示意图。
图中:1-
具体实施方式
下面结合具体实施方式对本专利的技术方案作进一步详细地说明。
请参阅图1-4,一种Simulink的自动布局方法,包括以下步骤:
S1:获取模型所有关于布局的信息,包括模块的信息和模块之间的树形层次关系。模块的信息包括位置、高度、宽度、模块的显示文本、输入的数据类型、输入个数、输出的数据类型,输出的个数等。
S2:整理子系统模块下面的标签类型模块。如果有局部标签模块,就删除局部标签模块,用连线连接。如果有非局部标签模块,就先遍历整个模型的模块树,找到所有相同名字的非局部标签模块(Scoped或者Global类型),然后按读写类型分两组。写类型肯定只有一个,读类型可以为多个。写类型模块命名为A。在读类型组中遍历,取当前的读类型模块命名为B。另外创建图的数据结构保存从一个写类型模块到若干个读类型模块的连接信息,处理标签模块连接步骤为:
步骤一:开始连接两个模块A和B。
步骤二:如果两个模块在同一个子系统模块里,则删除标签模块,用连线连接,退出循环,取下一个读类型模块命名为B,重新开始步骤一,直到遍历结束。
步骤三:遍历整个模型的模块树,确定两个模块的层次。根模块的层次为0,根模块的子模块的层次为1,依次递增。并获取两个模块所有的父模块队列。父模块队列的第一个一定是根模块。
步骤四:获取模块B可达的父模块C:在B模块的父模块队列中逆序遍历,如果模块已经在图里,则找到合适的父模块C,退出遍历;如果模块在A模块的父模块队列中,则找到合适的父模块C,退出遍历。一直遍历到根模块为止。根模块肯定是所有模块的父模块。
步骤五:从模块A到模块C,创建输入输出模块并连接起来;从模块B到模块C,创建输入输出模块并连接起来。最后在模块C处,把输入输出模块通过连线连接起来,并保存在图里。
S3:整理模块的输入和输出数据。把输入数据中所有维度为1,且数据类型相同的数据整合成一个多维的输入数据。把输出数据中所有维度为1,且数据类型相同的数据整合成一个多维的输入数据。
S4:从顶层的根模块开始遍历处理所有的模块和子模块。
S5:在处理每个模块的时候,把模块的信息包括位置、高度、宽度、模块的显示文本、输入的数据类型、输入个数、输出的数据类型,输出的个数等转成Graphviz的输入,然后调用Graphviz的算法得到自动布局的结果,然后设置模块的布局信息,包括模块位置、高度、宽度等。
S6:本方法通过MATLAB提供的接口添加到Simulink的模型编辑菜单里,用户在使用Simulink的时候右键就可以弹出菜单,选择并使用本方法。具体是创建Matlab脚本文件sl_customization.m,把自定义的菜单项添加到Simulink的模型编辑菜单里。当用户启动Simulink时,右键就可以显示自定义的菜单。当用户点击自定义菜单项时,就可以执行用户预定义的操作。
S7:本方法在使用的时候,先弹出对话框,或者提供配置文件,让用户选择设置布局的一些基础信息,比如字体、字体大小、布局间隔等。
本发明的工作原理是:本发明用到Graphviz布局引擎。Graphviz是贝尔实验室开发的一个开源的工具包,它使用一个特定的DSL(领域特定语言)-Dot作为脚本语言,然后使用布局引擎解析脚本并完成自动布局。Simulink模型文件是一种树形的层次关系,顶层是根模块。每个模块都可能有若干个子模块。每个模块当下的若干个模块之间通过连线连接,表示数据的传输。连线有单向的箭头,表示数据传输方向。有时候会用标签类模块来代替连线。本发明先遍历所有的模块,获取模块的信息(包括输入输出个数,输入输出数据类型,布局信息等)以及模块之间的树形层次关系。然后如果用户想处理标签类模块,则删除标签类模块,用连线代替。如果用户想优化同一维度的输入输出数据,可以整理输入输出数据,把所有维度为1,数据类型相同的输入输出数据用多维的输入输出数据代替。最后用Graphviz来调整模块的布局设置。
上面对本专利的较佳实施方式作了详细说明,但是本专利并不限于上述实施方式,在本领域的普通技术人员所具备的知识范围内,还可以在不脱离本专利宗旨的前提下做出各种变化。
Claims (5)
1.一种Simulink的自动布局方法,其特征在于,包括以下步骤:
S1:获取模型所有关于布局的信息,包括模块的信息和模块之间的树形层次关系;
S2:整理子系统模块下面的标签类型模块; 如果有局部标签模块,就删除局部标签模块,用连线连接;如果有非局部标签模块,就先遍历整个模型的模块树,找到所有相同名字的非局部标签模块(Scoped或者Global类型),然后按读写类型分两组;写类型只有一个,读类型可以为多个;写类型模块命名为A,在读类型组中遍历,取当前的读类型模块命名为B;另外创建图的数据结构保存从一个写类型模块到若干个读类型模块的连接信息;
S3:整理模块的输入和输出数据; 把输入数据中所有维度为1,且数据类型相同的数据整合成一个多维的输入数据; 把输出数据中所有维度为1,且数据类型相同的数据整合成一个多维的输入数据;
S4:从顶层的根模块开始遍历处理所有的模块和子模块;
S5:在处理每个模块的时候,把模块的信息转成Graphviz的输入,然后调用Graphviz的算法得到自动布局的结果,然后设置模块的布局信息,包括模块位置、高度、宽度等;
S6:本方法通过MATLAB提供的接口添加到Simulink的模型编辑菜单里,用户在使用Simulink的时候右键弹出菜单,选择并使用本方法;
S7:本方法在使用的时候,先弹出对话框,或者提供配置文件,让用户选择设置布局的一些基础信息,比如字体、字体大小、布局间隔等。
2.根据权利要求1所述的一种Simulink的自动布局方法,其特征在于,所述S1中模块的信息包括位置、高度、宽度、模块的显示文本、输入的数据类型、输入个数、输出的数据类型和输出的个数。
3.根据权利要求1所述的一种Simulink的自动布局方法,其特征在于,所述S2处理标签模块连接步骤为:
步骤一:开始连接两个模块A和B;
步骤二:如果两个模块在同一个子系统模块里,则删除标签模块,用连线连接,退出循环,取下一个读类型模块命名为B,重新开始步骤一,直到遍历结束;
步骤三:遍历整个模型的模块树,确定两个模块的层次; 根模块的层次为0,根模块的子模块的层次为1,依次递增; 并获取两个模块所有的父模块队列; 父模块队列的第一个是根模块;
步骤四:获取模块B可达的父模块C:在B模块的父模块队列中逆序遍历,如果模块已经在图里,则找到合适的父模块C,退出遍历;如果模块在A模块的父模块队列中,则找到合适的父模块C,退出遍历; 一直遍历到根模块为止; 根模块是所有模块的父模块;
步骤五:从模块A到模块C,创建输入输出模块并连接起来;从模块B到模块C,创建输入输出模块并连接起来; 最后在模块C处,把输入输出模块通过连线连接起来,并保存在图里。
4.根据权利要求1所述的一种Simulink的自动布局方法,其特征在于,所述S5中模块的信息包括位置、高度、宽度、模块的显示文本、输入的数据类型、输入个数、输出的数据类型和输出的个数。
5.根据权利要求1所述的一种Simulink的自动布局方法,其特征在于,所述S6具体是创建Matlab脚本文件sl_customization.m,把自定义的菜单项添加到Simulink的模型编辑菜单里; 当用户启动Simulink时,右键显示自定义的菜单; 当用户点击自定义菜单项时,可以执行用户预定义的操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910383814.0A CN110298062B (zh) | 2019-05-08 | 2019-05-08 | 一种Simulink的自动布局方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910383814.0A CN110298062B (zh) | 2019-05-08 | 2019-05-08 | 一种Simulink的自动布局方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110298062A CN110298062A (zh) | 2019-10-01 |
CN110298062B true CN110298062B (zh) | 2022-09-20 |
Family
ID=68026741
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910383814.0A Active CN110298062B (zh) | 2019-05-08 | 2019-05-08 | 一种Simulink的自动布局方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110298062B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5471398A (en) * | 1991-07-01 | 1995-11-28 | Texas Instruments Incorporated | MTOL software tool for converting an RTL behavioral model into layout information comprising bounding boxes and an associated interconnect netlist |
CN101364176A (zh) * | 2008-08-12 | 2009-02-11 | 北京航空航天大学 | 基于gmf的bpel可视化建模系统 |
CN104091006A (zh) * | 2014-07-01 | 2014-10-08 | 中国北方发动机研究所(天津) | Simulink中自适应的仿真和代码生成的控制方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4501985B2 (ja) * | 2007-10-04 | 2010-07-14 | ブラザー工業株式会社 | ラベルデータ作成装置、プログラム及び記録媒体 |
-
2019
- 2019-05-08 CN CN201910383814.0A patent/CN110298062B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5471398A (en) * | 1991-07-01 | 1995-11-28 | Texas Instruments Incorporated | MTOL software tool for converting an RTL behavioral model into layout information comprising bounding boxes and an associated interconnect netlist |
CN101364176A (zh) * | 2008-08-12 | 2009-02-11 | 北京航空航天大学 | 基于gmf的bpel可视化建模系统 |
CN104091006A (zh) * | 2014-07-01 | 2014-10-08 | 中国北方发动机研究所(天津) | Simulink中自适应的仿真和代码生成的控制方法 |
Non-Patent Citations (2)
Title |
---|
Matlab/Simulink模型到C/C++代码的自动实现;张祥等;《重庆工学院学报》;20061128(第11期);全文 * |
将Simulink模型用于HLA仿真;乔海泉等;《系统仿真学报》;20060220(第02期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN110298062A (zh) | 2019-10-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7814427B2 (en) | Object model tree diagram | |
US11281975B1 (en) | Creating and modifying machine learning models in a model training engine | |
CN109033260B (zh) | 基于rdf的知识图谱交互式可视化查询方法 | |
JP2022521816A (ja) | エンジニアリングデータソースからの資産データの自動抽出 | |
CN106599039B (zh) | 一种支持关系数据库数据自由组合嵌套的统计表述方法 | |
US20070079237A1 (en) | Computer system and method including an operation performed in a manner based on a determined activity | |
CN108388623B (zh) | Er关系生成方法、装置、计算机设备及存储介质 | |
CN115495069B (zh) | 基于模型驱动的煤炭工业软件流程实现方法、装置及设备 | |
Dobesova | Visual programming language in geographic information systems | |
CN108958611B (zh) | 一种信息编辑方法及装置 | |
US20230102947A1 (en) | Providing operations in accordance with worksheet relationships and data object relationships | |
CN110968294A (zh) | 一种业务领域模型建立系统及方法 | |
CN113010612A (zh) | 一种图数据可视化构建方法、查询方法及装置 | |
CN114594927A (zh) | 低代码开发方法、装置、系统、服务器及存储介质 | |
CN112527288B (zh) | 可生成代码的可视化系统原型设计方法、系统及存储介质 | |
JP2014186508A (ja) | プログラミング装置、プログラミング支援方法及びプログラム | |
KR101910179B1 (ko) | 데이터 시각화를 위한 웹 기반 차트 라이브러리 시스템 | |
CN110298062B (zh) | 一种Simulink的自动布局方法 | |
CN117215556A (zh) | 模块化的页面快速构建方法、系统、设备及介质 | |
US10896161B2 (en) | Integrated computing environment for managing and presenting design iterations | |
CN112631585B (zh) | 基于xml的快速参数界面配置方法 | |
US20130218893A1 (en) | Executing in-database data mining processes | |
CN110333906B (zh) | 一种快速处理预留设备的方法、系统、装置和存储介质 | |
CN114297443A (zh) | 图数据查询语句的处理方法、装置、设备及存储介质 | |
JPWO2017043664A1 (ja) | 情報管理装置並びにファイル管理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |