Simulink中的虚拟和非虚拟子系统

说明:以下内容仅来自个人观点。

本人最近在使用Goto/From模块穿越子系统时遇到以下报错内容:

Goto/From connections cannot cross nonvirtual subsystem boundaries. The only exception is when a goto is connected to a state output port.
(Goto/From连接不能跨越非虚拟子系统边界。唯一的例外是当goto连接到状态输出端口时。)

1.虚拟/非虚拟

在网上或MATLAB的帮助文档中并没有找到关于虚拟/非虚拟子系统的详细介绍,但是可以找到关于虚拟/非虚拟模块的介绍,大致如下:

simulink将模块分为虚拟/非虚拟模块。非虚拟模块在仿真中起主动作用,添加或删除会影响仿真结果;虚拟模块在仿真中不起主动作用,只是用来组织、简化模型。

典型的虚拟模块有:Goto、From、Mux等。

对于Subsystem模块,默认为虚拟子系统。若将其改为条件执行子系统,如,Enabled Subsystem、Trigger Subsystem等(个人认为是Ports & Subsystems库中除了Subsystem模块外的所有条件子系统,具体可自行测试),则为非虚拟子系统。其在系统仿真中的作用可类比非虚拟模块。

非虚拟和虚拟模块帮助文档网址:https://ww2.mathworks.cn/help/simulink/ug/nonvirtual-and-virtual-blocks.html

2.Goto模块穿越子系统边

  • 8
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
Simulink子系统是指包含一组相关功能和算法的模块化部分。子系统可以分为虚拟子系统虚拟子系统虚拟子系统又可以进一步细分为原子子系统、触发子系统和使能子系统。原子子系统是指没有任何触发或使能条件的子系统。触发子系统是指通过外部信号触发执行的子系统,而使能子系统则需要通过外部信号使能才能执行。此外,Simulink还有动作子系统,它通常与流控制模块(如If、Switch、For、While)配合使用,并且每个动作子系统在同一时间只能激活其一个。另外,Simulink还提供了可变子系统,它包含多个子系统,根据某个条件的成立与否来确定哪个子系统处于激活状态。动作子系统必须由If模块或Switch Case模块执行,并且与这些子系统模块连接的所有动作子系统的采样时间不能相同。这些子系统的组合和配置能够帮助用户实现复杂的系统建模和仿真。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Simulink子系统](https://blog.csdn.net/weixin_47642634/article/details/112789253)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值