This example shows how to create and use a protected model in Normal and Accelerator mode simulations, as well as for code generation.
Before you can generate protected models, you must have Simulink® Coder™ installed. To generate the read-only view of protected models, you must have Simulink® Report Generator™ installed.
Open the example model, sldemo_mdlref_bus
.
Figure 1: The example model, sldemo_mdlref_bus
This model contains one Model block, CounterA
. To protect the model referenced by this block, select this block and click Protect on the Model Block tab. A dialog box opens where you can select options for creating a protected model.
Figure 2: Protected model dialog box
Under Allow user of protected model to select Open read-only view of model, Simulate, and Generate code. You have the option of entering passwords for the three aforementioned functionalities. The three passwords are used to protect the respective functionalities. Enter separate passwords for the three options and click Create
. A protected model file, sldemo_mdlref_counter_bus.slxp
, is generated in the current working folder. You can use this protected model in Normal and Accelerator mode simulations, as well as for code generation. You can also open a read-only view of the model. The original model file is not required.
To simulate a model that references a protected model, you might need to define variables in the base workspace or data dictionaries. For example, the protected model, sldemo_mdlref_counter_bus
, needs the variables that specify the buses at the root input and output ports of the model. When you ship a protected model, you must include definitions of the required variables or the model is unusable. The protect
command generates a protected model and determines the required variables. For example:
[~, neededVars] = Simulink.ModelReference.protect('sldemo_mdlref_counter_bus', 'Mode', 'CodeGeneration', 'OutputFormat', 'MinimalCode', 'ObfuscateCode', true, 'Harness', true, 'Report', true, 'Webview', true)
The second output of the protect
function, neededVars
, includes variables you must send to the recipient. The value of neededVars
is a cell array that contains the names of the variables required for the protected model. However, the cell array might also contain the names of variables that the model does not need.
Before you share a protected model, edit neededVars
to delete the names of any variables that the model does not need. Save the required variables into a data dictionary.
When the Model block references a protected model, a shield badge is displayed on the block.
Figure 3: Referencing a protected model
Right-click on the shield badge and select Authorize.... Enter the passwords you used while creating the protected model.
Figure 4: Password entry dialog
Now you can simulate the model in either Normal or Accelerator mode. You can also build the top model by selecting Code > C/C++ Code > Build Model.
Double-click the Model block to open the read-only view of the model. Alternatively, right-click on the shield badge and select Show Webview to open the read-only view of the model.
Figure 5: The protected model web view
Right-click on the shield badge and select Display Report to open the report
Figure 6: The protected model report