Simulink子系统、变体子系统及封装知识 - 详解

1.引言

文章三相新能源并网系统序阻抗模型——序阻抗分析器IMAnalyzer介绍了一种用于分析和扫描序阻抗的软件。其中,在序阻抗扫频操作过程中,用到了一个扰动注入、测量和运算工具【IMtool】,它外表长这样:

内部长这样:

这样的:就是交互起来

它具备以下一些特点:

一个交互界面,包括文本表现、参数输入、下拉选择等功能;就是1.外表

2.内部有三个子系统,但每次只激活其中一个子系统;

3.交互界面可选择内部体系,设置系统参数、呈现不同封面等等。

那么类似于上述的作用是如何实现的呢?

2.子系统

通过【子系统】是把一堆散件进行打包的过程,同时能够留有输入和输出接口同外界交互,比如:

【IMtool】的 电流扰动注入、测量和运算效果大致实现如下:

就允许打包成这样:

需要注意的是:输入输出接口分为【物理接口】和信号接口

同样地,【电压扰动注入、测量和运算】和【直连】功能也能分别进行打包:

注意:【直连】打包时保留了信号端口是为了与【电流xxx】和【电压xxx】外观保持一致,如下:

这样我们就得到了三个外观一样,内部功能不同的三个子系统。

3.变体子系统

通过上面三个子系统的功能是并列的,实际运行时,只需要执行其中一个系统的特性。当然,这能够通过只连接一个子系统来实现。但如果这样,切换功能 就要求反复重连其它平台,十分不便

有没有什么方法可以便捷地切换系统?这就是【变体子系统】,它可以包含多个【子系统】,并将它们作为变体选择项。

首先将其中一个子系统转化为变体子系统:

然后将其它子系统复制到该变体子系统的内部:

可以摆得整齐一点:

设置子系统激活条件:

变体子系统具体执行其中哪个子系统的功能,是根据【变体控制表达式】为真来确定的,当条件表达式的计算结果为 true 时,对应的变体选择项将被激活

例如,在下图中,变量disType的值如果为"扰动电压注入法",则表达式disType=="扰动电压注入法"为真,将激活【扰动电压注入法】子系统;为"扰动电流注入法",则激活【扰动电流注入法】子系统;……。

而变量disType行依据【命令行窗口】、Simulink中的【模型属性】等方式赋值,如:

4.封装

做交互界面的过程,把需要交互的作用做成易操作的界面,而隐去底层模型的联系。就是【封装】其实就

【封装】操作如下:

然后会弹出【封装编辑器】:

目标交互界面包括【功能描述】、【扰动注入方法】选择和【参数】输入三个部分。

4.1【功能描述】设计

添加【组框】控件实现内容分区

注:在编辑过程中可以随时点击【预览对话框】来查看对应的封装界面,也是探索各个控件功能的好办法。

添加【文本】控件,在【提示】栏输入得展示的文字。

如果想对文字进行分段,可以添加多个【文本】控件:

4.2【扰动注入办法】设计

添加【弹出框】控件,编辑【提示】、【名称】和【类选选项】。

注:【名称】为该控件的 输出变量名,可以存储操作后返回的值;【类型选项】用于设置弹出框的可选项,选择的值将存储在【名称】对应的变量中。

特殊注意:一定要取消勾选【计算,否则关联的变量会保存为所选项的索引,而不是实际值。

封装中的变量能够被含有其中的所有模块识别,因此变体子系统会因为变量disType值的改变而切换激活的子系统,如下:

4.3【参数】输入设计

添加【组框】控件进行分区;

添加【编辑】控件,编辑【提示】、【名称】和【值】等。

类似地,根据需求添加其它【编辑】控件,不再赘述。

直接通过封面指定,该如何构建?就是假如现在需要利用外界(例如appdesigner软件)来指定封装中的参数值,而不

此时,可以将参数输入栏的值指定为变量名,比如:

这样就可以在matlab、simulink等工作区对这些变量进行赋值,从而间接指定参数

4.4【模型图标】设计

封装编辑器的【图标】区允许用户使用一些绘图命令来设计模型图标。这样就可能通过条件判断,让封装模块在激活不同子系统时显示不同的图标,如下:

另外,将【图标透明度】设置为不透明带端口,既展示图标,又显示端口号;将【图片旋转】设置为旋转,建立图标跟随模型旋转。

5.最终效果

以上就是全部内容啦,觉得有用还请多多支持,您的支持是我创作最大的动力。

posted @ 2025-09-12 18:58  yjbjingcha  阅读(34)  评论(0)    收藏  举报