MathWorks應(yīng)用工程師,博客介紹關(guān)于 Simulink 以及其它 MathWorks 的基于模型的設(shè)計(jì)工具。
幾天前,我需要調(diào)試一個(gè)較大的模型,出現(xiàn)了下面這個(gè)錯(cuò)誤:
在我這個(gè)模型里,這個(gè)代數(shù)環(huán)涉及到一百多個(gè)模塊,信號(hào)遍布整個(gè)模型,還有總線結(jié)構(gòu),把問題變得很復(fù)雜,難以分析。
ashow(為什么不再需要它了!)
多年來,我一直使用ashow函數(shù)高亮顯示代數(shù)環(huán)。以下是一個(gè)簡(jiǎn)單模型的示例:
然而,它不太好用,而且它只能高亮顯示代數(shù)環(huán)的一部分。顯然,它也無法高亮顯示我現(xiàn)在需要解決的這個(gè)代數(shù)環(huán)。
這是因?yàn)?,這里的代數(shù)環(huán)是定點(diǎn)信號(hào),這就導(dǎo)致了類似“先有蛋還是先有雞”的問題。。為了讓 ashow 運(yùn)行,它需要模型能編譯。然而,該環(huán)是定點(diǎn)信號(hào),Simulink 引擎知道它自己無法求解,于是在模型編譯過程中報(bào)錯(cuò),導(dǎo)致無法使用 ashow。
就在那時(shí),我想起了一個(gè)相對(duì)較新,但經(jīng)常忘記的函數(shù):
Simulink.BlockDiagram.getAlgebraicLoops
如果你仔細(xì)閱讀過代數(shù)環(huán)的相關(guān)文檔頁面,可能已經(jīng)知道到,Simulink 提供了Simulink.BlockDiagram.getAlgebraicLoops 函數(shù),它是一種新的,且更有效的代數(shù)環(huán)高亮顯示方法。
用上述同一示例,結(jié)果如下:
這個(gè)函數(shù)在 R2015a 中引入,并在 R2017b 中做了改進(jìn),能找到并高亮顯示更多類型的代數(shù)環(huán)。在我的案例中,它已經(jīng)能高亮顯示涉及到定點(diǎn)信號(hào)的代數(shù)環(huán)。根據(jù)該環(huán)高亮提示,就可找出引入延遲模塊并打斷該環(huán)的最佳位置。
請(qǐng)注意以下幾點(diǎn):
以紅色高亮顯示的模塊是我們稱之為代數(shù)變量的模塊??梢韵葒L試在這類模塊的輸出端添加一個(gè)入延遲模塊(除非是連續(xù)信號(hào),參見下列相關(guān)閱讀)。
如果檢測(cè)到該環(huán)是人為代數(shù)環(huán),它將以虛線高亮顯示,這表示應(yīng)使用原子子系統(tǒng)或模型引用的 Minimize Algebraic Loop feature 勾選項(xiàng)來解決這個(gè)問題。
Simulink.BlockDiagram.getAlgebraicLoops 還會(huì)返回一個(gè)對(duì)象類型的返回值給出模型代數(shù)環(huán)的各種屬性,其中包括所涉及模塊的句柄,您可以酌情使用。
以下是高亮顯示的代數(shù)環(huán)的定點(diǎn)模型示例:
-
信號(hào)
+關(guān)注
關(guān)注
11文章
2853瀏覽量
78293 -
函數(shù)
+關(guān)注
關(guān)注
3文章
4381瀏覽量
64889 -
可視化
+關(guān)注
關(guān)注
1文章
1264瀏覽量
21865
發(fā)布評(píng)論請(qǐng)先 登錄
如何使用協(xié)議分析儀進(jìn)行數(shù)據(jù)分析與可視化
VirtualLab Fusion應(yīng)用:3D系統(tǒng)可視化
可視化組態(tài)物聯(lián)網(wǎng)平臺(tái)是什么

VirtualLab Fusion中的可視化設(shè)置
VirtualLab Fusion應(yīng)用:光波導(dǎo)k域布局可視化(“神奇的圓環(huán)”)
七款經(jīng)久不衰的數(shù)據(jù)可視化工具!
光學(xué)系統(tǒng)的3D可視化
什么是大屏數(shù)據(jù)可視化?特點(diǎn)有哪些?
如何找到適合的大屏數(shù)據(jù)可視化系統(tǒng)
智慧能源可視化監(jiān)管平臺(tái)——助力可視化能源數(shù)據(jù)管理

評(píng)論