Simulink程式碼生成之資料管理(下)

歡迎關注我的微信公眾號/知乎專欄【新能源動力電池與BMS】,頭條號:阿Q在江湖。所有文章資料會在公眾號首發。

本文同步影片教程:

Simulink程式碼生成之資料管理(2)_影片教程

上文Simulink程式碼生成之資料管理(1)講到Simulink資料管理可以選擇兩種方法,預設是透過Base Workspace(基本工作空間),另一種是透過Data Dictionary(資料字典)。上文主要是講透過Base Workspace進行資料管理,本文講講Data Dictionary(資料字典)的資料管理方法。

1。 什麼是資料字典?

通常來說,資料字典就相當於一個大的集合,裡面包含你設計的各種資料,比如說Signal ,Parameter等,並且規定了各種資料的屬性及資料結構,功能比較強大,

比如說資料的變更追蹤,資料持久儲存等。而大型的專案開發,模型結構比較複雜,可能包含幾百上千個Signal與Parameter,資料物件透過資料字典來建立和儲存可能會更加方便。

Simulink程式碼生成之資料管理(下)

同樣,先來新建一個數據字典,也是在Simulink選單欄選擇File——>> Model Properties,選擇Data Dictionary,點選NEW,命名後儲存好。

2。 訊號管理(Signal)

Ø 在模型中,依然需要設定我們關心的輸入輸出三個Signal的,命名為a, b, out後,繫結到資料字典物件中操作。下圖顯示繫結Signal物件到資料字典中的步驟,這裡直接開啟Model Explorer, 在對話方塊操作。

Simulink程式碼生成之資料管理(下)

Ø 圖顯示,繫結成功後,模型中Signal名稱旁邊會顯示有特殊標識。接下來,就可以在資料字典中設定Signal的屬性了。

Simulink程式碼生成之資料管理(下)

Ø 再次開啟Model Explorer對話方塊,按下圖中步驟,選擇到之前新建的資料字典名稱,選擇增加Signal,依次新建a, b, out三個變數名(必須與模型中新建的Signal名稱同名,這樣才能繫結),修改Signal三個屬性:名稱(Name)、資料型別(Data Type)、儲存型別(Storage Class)。

Simulink程式碼生成之資料管理(下)

以上就已完成了Signal訊號的屬性修改,儲存型別(Storage Class)依然選擇全域性變數,需知道Signal是儲存在MCU中的RAM中的。

3。 引數管理(Parameter)

同樣,可標定的引數是儲存在MCU中的ROM中的,下圖模型中我們將其定義為k1和k2。

Simulink程式碼生成之資料管理(下)

Ø 開啟Model Explorer,按照以下步驟新建Parameter,並設定引數屬性。這裡Parameter屬性比Signal屬性多一個Value,即引數是必須有初值的,必須設定(步驟4),將k1與k2分別設定為15和5,其中儲存型別(Storage Class)也是選擇全域性變數。

Simulink程式碼生成之資料管理(下)

4。 生成C程式碼

按Ctrl + B ,生成C程式碼,Signal與Parameter的資料型別、演算法可讀性等,與基於Base Workspace的資料管理方式生成的程式碼內容完全一樣。

Simulink程式碼生成之資料管理(下)

Simulink程式碼生成之資料管理(下)

5。 儲存資料字典

最後,別忘了在Model Explorer中右鍵儲存資料字典中的設定和修改項,以便下次重新開啟模型時直接使用。

Simulink程式碼生成之資料管理(下)

總結

本文介紹了Simulink嵌入式程式碼生成中的資料管理中的基於資料字典的方法。它與基本工作空間(Base Workspace)相比,在管理複雜模型的資料時會更加方便,也易於儲存和變更追蹤。不過生成的C程式碼並沒有區別。