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.最终效果

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/95667.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/95667.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

高阶组件介绍

高阶组件约定俗成以with开头 import React, { useEffect } from react; import { TouchableOpacity, Image, StyleSheet } from react-native;type IReactComponent React.ClassicComponentClass| React.ComponentClass| React.FunctionComponent| React.ForwardRefExoticComp…

C++ STL系列-02.泛型入门

C STL系列-02.泛型入门C中的泛型编程主要通过模板(template)实现。模板允许我们编写与类型无关的代码,是一种将类型作为参数进行编程的方式。在C中,模板分为函数模板和类模板。 1. 函数模板函数模板允许我们定义一个函数&#xff…

高效管理网络段和端口集合的工具之ipset

目录 1. 核心命令速查 2. 集合类型 3. 实战案例:使用 ipset 封禁 IP 案例 1:基础黑名单封禁(手动添加) 案例 2:自动过期和解封 案例 3:封禁 IP 和端口组合 案例 4:白名单模式 案例 5&am…

实例和对象的区别

对象(Object)是一个概念,它表示“某个类的一个成员”,是“逻辑上的个体”。实例(Instance)是一个现实,指的是在内存中真正分配了空间的对象。实例一定是对象,但对象不一定是实例。例…

Win10 Chrome认不出新Emoji?两个扩展搞定显示与输入

前言 用Win10电脑在Chrome里发消息、刷网页时,你是否遇到过这样的尴尬:别人发的、或者页面显示的 Emoji,在你屏幕上变成了空白方框,像“文字里缺了一块拼图”?其实这不是Chrome的错,也不用换电脑&#xff0…

Golang中逃逸现象, 变量“何时栈?何时堆?”

目录 什么是栈 什么是堆 栈 vs 堆(核心区别) GO编译器的逃逸分析 什么是逃逸分析? 怎么看逃逸分析结果? 典型“会逃逸”的场景 闭包捕获局部变量 返回或保存带有“底层存储”的容器 经由接口/反射/fmt 等导致装箱或被长…

MySQL入门指南:从安装到工作原理

什么是MySQL MySQL是一个开源的关系型数据库管理系统,由瑞典MySQL AB公司开发(目前属于Oracle公司),被广泛地应用在大中小型网站中 MySQL是一个小型的开源的关系型数据库管理系统,与其他大型数据库管理系统例如&…

dask.dataframe.shuffle.set_index中获取 divisions 的步骤分析

dask.dataframe.shuffle.set_index 中获取 divisions 的步骤分析 主要流程概述 在 set_index 函数中,当 divisionsNone 时,系统需要通过分析数据来动态计算分区边界。这个过程分为以下几个关键步骤: 1. 初始检查和准备 if divisions is None:…

ai生成ppt工具有哪些?10款主流AI生成PPT工具盘点

随着人工智能技术的飞速发展,AI生成PPT工具逐渐成为职场人士、学生和创作者提升效率的得力助手。这类工具通过智能算法,能够快速将文本、数据或创意转化为结构化、视觉化的演示文稿,大幅节省设计时间。1、AiPPT星级评分:★★★★★…

Qt多线程编程学习

Qt多线程编程学习 1. 项目概述 本项目展示了Qt中多线程编程的基本用法,通过继承QThread类创建自定义线程,并演示了线程的启动、执行和销毁过程。项目包含一个简单的用户界面,用户可以通过按钮控制线程的启动和结束。 1.1 项目结构 项目包含以…

加密货币武器化:恶意npm包利用以太坊智能合约实现隐蔽通信

ReversingLabs研究人员发现两个恶意npm包利用以太坊(Ethereum)智能合约隐藏并传播恶意软件。这两个名为colortoolsv2和mimelib2的软件包于2025年7月被识别,展现了开源安全攻防战中的新战术。恶意软件包伪装成实用工具攻击活动始于7月7日发布的…

Spring Boot 全局字段处理最佳实践

在日常开发中,我们总会遇到一些琐碎但又无处不在的字段处理需求:• 请求处理: 用户提交的表单,字符串前后带了多余的空格,需要手动 trim()。• 响应处理: 返回给前端的 BigDecimal 金额,因为精度问题导致JS处理出错&am…

三坐标测量机在汽车制造行业中的应用

在汽车制造业中,零部件精度决定着整车性能。从发动机活塞的微米级公差,到车身焊接的毫米级间隙,汽车制造“差之毫厘,谬以千里” ,任何细微偏差都可能引发连锁反应:发动机抖动、异响、油耗飙升,车…

机床夹具设计 +选型

机床夹具设计—第2组(钻床夹具)仿真组装视频_哔哩哔哩_bilibili 夹具-商品搜索-怡合达一站式采购平台 米思米FA标准品电子目录new 可能要吧这些定位块单独用yolo训练一边才能搞识别分析 3长条一短销定位,黄色的用来夹紧 一个面加一短轴一棱…

表格识别技术:通过计算机视觉和OCR,实现非结构化表格向结构化数据的转换,推动数字化转型。

在日常工作和生活中,我们无处不在与表格打交道。从财务报表、发票收据,到科研论文中的数据表、医疗报告,表格以其清晰、结构化的方式,承载着大量关键信息。然而,当这些表格以纸质或图片等非结构化形式存在时&#xff0…

Go基础(②Viper)

Viper 读取配置创建一个配置文件 config.yamlserver:port: 8080timeout: 30 # 超时时间(秒) database:host: "localhost"user: "root"password: "123456"name: "mydb"然后用 Viper 读取这个配置,代…

kafka Partition(分区)详解

一、什么是 PartitionPartition(分区) 是 Kafka Topic(主题) 的最小并行单位。一个 Topic 可以包含多个 Partition,每个 Partition 底层对应一个有序、不可变的消息队列,消息只会顺序追加。Partition 内部消…

中创中间件适配HGDB

文章目录环境文档用途详细信息环境 系统平台:Microsoft Windows (64-bit) 10 版本:5.6.5 文档用途 本文章主要介绍中创中间件简单适配HGDB。 详细信息 一、数据源配置 1.数据库准备 (1)安装HGDB并创建一个名为myhgdb的数据…

服务器内存和普通计算机内存在技术方面有什么区别?

服务器内存和普通计算机内存在技术上的区别,主要体现在为满足不同工作场景和要求而采用的设计和特性上。下面这个表格汇总了它们的主要技术差异,方便你快速了解: ​技术特性​​服务器内存​​普通计算机内存​​错误校验 (ECC)​​支持ECC(…

哪款AI生成PPT工具对职场新人最友好?操作门槛最低的是哪个?

一句话生成专业PPT,职场新人也能轻松做出高质量演示文稿现代职场节奏快,PPT制作已成为必备技能。然而,职场新人常面临两大挑战:缺乏设计经验,以及需要在有限时间内完成高质量演示。传统PPT制作耗时费力,需梳…