| 作者 Brad Hieb 和 Erick Saldana Sanvicente,MathWorks
(本文采用了機(jī)器翻譯)
隨著系統(tǒng)規(guī)模和復(fù)雜性的增長,工程團(tuán)隊(duì)面臨著一系列在小規(guī)模上不存在的全新挑戰(zhàn)。
規(guī)模的大幅擴(kuò)大幾乎總是需要方法的轉(zhuǎn)變,不僅是范圍上的,而且是種類上的。此原則也適用于使用基于模型的設(shè)計(jì)處理 Simulink 模型時(shí)。如果不遵循最佳實(shí)踐,從簡單的概念驗(yàn)證模型過渡到具有數(shù)十萬個(gè)塊的大規(guī)模模型時(shí),一系列問題開始出現(xiàn),包括模型架構(gòu)、數(shù)據(jù)管理、接口、文件管理和仿真性能不佳的問題。這些大型模型的構(gòu)成要素可能很小,通常由不同的個(gè)人、團(tuán)隊(duì)甚至部門開發(fā)。當(dāng)有標(biāo)準(zhǔn)化并且遵循最佳實(shí)踐時(shí),這些模型可以順利擴(kuò)大規(guī)模。
本文介紹了一組最佳實(shí)踐,用于解決在 Simulink 中處理大型復(fù)雜模型時(shí)經(jīng)常遇到的挑戰(zhàn)。由于這個(gè)主題本身相當(dāng)廣泛,這里的目標(biāo)不是提供詳細(xì)的規(guī)定性指導(dǎo),而是介紹每種最佳實(shí)踐的基礎(chǔ)知識(shí)以及可供探索的其他資源的鏈接,以便更深入地了解如何應(yīng)用它。
使用模型引用進(jìn)行模型組件化
當(dāng)我們與客戶合作時(shí),經(jīng)常會(huì)看到大型模型缺乏有意義的組件化。團(tuán)隊(duì)從一個(gè)簡單的模型開始測(cè)試想法;隨著時(shí)間的推移,新的元素或特性被添加,所有的工作都在一個(gè)單一的、整體的模型文件
中完成,而這個(gè)模型文件很快就會(huì)變得難以處理。在 Simulink 中,有幾種方法可以組件化大型模型,最佳方法將取決于所考慮的具體用例。例如,如果一個(gè)團(tuán)隊(duì)只是想直觀地組織一組塊或組件,他們可能會(huì)選擇模型內(nèi)虛擬子系統(tǒng)。對(duì)于想要?jiǎng)?chuàng)建廣泛使用且不經(jīng)常更改的實(shí)用程序的其他團(tuán)隊(duì)來說,鏈接子系統(tǒng)(或庫)是一個(gè)更好的選擇。如果目標(biāo)是開發(fā)或仿真一個(gè)組件作為獨(dú)立模型,那么模型參考是最好的方法。
對(duì)于大規(guī)模模型來說,模型引用也是組件化的關(guān)鍵。原因之一是 Simulink 中的模型引用使團(tuán)隊(duì)能夠?qū)⒔M件作為獨(dú)立模型并行開發(fā)。每個(gè)組件都具有完整的功能且可仿真,并保存在自己的 SLX 文件中,因此每個(gè)團(tuán)隊(duì)都可以獨(dú)立工作而不會(huì)干擾其他團(tuán)隊(duì)的工作 - 當(dāng)整個(gè)設(shè)計(jì)都捕獲在一個(gè)文件中時(shí),這幾乎是不可能做到的。同樣重要的是,這些獨(dú)立的參考模型可以放置在更大的模型內(nèi),以便于集成(圖 1)。該架構(gòu)可以使用參考模型的緩存實(shí)例和增量構(gòu)建來減少構(gòu)建時(shí)間。它還允許使用加速器和快速加速器模式,下面關(guān)于性能的部分將詳細(xì)介紹。
圖 1. 模型 BMS_Software 和 Battery_Model 可以獨(dú)立開發(fā),然后放置(或引用)在 BMS_ClosedLoop 模型。
使用模型引用進(jìn)行模型組件化
讓我們重新考慮一下導(dǎo)致組件化問題的相同場(chǎng)景:一個(gè)團(tuán)隊(duì)從一個(gè)簡單的模型開始作為早期的概念證明,然后隨著時(shí)間的推移不斷對(duì)其進(jìn)行完善。對(duì)于一個(gè)簡單的模型,許多工程師會(huì)將變量、參數(shù)和其他數(shù)據(jù)存儲(chǔ)在基礎(chǔ)工作區(qū)。這種方法適用于非正式工作流程、快速參數(shù)調(diào)整、快速原型設(shè)計(jì)、單一開發(fā)人員工程或需要參數(shù)普遍可見性的用例。然而,隨著模型范圍和復(fù)雜性的增加,依賴基礎(chǔ)工作區(qū)進(jìn)行數(shù)據(jù)管理會(huì)帶來一些缺點(diǎn)。例如,由于每次工程師關(guān)閉會(huì)話時(shí)基礎(chǔ)工作區(qū)都會(huì)被清除,因此必須手動(dòng)保存為 MATLAB 代碼 (.m) 或 MATLAB 文件 (.mat)。
數(shù)據(jù)字典比基礎(chǔ)工作區(qū)更適合管理涉及大型模型、分布式開發(fā)或范圍數(shù)據(jù)的工程數(shù)據(jù)。出現(xiàn)這種情況的原因有幾個(gè)(見圖2)。第一是數(shù)據(jù)持久化。數(shù)據(jù)以特定的文件格式保存在數(shù)據(jù)字典 (.sldd) 文件中,使團(tuán)隊(duì)能夠獨(dú)立于模型和基礎(chǔ)工作區(qū)定義、管理和更新數(shù)據(jù)。其次,團(tuán)隊(duì)可以將數(shù)據(jù)分成多個(gè)字典,以進(jìn)一步改善數(shù)據(jù)組織。第三,數(shù)據(jù)字典在變更跟蹤工作流中運(yùn)行良好,團(tuán)隊(duì)可以查看進(jìn)行了哪些更改、何時(shí)進(jìn)行更改以及由誰進(jìn)行更改,甚至可以在需要時(shí)恢復(fù)到早期版本。
圖 2. 處理大型模型時(shí)數(shù)據(jù)字典的優(yōu)勢(shì)。
這里需要注意的是,使用基礎(chǔ)工作區(qū)和數(shù)據(jù)字典之間的選擇并不是全有或全無的。這兩種方法可以共存,因此團(tuán)隊(duì)可以隨著時(shí)間的推移逐漸從基礎(chǔ)工作區(qū)遷移到一個(gè)或多個(gè)數(shù)據(jù)字典。
簡化與總線的接口
在組件化、分層模型中連接子系統(tǒng)時(shí),最初可能看起來最直接的方法是針對(duì)從一個(gè)組件傳遞到另一個(gè)組件的每個(gè)元素使用單獨(dú)的信號(hào)線。當(dāng)然,這適用于簡單的界面,但這種方法很快就會(huì)導(dǎo)致模型變得比必要的更復(fù)雜、更混亂、更難管理。
在 Simulink 中,總線可以通過用一條線表示一組信號(hào)(或元素)來簡化界面并減少混亂,就像幾根電線捆綁在一起一樣。通過一個(gè)簡單的例子很容易看出它的價(jià)值。考慮一個(gè)用于識(shí)別電池系統(tǒng)中異常情況的故障檢測(cè)組件。該組件有 11 種不同的輸入,包括最大和最小電池電壓、最大和最小電池溫度、接觸器狀態(tài)、電池組電壓和電流以及電流限制。雖然創(chuàng)建具有 11 個(gè)獨(dú)立輸入端口的組件是可能的,但將輸入分成邏輯組并為每個(gè)組使用一個(gè)總線更為清晰。例如,由于電池電壓和電池溫度信號(hào)均來自同一組件且彼此相關(guān),因此將它們分組為單個(gè)四元件總線是有意義的(圖 3)。顯然,這是一個(gè)相對(duì)簡單的例子,但它說明了如何使用總線來簡化組件接口,而且更廣泛地說,簡化復(fù)雜模型。
圖 3. 故障檢測(cè)組件已更新,使用總線而不是單獨(dú)的信號(hào)作為輸入。
利用工程改善文件管理
遵循迄今為止概述的最佳實(shí)踐的一個(gè)副作用是必須管理的文件數(shù)量增加。當(dāng)整個(gè)設(shè)計(jì)都采用單一模型時(shí),團(tuán)隊(duì)需要管理的文件集相對(duì)較小,但當(dāng)積極采用組件化和數(shù)據(jù)字典時(shí),文件集就會(huì)迅速增長。如果沒有文件管理策略,文件的激增就會(huì)帶來問題。
在 Simulink 中工作時(shí),團(tuán)隊(duì)可以使用工程來幫助自動(dòng)化文件管理活動(dòng),這樣他們就有更多時(shí)間花在建模、仿真和其他高價(jià)值活動(dòng)上。例如,在設(shè)置工程時(shí),團(tuán)隊(duì)將指定工程路徑中的文件夾。當(dāng)工程打開時(shí),這些文件夾會(huì)被添加到搜索路徑中(當(dāng)工程關(guān)閉時(shí),這些文件夾會(huì)被刪除),以確保工程的所有用戶都可以訪問其中的文件。團(tuán)隊(duì)還可以指定用于自動(dòng)設(shè)置項(xiàng)目環(huán)境的啟動(dòng)文件,以及通過撤銷設(shè)置步驟(例如)來清理環(huán)境的關(guān)閉文件。此外,可以配置工程以在啟動(dòng)時(shí)打開常用文件并為常用任務(wù)創(chuàng)建快捷方式。
工程還可以幫助團(tuán)隊(duì)避免常見的錯(cuò)誤。例如,在復(fù)雜的模型層次結(jié)構(gòu)中,兩個(gè)同名的模型文件存在于不同的目錄中是很常見的。當(dāng)使用工程時(shí),工程師將看到以下警告:檢測(cè)到影子文件。此外,當(dāng)工程關(guān)閉時(shí),系統(tǒng)會(huì)提示工程師保存任何未保存的更改,以幫助避免工作丟失。
最后,工程有助于簡化源代碼控制,其中刷新、提交、推送、拉取、獲取等常見操作以及其他常見操作可直接從用戶界面訪問(圖 4)。
圖 4. 源代碼控制操作可直接從工程選項(xiàng)卡的源代碼控制部分找到。
優(yōu)化仿真性能
到目前為止我們所介紹的最佳實(shí)踐主要集中于大型模型的結(jié)構(gòu)及其相關(guān)的數(shù)據(jù)和文件。在與實(shí)施了這些最佳實(shí)踐的客戶的對(duì)話中,我們經(jīng)常被問及如何提高仿真性能:“現(xiàn)在我們有了更好的方法來構(gòu)建大型模型,我們?nèi)绾尾拍茏屗鼈兎抡娴酶炷?”
有多種工具可用于提高仿真性能。作為第一步,我們建議性能顧問,它運(yùn)行一系列檢查來識(shí)別可能減慢仿真速度的配置設(shè)置。接下來,對(duì)于任何包含初始化 MATLAB 代碼的模型(例如,在回調(diào)中),運(yùn)行 MATLAB 探查器來確定 MATLAB 花費(fèi)時(shí)間最多的地方是個(gè)不錯(cuò)的主意。Simulink 探查器評(píng)估模型執(zhí)行時(shí)間并識(shí)別可能導(dǎo)致仿真性能不佳的問題。最后,對(duì)于使用可變步長求解器的團(tuán)隊(duì),我們建議運(yùn)行求解器探查工具來分析求解器行為,以識(shí)別潛在問題(例如求解器重置或極小的時(shí)間步長),并提供解決這些問題的建議。有關(guān)每種工具的指南,包括如何使用以及何時(shí)使用,請(qǐng)參閱排除故障并提高仿真性能指南(見表)。
已將大型模型組件化的團(tuán)隊(duì)可以使用加速器模式或快速加速器模式加速仿真,此種模式用生成的代碼替換 Simulink 仿真中通常使用的解釋代碼。在模型初始化期間, Simulink 會(huì)檢查緩存中是否存在已生成代碼的組件。這種增量構(gòu)建過程極大地減少了具有許多組件的大型模型的初始化時(shí)間,因?yàn)橹挥凶陨洗畏抡嬉詠戆l(fā)生變化的組件才需要重建(并添加到緩存中)。
減少初始化時(shí)間的另一種方法是使用快速重啟。當(dāng)團(tuán)隊(duì)執(zhí)行多次仿真運(yùn)行而沒有對(duì)模型進(jìn)行任何結(jié)構(gòu)性更改時(shí),快速重啟可以通過執(zhí)行仿真而無需編譯模型并每次終止仿真來加快該過程。相反,在第一次仿真時(shí),模型被編譯和初始化,然后在每次后續(xù)仿真中捕獲模型操作點(diǎn)的快照(圖 5)。
圖 5. 優(yōu)化模型以實(shí)現(xiàn)更快的仿真。
總之,當(dāng)工程團(tuán)隊(duì)?wèi)?yīng)對(duì)擴(kuò)展 Simulink 模型的復(fù)雜性時(shí),遵循最佳實(shí)踐變得至關(guān)重要。本文概述了模型組件化、數(shù)據(jù)管理和性能優(yōu)化的基本策略,強(qiáng)調(diào)了結(jié)構(gòu)化方法對(duì)模型開發(fā)的重要性。通過利用性能顧問、MATLAB 探查器和求解器探查工具等工具,團(tuán)隊(duì)可以增強(qiáng)仿真性能并提高生產(chǎn)力。這些實(shí)踐確保大型模型仍然可管理、高效且適應(yīng)性強(qiáng)。隨著基于模型的設(shè)計(jì)領(lǐng)域不斷發(fā)展,這些指南將幫助團(tuán)隊(duì)構(gòu)建強(qiáng)大的模型,以滿足日益復(fù)雜的工程挑戰(zhàn)的需求。為了進(jìn)一步探索,我們鼓勵(lì)讀者參與本文重點(diǎn)介紹的額外資源和培訓(xùn)機(jī)會(huì)。
本文的內(nèi)容基于我們?cè)?MathWorks 北美汽車會(huì)議上發(fā)表的演講,題為“從組件到復(fù)雜系統(tǒng)構(gòu)建大型模型的最佳實(shí)踐”(請(qǐng)可以點(diǎn)擊“閱讀原文”觀看此英語演講)。
正如我們一開始所說的,這是一個(gè)龐大的話題,無法在一篇文章或一次演講中詳盡地涵蓋。歡迎您報(bào)名我們 2025 年 5 月在上海和北京召開的 MATLAB EXPO 中國用戶大會(huì),關(guān)注我們的建模、仿真、測(cè)試和實(shí)現(xiàn)分會(huì)場(chǎng)與汽車專場(chǎng)分會(huì)場(chǎng)演講,或者來現(xiàn)場(chǎng)與我們的專家進(jìn)行面對(duì)面的交流。
-
matlab
+關(guān)注
關(guān)注
188文章
2990瀏覽量
232941 -
Simulink
+關(guān)注
關(guān)注
22文章
538瀏覽量
63491 -
模型
+關(guān)注
關(guān)注
1文章
3471瀏覽量
49874
原文標(biāo)題:構(gòu)建大規(guī)模 Simulink 模型的標(biāo)準(zhǔn)化最佳實(shí)踐
文章出處:【微信號(hào):MATLAB,微信公眾號(hào):MATLAB】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
名單公布!【書籍評(píng)測(cè)活動(dòng)NO.30】大規(guī)模語言模型:從理論到實(shí)踐
【大規(guī)模語言模型:從理論到實(shí)踐】- 每日進(jìn)步一點(diǎn)點(diǎn)
EPON標(biāo)準(zhǔn)化進(jìn)展
大規(guī)模特征構(gòu)建實(shí)踐總結(jié)
python變量的標(biāo)準(zhǔn)化
構(gòu)建大規(guī)模MIMO的難點(diǎn)在哪?
AUTOSAR分層模型及標(biāo)準(zhǔn)化的應(yīng)用接口有哪些
EPON技術(shù)的標(biāo)準(zhǔn)化與測(cè)試
NVIDIA聯(lián)合構(gòu)建大規(guī)模模擬和訓(xùn)練 AI 模型
部署Linux的最佳實(shí)踐探索
使用Ansible構(gòu)建虛擬機(jī)部署Linux的最佳實(shí)踐
大規(guī)模語言模型的基本概念、發(fā)展歷程和構(gòu)建流程

評(píng)論