在汽車電子MBD開發中,TSMaster MBD模塊深度集成于TSMaster先進的總線分析、仿真與測試平臺,旨在為工程師提供一套從模型自動編譯、代碼集成到自動化測試的端到端無縫解決方案。本文將手把手教您從零搭建工程并構建高效測試流程,為優化開發工作流提供實用指南。
本文關鍵詞:TSMaster,MBD
目錄
Catalog
1. 符號說明
2.MBD說明
3.MBD基本功能介紹
4. Block(組件)說明
5. MBD模型
6. MBD工程搭建與解析
7. MBD工程結果
8. 組件相關
1
符號說明
本文中所用到的一些樣式和符號,可以參考以下表格說明。


2
MBD說明
2.1 應用場景
模型框圖(又稱MBD)用于建模、仿真和分析動態系統。它采用基于方框圖的圖形化編程環境,特別適合復雜系統(如控制系統、信號處理、通信系統等)的仿真和設計。
TSMaster中的模型框圖使用框圖表示法,通過拖放模塊和連接信號線來構建系統模型,并且支持離散時間以及混合系統的仿真,可在仿真過程中調整參數并立即看到結果。
模型框圖優點如下:
▲豐富的模塊庫:包含數學運算、信號處理、控制系統、通信系統等領域的預定義模塊;
▲分層建模:支持通過子系統創建層次化模型;可將多個模塊組合成子系統;支持多級子系統嵌套;可創建條件執行子系統(使能、觸發等);
▲仿真功能:支持不同采樣率的子系統并行運行;自動處理不同速率模塊間的信號傳遞;
▲深度集成:可直接從TSMaster系統變量中讀取數據;仿真結果可以導出為mbd文件進行分析;可調用模型框圖中的相關函數對TSMaster進行操作;
▲支持MIL、SIL、HIL;
▲支持直接加載Simulink的sldd、slx等文件仿真

圖1: 模型框圖
2.2模型框圖
模型框圖模塊工具欄主要包含撤銷、重做、從外部打開、保存當前文件、新建模型、導出svg、清除運行結果、生成小程序庫、運行模型、步進和停止等常用的工程操作。
2.2.1 工具欄

圖2: 模型框圖工具欄
模型框圖工具欄中功能按鈕介紹如下:(表1: 模型框圖工具欄介紹)

New SubItem詳細介紹:(表2: New SubItem介紹)

2.2.2 模型框圖配置
2.2.2.1 模型框圖設置
模型框圖的設置中可以設置仿真開始時間、仿真結束時間、固定步長和仿真模式的設置。TSMaster中的求解器為定步長求解器,保持固定時間步長推進仿真,不會因為系統動態變化而調整,適用于實時仿真。

圖3: 模型框圖-設置-求解器
模型框圖的設置中的數據類型分為double(雙精度浮點)和single(單精度浮點);模型框圖中大多是模塊默認使用double類型,適合高精度的科學計算、極大或極小數量的運算;single不是默認類型,需要顯式指定,多用于實時仿真加快計算速度(見圖4)。模型框圖的設置中綁定添加的數據倉庫后,就可以使用數據倉庫中的變量和數據類型。

圖4: 模型框圖-設置-數據類型
模型框圖的設置中的調試部分,模型調試過程中,設置仿真在特定時間點暫停,暫停后通過步進進行仿真。(見圖5)

圖5 : 模型框圖-設置-調試
2.3模型管理器
模型管理器界面中包括三個模塊:模型列表、數據倉庫和全局設置。工具欄中主要兩個功能:打開所有和關閉所有。

圖6 : 模型管理器界面顯示
模型列表中顯示當前TSMaster工程中加載的所有模型框圖的相關信息,包塊名稱、類型、版本、最后修改、狀態和文件路徑(模型框圖的介紹詳見2.2)。

圖7 : 模型管理器-模型列表
數據倉庫中顯示當前TSMaster工程中添加的所有數據倉庫的相關信息,包塊名稱、類型、版本、最后修改、狀態和文件路徑(數據倉庫的介紹詳見2.4)。

圖8 : 模型管理器-數據倉庫
在全局設置的“模型搜索路徑”中添加路徑(或添加級聯路徑)。添加了環境變量Path路徑后引用的a模型依賴b,c,d,把b c d的路徑加入后,打開a模型時就可以完整打開a b c d。

圖9 : 模型管理器-全局設置
2.4數據倉庫
數據倉庫是存儲模型相關數據的持久性存儲庫。可以存儲定義參數和信號的設計數據,還可以包括定義模型行為的數據。數據倉庫不存儲仿真數據,即模型仿真時進出 Inport 和 Outport 模塊的輸入或輸出。數據倉庫中的條目都是持久性的。
數據倉庫包括三個模塊:變量、數據類型和屬性。
數據倉庫中保存配置為JSON格式文件,JSON文件中定義數據倉庫名稱、最后修改者、添加的數據類型和變量的相關信息,也可以通過導入原先保存的JSON文件將變量、數據類型等信息添加進來。

圖10 : 數據倉庫界面
2.4.1 變量
數據倉庫中的變量模塊中可以添加信號和參數,可以將變量模塊導出為C代碼,再將C代碼導入到C小程序中,變量模塊中的添加的所有變量可以在C小程序中使用。

圖11 : 數據倉庫變量與C小程序
數據倉庫的變量模塊可以導入Simulink數據字典。添加的變量數據的類型可以修改為其他類型,例如:double、single、int8、uint8、int16、uint16、int32、uint32、int64、uint64和boolean,也可以是數據類型中添加的類型(數據類型詳見2.4.2),例如:Enum:EnumType、Bus:BusType、Value:ValueType、Numeric:NumericType等;變量中的初始值、類型、數組大小、最大值、最小值、單位和描述均能修改。

圖12 : 數據倉庫-變量
數據倉庫中的變量與模型框圖的關聯:在模型框圖中添加組件(以 DataStoreRead 為例),在設置中將數據類型與已添加的數據倉庫(例如 DataRepo)綁定。此時,DataStoreRead 中的數據存儲可以選擇數據倉庫中添加的變量,而 Constant 組件則可以讀取數據倉庫中變量所添加的參數(例如 Para)。如下圖:

圖13 : 數據倉庫與模型框圖的聯系
2.4.2 數據類型
數據倉庫中的數據類型模塊可以添加變量類型、總線類型、枚舉類型、別名類型和數值類型;數據類型中添加的數據可以導出為C頭文件,在C小程序中導入頭文件,數據類型中的所有類型可以在C小程序中使用;將.h文件加載到libs\common路徑下,C小程序中全局定義引用頭文件,即可使用調用頭文件中的數據類型。

圖14 : 數據倉庫數據類型與C小程序
數據倉庫中的數據類型的枚舉類型可以添加枚舉數據,修改默認值和存儲類型,其他的數據類型則支持修改名稱和描述。

圖15 : 數據倉庫-數據類型
數據倉庫中的數據類型與模型框圖的聯系:在模型框圖中添加組件(以Constant為例),設置中數據類型中的數據倉庫綁定已添加的數據倉庫(以DataRepo為例),Constant中的輸出數據類型可以選擇數據倉庫中添加的數據類型,如下圖:

圖16 : 數據倉庫與模型框圖的聯系
2.4.3 屬性
數據倉庫中的屬性模塊可以添加已創建的數據倉庫,移除數據倉庫和打開數據倉庫。當一個數據倉庫(以DataRepo為例,下文均以DataRepo代指)引用另一個數據倉庫(以DataRepo1為例下文均以DataRepo1代指),DataRepo的變量表和數據類型表可自由關聯DataRepo1的數據類型,但是變量表不會顯式DataRepo1中的變量。

圖17 : 數據倉庫的依賴
3
MBD 基本功能介紹
3.1 基礎功能
3.1.1 快捷操作

3.1.2 Block(組件) 操作

4
Block(組件)說明
4.1組件功能




5
MBD 模型
5.1Simulink模型
從MATLAB官網中下載RollAxisAutopilot.slx(網址1)和RollAxisAutopilotHarness.slx(網址2)文件
網址1:
https://ww2.mathworks.cn/help/ecoder/gs/getting-started-with-embedded-coder.html;
網址2:
https://ww2.mathworks.cn/help/ecoder/gs/compare-model-simulation-and-generated-code-results.html
5.1.1 RollAxisAutopilot模型介紹
5.1.1.1 關于模型
該模型顯示了為代碼生成而設計的橫滾軸自動駕駛儀控制系統的實現。
該模型代表了一種基本的滾轉軸自動駕駛儀,具有兩種操作模式:滾轉姿態保持和航向保持。這些模式的模式邏輯在此模型之外。模型架構將航向保持模式和基本橫滾姿態功能表示為原子子系統。
橫滾姿態控制功能是一個PID控制器,它使用橫滾姿態和橫滾率反饋來產生副翼指令。
控制器的輸入是基本橫滾角參考或橫滾命令,以跟蹤所需的航向。模型如下:

圖18: RollAxisAutopilot示意圖
5.1.1.2 RollAxisAutopilot/RollAngleReference
基本側傾角參考計算作為子系統RollAngleReference實現。

圖19:RollAxisAutopilot/RollAngleReference示意圖
5.1.1.3 RollAxisAutopilot/HeadingMode
子系統HeadingMode計算橫滾指令以跟蹤所需的航向。

圖20: RollAxisAutopilot/HeadingMode示意圖
5.1.1.4 RollAxisAutopilot/BasicRollMode
子系統BasicRollMode計算側翻姿態控制函數(PID)。

圖21: RollAxisAutopilot/BasicRollMode示意圖
5.1.2 模型導入
將RollAxisAutopilotHarness.slx文件拖拽到TSMaster中,模型會直接被加載到模型框圖中如下圖:

圖22: RollAxisAutopilotHarness示意圖
模型框圖中的Signal Editor組件中的FileName中roll_harness_TestInputs.mat文件放到RollAxisAutopilotHarness.slx同級目錄,將roll_harness_TestInputs_Maneuver_1.csv文件也放到RollAxisAutopilotHarness.slx同級目錄,roll_harness_TestInputs_Maneuver_1.csv中存放的是模型的輸入數據。
模型框圖中的Signal Conversion組件將來自Signal Editor的輸入的double類型的數據轉換為對應的single、boolean再輸入給子模塊Roll Axis Autopilot(此子模塊就是RollAxisAutopilot.slx的內容,詳見5.1.1)

圖23: RollAxisAutopilotHarness運行
5.2模型結果
MATLAB中RollAxisAutopilotHarness.slx模型的運行結果如下:

圖24: RollAxisAutopilotHarness-MATLAB運行結果
TSMaster中模型框圖中加載RollAxisAutopilotHarness.slx模型的運行結果如下:

圖25: RollAxisAutopilotHarnessTSMaster運行結果
將Ail_Cmd的輸出結果寫入到系統變量,在TSMaster的圖形中觀察系統變量的變化情況。TSMaster中模型框圖可以在任意的Output空添加Display或Scope實時顯示輸出數據。
6
MBD工程搭建與解析
(工程結果詳見7.1)本文中使用的數據庫為TSMaster軟件中附帶的數據庫CAN_FD_Powertrain.dbc所在地址為TSMaster安裝路徑下\Data\Demo\Databases文件夾中。如下圖所示:

圖26: 數據庫路徑
CAN數據庫圖25中的Demo數據庫到TSMaster中,并激活CAN總線仿真,以便后續信號映射中使用。

圖27: 數據庫加載
6.1變量準備
添加CAN數據庫和系統變量,將CAN數據中的信號與系統變量映射方向設置為雙向傳遞,方便后續修改系統變量的值來控制CAN信號的變化。

圖28: 信號映射
6.2工程搭建
6.2.1 信號輸入
事先在TSMaster中添加數據庫,(注:不可以選擇最大最小值為0的信號)在信號映射將CAN信號(/EngineData/EngSpeed以為例)與系統變量(以Var0為例)連接在一起,映射方向設置為:僅從系統變量到信號。
模型框圖中的添加組件Sine Wave和DataStoreWrite,DataStoreWrite綁定系統變量(以Var0為例),將Sine Wave和DataStoreWrite連接在一起,實現系統變量值是Sine曲線變化。

圖29: DataStoreWrite綁定
6.2.2 CAN信號的算法處理

圖30: 信號算法處理示例
簡單CAN信號算法處理,示例步驟如下:
(1)新建TSMaster工程,加載圖11中的數據庫(以CAN_FD_Powertrain.dbc為例)

圖31: 加載數據庫
(2)創建系統變量Var0

圖32: 添加系統變量
(3)信號映射中將系統變量Var0和CAN信號(以/EngineData/EngSpeed信號為例)連接,映射方向選擇“僅從系統變量到信號”

圖33: 系統變量與CAN信號映射
(4)添加模型框圖,模型框圖中添加Sine Wave和ToWorkspace組件,ToWorkspace綁定系統變量Var0,Sine Wave連線到ToWorkspace,實現系統變量值的Sine變化,同時實現CAN信號值的Sine變化

圖34: 系統變量值Sine變化
(5)CAN信號的算法處理:添加子系統operation,使用FromWorkspace讀取系統變量Var0的值作為輸入子系統,Constant作為另一個輸入給子系統
子系統中可以添加的算法模塊有:
▲微積分運算:積分器(Integrator)和微分器(Derivative)
▲離散系統:單位延遲(Unit Delay)、延遲(Delay)等等
▲邏輯與比較組件:Logical Operator(AND/OR/NOT等邏輯門);Relational Operator(比較運算符,如>、<、==);Switch(基于條件選擇信號)、Multiport Switch(多路選擇)
▲數學算法:Sum(求和)、Product(乘積)、Gain(增益乘法)、Abs(絕對值)等;Trigonometry(三角函數,如sin、cos);Min Max(極值運算);Exp(指數)、Log(對數)、Sqrt(平方根)
子系統中添加EnablePort組將,在子系統外添加Constant連接到EnablePort口可以通過修改Constant的值來控制是否執行當前子系統。

圖35: 信號算法子系統詳細展示
▲輸出:子系統中的Output口可以連接到任意地方輸出
通過上述步驟可以在模型框圖中處理CAN信號的值,再使用輸出模塊中的Scope以圖形變化的形式展示,也可以通過Display以數值變化的形式展示,還可以使用ToWorkspace的方式再寫入到系統變量再將系統變量添加到圖形窗口觀察。所有添加的算法相關組件的連線都可以通過添加輸出模塊實時觀察每個階段的數據變化情況。
6.2.3 CAN信號邊沿檢測

圖36: 信號邊沿示例
CAN信號處理操作按照5.2.1,模型框圖中的添加組件DataStoreRead,DataStoreRead綁定系統變量來獲取系統變量值,在SubSystem中添加相關邊沿組件觀察信號邊沿變化:
(1)Edge Detector :邊沿檢測器
(2)Detect Increase :檢測上升,模塊輸出 1(True),否則輸出 0(False)
(3)Detect Decrease :檢測下降,模塊輸出 1(True),否則輸出 0(False)
(4)Detect Change :檢測任意變化,模塊輸出 1(True),否則輸出 0(False)
子模塊中的組件示意圖如下:

圖37: 信號邊沿子系統詳細展示
在邊沿檢測組件的輸出口可以連接輸出模塊中的Scope以圖形變化的形式展示,也可以通過Display以數值變化的形式展示。
邊沿檢測與Switch結合使用:
(1)將Edge Detector通過DataTypeConversion轉換信號類型,連接到Switch的第一個輸入信號;Switch的的控制信號連接Constant模塊(Constant值為1);Detect Decrease轉換信號類型后,連接到Switch的第三個輸入信號, 模塊根據 控制信號 的取值選擇輸出第一個輸入信號或第三個輸入信號。
選擇性輸出下降沿檢測結果:
由于控制信號固定為 1,Switch 會始終選擇第3個輸入(即 Detect Decrease 的輸出),最終系統等效為一個帶數據類型轉換的下降沿檢測器。
冗余設計意圖:
雖然連接了 Edge Detector 的通用邊沿檢測結果(輸入1),但通過固定控制信號將其屏蔽,僅保留 Detect Decrease 的專用下降沿檢測功能。
(2)Detect Change 連接到Manual Switch 輸入1,Constant 連接到Manual Switch 輸入2實現了一個 "手動控制的信號變化監視器"。
監控模式:輸出信號變化檢測結果(變化=1,無變化=0);
固定輸出模式:忽略輸入信號,始終輸出預設的 Constant 值。
6.2.4 其他組件使用
模型框圖中還有其他組件實用組件,比如:
(1)Ground:輸入信號接地,防止出現關于未連接的輸入端口的警告

圖38: Ground示例
(2)Sign:信號符號判斷,在需要了解信號的符號是可以將Sign組件連接到連線中

圖39: Sign示例
(3)Clock:實時獲取當前模塊仿真時間
(4)Stop Simulation:在輸入信號不為0時可以立即停止仿真

圖40: Clock示例
(5)Step:可以控制信號在指定時間產生從初始值到終值的跳變

圖41: Step示例
(6)控制子系統執行端口:Enable Port和Trigger Port
在子系統中加入Enable Port(或Trigger Port),子系統的外部會多出一個輸入端口,在外部通過修改連接到端口的信號的值控制是否執行當前子系統。

圖42: Enable Port和Trigger Port

圖43: Enable Port和Trigger Port子系統外部顯示
6.2.5 小程序庫使用
模型生成mp后被任意調用,實現圖形程序(或C小程序)運行模型框圖,更加便捷的控制模型框圖的運行。

圖44: 生成C小程序庫
添加新的圖形程序,添加執行單元綁定API函數調用,選擇小程序庫函數,使用run函數可以實現在圖形程序運行模型框圖。

圖45: 圖形程序調用小程序庫
7
MBD 工程結果
7.1示例工程運行與結果
示例工程搭建完成后,在圖形程序中依次運行模型框圖。
信號輸入中將Sine Ware的值賦值給系統變量Var0,再通過信號映射中的配置將系統變量的值賦值給CAN信號,在圖形中實時看到,Trace窗口中也能看到報文變化。(5.2.2示例效果)(見圖46)

圖46: 信號輸入結果
CAN信號算法處理過程中將Sine信號和常數模塊,Sine先進行絕對值處理,再將兩者相加而后進行增益處理最后相乘,再通過Output端口輸出,連接到Scope和Display展示,可以在任意位置添加Output端口將實時數據輸出觀察。(見圖47)

圖47: 算法處理結果
CAN信號邊沿檢測檢測中,將Output1連接到Switch中輸出的不規則的信號(由控制信號決定);將另一個Output2連接到ManualSwitch中,Input是一個常數1,所有輸出為常數1。(5.2.3示例效果)(見圖48)

圖48: 邊沿檢測結果
其他組件使用中Input2(SubSystem輸入連接的是Sine正弦波)連接到Sign,根據獲取到的信號符號輸出:如果輸入大于0,輸出為1;如果輸入等于0,輸出為0;如果輸入小于0,輸出為-1。(5.2.4示例效果)(見圖49)
Clock輸出的是實時仿真時間,連接到Output1,運行結束后展示的最后結果為設置中的仿真結束時間。
Step設置的是從2階躍到9,連接到Output2,所以展示的是最后階躍的結果。

圖49: 其他組件結果
8
組件相關
8.1 組件相關
模型框圖中的組件在使用過程中可能出現的問題:
(1)Signal Editor組件無IO空僅支持導入RollAxisAutopilotHarness.slx作為演示(僅支持導入CSV);
(2)Model reference目前只支持載入Simulink,支持slx和TSMaster中的mbd,目前支持用戶關聯;
(3)Constant不支持向量、復數,支持矩陣和結構體;
(4)callback button目前只是純兼容Simulink導入slx不報錯,沒有任何實際作用;
(5)Chart組件中的狀態跳轉條件中的變量目前不會主動創建;
8.2API相關
組件FunctionCaller中綁定的API中有部分API只針對小程序,在函數列表中僅供展示。

-
自動化測試
+關注
關注
0文章
268瀏覽量
27788 -
汽車電子
+關注
關注
3045文章
8958瀏覽量
172812 -
模型
+關注
關注
1文章
3752瀏覽量
52101 -
MBD
+關注
關注
0文章
30瀏覽量
9539
發布評論請先 登錄
基于模型的設計(MBD)的深入討論
TPTTPT動態自動化測試工具怎么樣
新功能發布 | TSMaster的MATLAB自動化控制模塊
新功能發布 | TSMaster新增CANoe自動化控制模塊,歡迎下載體驗!
干貨分享 | TSMaster的記錄功能需求與實踐
新書推薦 | TSMaster開發從入門到精通
軟件更新 | 從數據到模型,全面升級!TSMaster新版助力汽車研發新突破
干貨分享 | TSMaster MBD工程搭建與解析指南
干貨分享 | TSMaster MBD模塊全解析:從模型搭建到自動化測試的完整實踐
評論