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模塊穿越子系統邊界
查看goto模塊幫助文檔可以看到這句話:From-Goto模塊連接不能穿過非虛擬子系統邊界。但存在以下例外情況,與一個條件子系統的狀態端口連接的Goto模塊,對另一個條件執行子系統中的From模塊是可見的。
Goto模塊幫助文檔網址:https://ww2.mathworks.cn/help/simulink/slref/goto.html?searchHighlight=goto&s_tid=srchtitle
一個穿越非虛擬子系統邊界的很好的例子是該幫助文檔下的Building a Clutch LockUp Model.
該模型中Unlocked和Locked都是使能子系統,這兩個子系統中的積分模塊的狀態輸出端口連接goto模塊,各自積分模塊的初始值輸入端口來自對應的使能子系統積分模塊的狀態輸出端口。
進行下列實驗:將Unlocked子系統中的unlocked_wv在模型最外層系統進行輸出顯示可得下圖。
總結
以上是生活随笔為你收集整理的Simulink中的虚拟和非虚拟子系统的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一文带你了解安全多方计算
- 下一篇: 多对一(Many2One)