原文鏈接:【MBD開發】參考模型(Reference Model)
01.參考模型
在《Sinmulink代碼生成基礎體驗教程》介紹通過Subsystem將模型封裝成函數,並且通過原子子系統實現函數的復用。
上圖是一個比較極端的例子,實際工程不會分這麼細。通常一個大模型是由不同的模塊組成的,不同的模塊都會有各自的Owner。
如果使用原子子系統,ROOT層(模型的最上面那層)的模型無法與下面的子模塊完全解耦,對子模塊的維護不是很友好。
假設有兩個簡單的模型【variant_mode1】與【variant_mode2】,兩個模型的邏輯各不相同,也隸屬於兩個不同的Owner。下面開看看如何使用模型參考解決子模型維護的問題!
往Simulink中加入【Model】模塊,通過這個模塊可以引用其他的slxmdl等格式文件。如上圖,兩個【Model】分別引用variant_mode_1 與variant_mode_2模塊。
02.參考模型生成代碼
完善下ROOT層模型的輸入輸出,並且完善數據字典,然後綁定信號。具體操作不贅述,還不清楚的自行翻閱《Sinmulink代碼生成基礎體驗教程》
點擊生成代碼,怎麼生成就不說瞭前面嘮叨無數次瞭,如果不知道去看《Sinmulink代碼生成基礎體驗教程》。
需要註意的是,ROOT層主模型、2個引用模型的模型配置要完全一樣(如:芯片類型,數據類型等等)
打開生成代碼報告,可以看到引用的兩個模型已經生成兩個函數引用語句。如果夠細心會發現一個問題,就是variant_mode_1與variant_mode_2的函數原型在哪裡?
打開資源管理器,在生成的文件夾中也沒找到存放variant_mode_1與variant_mode_2的函數原型的C文件。
默認配置下藏在這裡,再與ROOT層模型同級目錄下有一個slprjert文件夾 。variant_mode_1與variant_mode_2文件夾就是存放函數原型的地方,代碼集成的時候直接引用slprjert即可。
03.受保護模型
在跨部門或者或組織合作中,很多時候都希望自己輸出的模型是一種受保護的狀態。例如,使用者無權查看源代碼或者需要輸入密碼才能查看源代碼。
右鍵一個【Model】,選擇【Create Protected Model for Selected Model Block】將模型轉換受保護狀態。
其中【content type】配置為【readable source code】可讀模式,打開和編輯的密碼都為空,老鐵們有需要自己設置個密碼試試看。最後一個【contents】生成內容配置為【protect model (.slxp) only】
有一個點要註意,這種轉換模式需要外部編譯器的支持,如:GCC或者VC++等。
把【variant_mode_1】編譯成slxp文件,從新引用。這樣我們就能對比兩個引用模型的區別瞭。
-
扫码下载安卓APP
-
微信扫一扫关注我们微信扫一扫打开小程序手Q扫一扫打开小程序
-
返回顶部