1.將子系統轉換為模型的引用:
(1)將待轉換的部分使用CTRL + G合成子系統,並為該子系統命名保存。
(2)使用如下的matlab語句進行子系統向模型引用轉換
Simulink.SubSystem.convertToModelReference(...
'simulink文件名稱/要保護的子系統名稱', ...
'新模型引用名稱,與之前的子系統名稱不同', ...
'AutoFix',true,...
'ReplaceSubsystem',true,...
'CheckSimulationResults',true);
(3)將轉換后的模型引用進行保存。
2.模型保護:
(1)對上述保存的模型引用右鍵,選擇Subsystem&Model Reference->Create Protected Model for Selected Model Block.
(2)出現對話框,勾選simulink與use generated code,並填寫密碼(每一行填寫相同的密碼,該密碼至少為4位)。
(3)存儲地址與create hardness model for protected model,可以選擇性勾選。
(4)點擊create,構建受保護模型。
(5)文件夾中出現的后綴為.slxp的即為創建的受保護模型。
3.使用受保護的模型
(1)對模型左下角的盾牌符號右鍵,選擇Authorize,輸入Simulation與Code Generation的密碼,點擊OK,即可對該模型進行仿真與代碼生成。
(2)授權的時間為本次matlab軟件使用時間。
上述方法針對於2016b等高版本,該方法在2012b等低版本上會出現不適配的情況,所以做新的方法說明:
1.子系統轉換為模型引用
(1)右鍵子系統->Block Parameters->勾選 Treat as atomic unit -> Sample time = -1->Apply.
(2)右鍵子系統->Subsystem & Model Reference->Convert Subsystem to -> Referenced Model(如果出現提示,選擇continue conversion)。
(3)模型引用生成,保存新的simulink模型引用。
2.模型引用轉換為受保護的模型
(1)右鍵模型引用-> Subsystem & Model Reference->Create Protected Model for Selected Model Block.
(2)出現對話框,如果需要將模型轉換為代碼,則勾選Include generated code(Create harness model for protecred model按需勾選)。
(3)點擊create,完成創建。
3.受保護模型的使用
(1)點擊受保護模型,出現模型說明文檔,點擊代碼生成(勾選include generated code),則直接生成代碼,無需填寫密碼。
1.如果在模型保護過程中出現“cannot be used with a variable-step solver”問題,請將原模型引用的解算器更改為離散定步長。
2.受保護模型中不能出現另一個受保護模型。
關於Protected Models for Model Reference
1.加密方法采用AES-265
2.要定位受保護的模型,需要查找
(1)MATLAB文件夾瀏覽器中帶有徽章圖標的文件
(2)在左下角帶有徽章圖標的Model模塊
(3)擴展名為.slxp的文件
(p.s.受保護的模型不會出現在Model Explorer的模型層次結構中)
3.引用受保護的模型
(1)檢查受保護模型是否支持所需的功能(受保護模型報告將顯示所支持的功能)
(2)檢查自己的simulink版本是否支持該受保護模型
目的 | 跨版本支持 |
只讀視圖 | 在R2018b或更高版本中保護的模型可以在其原始版本和更高版本中使用 |
Normal模式下的方針 | 在R2018b或更高版本中保護的模型可以在其原始版本和更高版本中使用 |
Accelerator模式下的仿真 | 不支持跨版本 |
SIL或PIL模式下的仿真 | 不支持跨版本 |
Rapid Accelerator模式下的仿真 | 不支持跨版本 |
代碼生成 | 不支持跨版本 |
(3)確認可以訪問在受保護模型中使用的許可證。如果可用,受保護模型報告會顯示所需的許可證。
(4)如果計划對受保護模型進行仿真,請使用曾用於創建受保護模型的相同平台。軟件將受保護模型存儲為已編譯的 MEX 二進制文件。
(5)如果接收了一個受保護的模型包,請按照隨附的說明解包文件。
(6)確保受保護模型位於 MATLAB 路徑上。
(7)如果接收了一個框架模型,請將框架模型中的 Model 模塊復制到您的模型中。否則,請在 Model 模塊中引用受保護模型。
(8)當設置 Model 模塊以引用受保護模型時,模塊的 Simulation mode 變為 Accelerator
。不能更改此模式或在外部模式下使用此 Model 模塊。
在對保護模型進行代碼生成時,需要對受保護模型的基礎模型進行環境設置,如果需要在autobox上運行,需要按照autobox的環境配置進行設置,
如果需要在其他的處理器上運行,則需要按照該處理器對模型環境的要求進行修改。
環境變量設置(autobox):
1.fundamental sample time,需要與調用模型的仿真周期設置一致。
2.Singal Logging:一般設置為最終的輸出值
3.Inline Prameter:針對2012版matlab,不進行選擇
4.其余的設置按照dspace的要求進行
==============================================================================================================
Error解釋:
1.Input port 1 of the specified subsystem block has constant sample time. Cannot convert subsystems with constant inputs to model reference.
該Error的解決方式是斷開所有的輸入,再次進行引用操作
2.The model 'xxxxx' cannot be protected because it or a model that it directly or indirectly references contains a non-inlined S-Function.
該Error出現在保護模型過程中,目前定位問題為模型中大量使用了屬性為Global的goto/from標簽