為什么有物理建模
對(duì)于復(fù)雜系統(tǒng)來說,搭建閉環(huán)系統(tǒng)模型是控制開發(fā)過程中不可缺少的一環(huán),它不僅能幫助我們驗(yàn)證控制算法還能進(jìn)行系統(tǒng)級(jí)性能分析與優(yōu)化。模型貫穿桌面仿真到實(shí)時(shí)仿真,幫助我們通過各種手段的仿真測(cè)試盡早的發(fā)現(xiàn)集成問題。

Simulink 作為嵌入式控制算法開發(fā)工具已經(jīng)廣泛的應(yīng)用于汽車、航空航天、工業(yè)自動(dòng)化、農(nóng)業(yè)機(jī)械等等各個(gè)行業(yè),也成為各大高校理工科專業(yè)同學(xué)所熟知的科研工具之一。
Simulink 作為通用的數(shù)學(xué)建模工具,早期也廣泛的被用于搭建被控對(duì)象數(shù)學(xué)方程。它提供了一個(gè)交互式圖形環(huán)境和一套豐富的模塊庫(很多公司也有積累多年的模型庫),允許用戶建立復(fù)雜的系統(tǒng)級(jí)模型。

但是隨著行業(yè)的發(fā)展,嵌入式控制器所面對(duì)的系統(tǒng)復(fù)雜度增加且靈活多變,手動(dòng)推導(dǎo)復(fù)雜系統(tǒng)的耦合數(shù)學(xué)方程變得越來越復(fù)雜。

有時(shí)候,甚至無從下手。

Simulink 主要面向的是基于信號(hào)流的處理和系統(tǒng)級(jí)的仿真,非常適合于控制系統(tǒng)、數(shù)字信號(hào)處理、通訊系統(tǒng)等領(lǐng)域的建模。
然而,當(dāng)我們從事機(jī)械、電氣、流體或熱系統(tǒng)的建模時(shí),系統(tǒng)的物理行為及其互相之間的復(fù)雜相互作用往往是我們關(guān)注的焦點(diǎn)。這些系統(tǒng)的建模不僅僅是基于信號(hào)的處理,更多的是需要考慮能量的交換、物質(zhì)的流動(dòng)以及物理組件的動(dòng)態(tài)行為。這就是 Physical Modeling 出現(xiàn)的原因。

對(duì)于不熟悉物理建模方法的朋友,可能有些困惑于它與我們所熟悉的 Simulink 建模工作有什么區(qū)別。
我用下面這個(gè)小動(dòng)畫來簡(jiǎn)要說明建模過程的區(qū)別。
如動(dòng)畫所示,物理建模本質(zhì)上是把基本元件模塊通過物理連線來復(fù)現(xiàn)系統(tǒng)拓?fù)浣Y(jié)構(gòu)。這里的物理連接沒有信號(hào)的方向問題,和真實(shí)系統(tǒng)一樣表示能量的交換。
相比之下,Simulink 建模通常需要推導(dǎo)系統(tǒng)的耦合數(shù)學(xué)方程組,用 Simulink 模塊連接來表達(dá)方程組的計(jì)算過程。這種傳統(tǒng)的數(shù)學(xué)建模手段,它的信號(hào)線表征數(shù)據(jù)流的方向,建模過程中需要嚴(yán)格配置信號(hào)的方向/正負(fù),否則會(huì)出現(xiàn)計(jì)算錯(cuò)誤。
當(dāng)系統(tǒng)結(jié)構(gòu)發(fā)生變化時(shí),我們需要謹(jǐn)慎考慮系統(tǒng)數(shù)學(xué)方程之間的變量關(guān)系,保證數(shù)學(xué)上的完整性,并用 Simulink 計(jì)算模塊表達(dá)出來。
而對(duì)于 Simscape 這類物理建模工具來說,我們只需要將原有的單質(zhì)量彈簧阻尼系統(tǒng)復(fù)用,并如同真實(shí)系統(tǒng)一樣連接起來,得到雙質(zhì)量彈簧阻尼系統(tǒng),而并不用考慮信號(hào)的方向問題。如下方動(dòng)畫所示。
總之Physical Modeling之所以出現(xiàn),主要是因?yàn)橐韵聨讉€(gè)原因:
面向物理系統(tǒng)的建模需求:對(duì)于涉及機(jī)械、電氣、流體和熱等物理過程的系統(tǒng),Physical Modeling 提供了一種更直觀、符合工程師思維習(xí)慣的建模方式。
復(fù)雜系統(tǒng)的多物理場(chǎng)交互:在許多應(yīng)用場(chǎng)景中,系統(tǒng)的行為受到多個(gè)物理領(lǐng)域相互作用的影響。Physical Modeling 可以更自然地描述這些相互作用。
提高建模效率:通過使用預(yù)定義的物理組件和庫,工程師可以快速搭建復(fù)雜的物理系統(tǒng)模型,而不需要從零開始定義所有的數(shù)學(xué)方程。
便于理解和交流:基于組件的模型更容易被非專業(yè)人士理解,有助于跨學(xué)科團(tuán)隊(duì)之間的溝通和合作。
因此,盡管基于信號(hào)流 Simulink 建模方式已經(jīng)非常強(qiáng)大和靈活,但針對(duì)特定類型的物理系統(tǒng)建模和分析,Physical Modeling 提供了一種更加直觀和高效的解決方案。
Simscape 前世今生
隨著工業(yè)領(lǐng)域系統(tǒng)建模仿真需求的增加,物理建模方法論也衍生出各種開源以及商業(yè)化軟件。
MathWorks 最早于 1998 年就提供了專用于電路/電網(wǎng)系統(tǒng)建模的 SimPowerSystem(后并入 Simscape Electrical)。
預(yù)測(cè)到未來多物理域復(fù)雜系統(tǒng)集成的大趨勢(shì),MathWorks 又于 2007a 推出了以物理建模方法(physical modeling)為基礎(chǔ)的 Simscape,接著于 2008b 發(fā)布 Simscape language,至此將 Simscape 定位為一個(gè)開放的多物理域仿真平臺(tái)。

隨著時(shí)間的推移,MathWorks 逐步擴(kuò)展了 Simscape 的功能,增加了多個(gè)領(lǐng)域的專業(yè)庫,除了前兩篇介紹過的 Battery 以及 Driveline,還有比如 Simscape Electrical(電氣系統(tǒng))、Simscape Mechanics(實(shí)屬瞎說,沒有這個(gè)...)、Simscape Fluids(流體系統(tǒng))和 Simscape Multibody(多體動(dòng)力學(xué)系統(tǒng))等。這些專業(yè)庫大大豐富了 Simscape 的應(yīng)用范圍,使其能夠應(yīng)對(duì)更加復(fù)雜的多物理場(chǎng)系統(tǒng)建模需求。

作為基礎(chǔ)平臺(tái),Simscape本身除了提供求解器技術(shù)、代碼生成技術(shù)、模型的數(shù)據(jù)查看功能等等;同時(shí)Simscape也有一個(gè)基礎(chǔ)模塊庫,其中內(nèi)置了常見的10種不同物理域(機(jī)械平動(dòng)和轉(zhuǎn)動(dòng)分屬不同的運(yùn)動(dòng)域),可以應(yīng)用于各行各業(yè),如下圖所示。

Simscape 特點(diǎn)
事實(shí)上除了本文介紹的 Simscape 之外,其它各種建模手段都有它們各自的特點(diǎn)。比如習(xí)慣于純代碼開發(fā)的工程師也可能依舊選擇編碼的方式來搭建模型,對(duì)于學(xué)生來說使用 Simulink 復(fù)現(xiàn)教科書各個(gè)方程能幫助學(xué)習(xí)和理解專業(yè)領(lǐng)域的基礎(chǔ)知識(shí)。
我們可以根據(jù)實(shí)際情況選擇合適的工具來解決自己的問題。

對(duì)于 Simscape 這類物理建模工具來說,它并不代表我們可以完全不懂相關(guān)的專業(yè)知識(shí),它只是讓我們可以花更少的時(shí)間在元件以及系統(tǒng)方程組的推導(dǎo)上,更方便的將理論實(shí)現(xiàn)為可以運(yùn)行的仿真模型,從而將更多的精力專注于系統(tǒng)分析與優(yōu)化。
原理圖組裝式建模,自動(dòng)構(gòu)建方程組
集成于 MATLAB/Simulink
可以方便的模擬元件故障以便分析對(duì)系統(tǒng)的影響
Simscape 內(nèi)置 DAEs 系統(tǒng)專用求解技術(shù)
開發(fā)人員需要購買所需的專有工具箱,而只是運(yùn)行該模型不需要額外購買專用工具箱(只需要持有 Simscape)從而降低團(tuán)隊(duì)工具軟件成本
Simscape 模型均支持 C 代碼生成,在缺乏物理原型的場(chǎng)景下亦能測(cè)試嵌入式軟件
Simscape 功能簡(jiǎn)介
下面從建模, 仿真, 分析, 部署, 共享幾個(gè)方面進(jìn)行簡(jiǎn)要說明,并添加了一些有意思的新功能介紹。
a. 建模
庫模塊零部件特性方程內(nèi)置于各個(gè)元件內(nèi)部,由類似于 m 語言的 Simscape Language 定義,且 Foundation 庫元件的源碼都是可見的。我們也可以用同樣的方式來構(gòu)建自己的元件以及元件庫。補(bǔ)充一句,原來用過 Simscape Language 的都知道,里面的查表函數(shù)支持到 2D,從 2024a 開始支持 N-D 查表,比如 3D,4D。

建模時(shí)將同種物理域端口相連構(gòu)建系統(tǒng)拓?fù)渚W(wǎng)絡(luò)得到模型。

模塊之間的連接為物理連接,在模塊連接過程中不用考慮信號(hào)的進(jìn)出方向。

最后系統(tǒng)方程組的推導(dǎo)以及求解則由求解器自動(dòng)完成。
另外,庫模塊還內(nèi)置故障模型,可以很方便設(shè)置、觸發(fā)和管理故障。


2024a 更新了一個(gè)小的顯示功能,所有 Simscape 模塊圖標(biāo)都變成“透明”的了,能更好的和自定義背景板顏色融合。


b. 導(dǎo)入
模型還可以導(dǎo)入,比如導(dǎo)入 CAD 裝配體及其零件模型、SPICE 描述文件、流體屬性數(shù)據(jù)、有限元矩陣信息以及電機(jī)有限元磁鏈數(shù)據(jù)。這些內(nèi)容在專門的工具箱章節(jié)再詳細(xì)介紹。

除了零部件之外,2024a 提供了一個(gè)圖片數(shù)據(jù)導(dǎo)入 app:Graph Importer tool,它可以從 PDF 格式的數(shù)據(jù)手冊(cè)中導(dǎo)入數(shù)據(jù)點(diǎn)。

c. 仿真求解
Simscape 求解器根據(jù)框圖模型自動(dòng)推導(dǎo)系統(tǒng)方程組,并進(jìn)行符號(hào)方程組的簡(jiǎn)化,如模型降階/變量消除。我們可以通過 Statistic Viewer 來查看當(dāng)前模型復(fù)雜度,對(duì)模型計(jì)算量有一個(gè)深入的了解。

我們搭建的任何模型都會(huì)從一個(gè)初始狀態(tài)開始。
而物理系統(tǒng)的初始狀態(tài)有其特殊性,即必須滿足物理約束。比如在同一個(gè)傳動(dòng)鏈兩端的質(zhì)量快的初始速度必須符合等效傳動(dòng)比關(guān)系。
對(duì)于復(fù)雜系統(tǒng),我們很難手動(dòng)計(jì)算和設(shè)置每一個(gè)元件的初始速度、初始位移、初始?jí)毫Α⒊跏級(jí)毫?、初?a href="http://www.wenjunhu.com/tags/電流/" target="_blank">電流等等。而 Simscape 求解器可以根據(jù)我們所設(shè)置的部分初始值以及優(yōu)先級(jí),來推算整個(gè)系統(tǒng)的初始狀態(tài)。我們可以通過 Variable Viewer 來查看初始化的結(jié)果。

除了微分方程之外,物理系統(tǒng)還時(shí)常包含代數(shù)方程部分,使得求解更為復(fù)雜。Simscape 提供針對(duì) DAE(Differential-Algebraic Equation) 方程組的隱式求解器技術(shù),可以更高效率的求解大部分模型,并可用于實(shí)時(shí)仿真比如 HIL 測(cè)試。
我們根據(jù)可以實(shí)際應(yīng)用來配置合適的求解器。

2024a 新增了多線程編譯功能以減少 Simscape 模型編譯時(shí)間。它默認(rèn)會(huì)打開,當(dāng)然如果你為了比較不同模型之間的編譯時(shí)間,那么也可以把它關(guān)閉。

此外,近幾年的新版 Simscape 在大規(guī)模模型(Scalable Compilation)上了做了很多的工作,另外新的比如增量編譯(Incremental Compilation)、增量代碼生成(Incremental Code Generation)等等技術(shù)降低了 Simscape 模型的編譯時(shí)間以及代碼生成的時(shí)間。
結(jié)合增量代碼生成(Incremental Code Generation),增量編譯技術(shù)(Incremental Compilation) 核心原理是在初次編譯過程中,對(duì)每個(gè)可重用組件進(jìn)行一次編譯,并保存編譯產(chǎn)物。當(dāng)模型中存在重復(fù)的組件實(shí)例時(shí),編譯器將重用這些已編譯的結(jié)果,而不是重新編譯。在隨后的編譯過程中,如果檢測(cè)到可重用組件未發(fā)生變化,編譯器將跳過這些組件的編譯,直接使用之前的編譯結(jié)果。

d. 分析
Simscape 模型也支持 Fast Restart 仿真模式,可以快速的運(yùn)行多次仿真而只需要編譯初始化一次。
和普通的Simulink模型一樣,Simscape 的任意信號(hào)(包括傳感器測(cè)不到的元件內(nèi)部信號(hào))都可以記錄和圖示。

另外,三維機(jī)械系統(tǒng) (Simscape Multibody) 的仿真結(jié)果還可以用動(dòng)畫的形式更直觀的表現(xiàn)出來。

并且,所有分析任務(wù)都可以使用
MATLAB 來自動(dòng)化及加速
e. 部署
Simscape 模型支持 C 代碼生成,且更新物理系統(tǒng)參數(shù)不需要重新生成代碼,以便我們將系統(tǒng)閉環(huán)仿真驗(yàn)證擴(kuò)展到 HIL 環(huán)節(jié)并測(cè)試不同的場(chǎng)景。
Simscape 讓我們的能:
更安全
更低成本的方式
分析系統(tǒng)
并測(cè)試更多樣的場(chǎng)景

不過其實(shí) Simscape 模塊也支持 HDL Coder(SimscapeFPGAHIL_lib.slx),通常用在有高速開關(guān)的電子電氣模型里。
f. 共享
使模型發(fā)揮更大價(jià)值
作為模型開發(fā)者,我們也可以把 Simscape 子系統(tǒng)封裝構(gòu)造自定義參數(shù)界面,放入零部件庫,以提高工作成果的復(fù)用性。

同時(shí),也可以分享只讀模式并設(shè)置密碼,在需要的場(chǎng)合保護(hù)知識(shí)產(chǎn)權(quán)。

作為 Simscape 獨(dú)有的特點(diǎn),它支持分享模式。
當(dāng)我們開發(fā)的模型需要被大規(guī)模應(yīng)用的時(shí)候,從節(jié)約軟件成本的角度,我們可以把模型導(dǎo)出為分享模式,模型的使用者只需要購買 Simscape 基礎(chǔ)工具箱,就可以仿真和運(yùn)行我們所分享的包含 Simscape 其它系列工具箱如 Electrical、Multibody 等等的模型。
