Create Standalone Executables with Variants Using Simulink Compiler
This example shows you how to create a standalone executable with a Variant Subsystem using the Simulink® Compiler™ workflow. You can use the same workflow for the Variant Source and Variant Sink blocks as well. Set the Variant activation time of the Variant block to startup
. With 'startup' variant activation time, you can change the active variant via an input to the executable.
Simulink Compiler enables you to share Simulink simulations as standalone executables. You can build the executables by packaging the compiled Simulink model and the MATLAB® code used to set up, run, and analyze a simulation.
In this example you will:
1. Create and Deploy a Script with Simulink Compiler.
2. Write MATLAB app which can tune the variant control value externally.
Explore the Model
Open the model slexVariantSubsystems
.
Specify the variant conditions for the two choices Linear Controller
and Nonlinear Controller
as VSS_MODE == 1
and VSS_MODE == 2
, respectively.
Set the Variant activation time to startup
in the Block Parameters dialog box.
open_system('slexVariantSubsystems');
Create and Deploy a Script with Simulink Compiler
1. Write the script to deploy - Create a function called deployedScript
. This code creates a Simulink.SimulationInput
object for the model. variantControl
is the value that we pass through the setVariable
method for the tunable parameter V
.
To configure the Simulink.SimulationInput
object for deployment, use the function simulink.compiler.configureForDeployment
.This sets the simulation mode to Rapid Accelerator.
function deployedScript(variantControl) in = Simulink.SimulationInput('slexVariantSubsystems'); in = in.setVariable('VSS_MODE',variantControl); in = simulink.compiler.configureForDeployment(in); out = sim(in); plot(out.yout); end
2. Compile Script for Deployment - Before compiling the script that you want to deploy, ensure that the files for the model and script, in this case slexVariantSubsystems
and the deployedScript.m
, are included on the MATLAB search path.
To compile the script, use the mcc
command with the script name. For more information, see mcc
(MATLAB Compiler). This generates the stand alone application, deployedScript.exe
, which you can execute outside of MATLAB or Simulink.
mcc -m deployedScript.m
3. Run the Deployed Script - To run the deployed executable, you need an appropriate runtime environment. To install the MATLAB Runtime, see https://www.mathworks.com/products/compiler/matlab-runtime.html. You can run the deployed application only on the platform that the deployed application was developed on. Run the deployed application, deployedScript.exe
, from the Windows® command prompt.
To see the output for when the active variant choice is V
= 1,
./run_deployedScript.exe 1
To see the output for when the active variant choice is V
= 2,
./run_deployedScript.exe 2
Create the App in App Designer
You can write MATLAB app which can tune the variant control value externally. To learn more about how to create an app using the App Designer, see App Designer and Create and Run a Simple App Using App Designer.
1. Launch App Designer from the MATLAB command prompt.
appdesigner
2. Drag and drop a Edit Field and a push Button as shown below.
3. Write a callback function for the Simulate button.
Callback function: SimulateButton, VariantControlVEditField function SimpleButtonPushed(app, event) in = Simulink.SimulationInput('slexVariantSubsystems'); in = in.setVariable('V',app.VariantControlVSS_MODEEditField.Value); in = simulink.compiler.configureForDeployment(in); out = sim(in); ax = uiaxes; plot(ax, out.yout); end
4. Launch the app to tune the value of the variant control. Simulate with different values to see the result.