Output block variables as signals during simulation
Simscape / Utilities
The Probe block lets you select variables from another block in the model and output them as Simulink® signals. The following rules apply:
The selected block must be at the same level of the model hierarchy as the Probe block.
After selecting the block, you can select only the variables exposed on its Variables tab (that is, the same variables that can be used for block-level variable initialization).
In case of conditional visibility (if a variable is exposed only in a subset of block parameterizations), this variable is always available for probing, regardless of whether it is currently exposed on the Variables tab.
Each of the selected variables is output as a separate signal.
The output signal unit matches the nominal unit of the variable. For more information, see Specify Nominal Value-Unit Pairs for a Model and Units in Simulink.
The Probe block outputs Simulink signals. Therefore, you can connect it directly to Simulink blocks, like scopes or buses.
You can attach (bind) a Probe block to only one block at a time. However, you can bind multiple Probe blocks to the same block in the model at the same time.
To bind variables to a Probe block:
Add the Probe block to a model at the desired level.
Double-click the Probe block to start the binding process.
Select a Simscape™ block at the same level of the model hierarchy.
From a context menu containing all variables available for the block initialization, select the variables to output. For example, if you selected a Rotational Electromechanical Converter block, the available variables include current, voltage, torque, and angular velocity.
To finish the binding process, click the X in the upper-right corner of the model canvas.
For each selected variable, the Probe block acquires an additional output port, with the port name matching the variable ID. (In this example, the port names are i and w.) Connect these ports to scopes or other blocks from the Simulink Sinks library to view the signal values during simulation.
To bind a Probe block to a different block in the model, or to change the selected variables, double-click the Probe block again and repeat the binding process. When binding to a different block, if the new block has variables with the same IDs as the ones previously bound, these variables are automatically selected again.
If you copy a Probe block together with the block that it is bound to, the connection is preserved and the same variables are automatically selected in the new pair.
Instead of the interactive workflow on the model canvas, you can bind a Probe block and select variables by using these commands:
simscape.probe.setBoundBlock(
— Binds
probeBlock
,
boundBlock
)probeBlock
to boundBlock
.
probeBlock
must be a valid full block path or a handle to a
Probe block. boundBlock
must
be a valid full block path or a handle to another block at the same level of the model
hierarchy as probeBlock
. The command does not check whether
boundBlock
is a Simscape block or whether it has variables to probe.
simscape.probe.setBoundBlock(
returns the Probe block to the unbound
state. Does not affect the selected variables.probeBlock
,
[])
simscape.probe.setVariables(
— Selects variables for the
probeBlock
,
variables
)probeBlock
to output. probeBlock
must be a valid full block path or a handle to a Probe
block. variables
must be a character vector, cell array of
character vectors, or string array that specifies the variables. The character vectors
or strings must be unique variable identifiers, lexicographically sorted. The command
does not check whether the currently selected boundBlock
contains these variables.
Instead of lexicographically sorting the variables, you can use this syntax:
I = simscape.probe.setVariables(probeBlock, variables, 'Sort', true)
The command then sorts the variables before applying them to
probeBlock
. Variable identifiers must still be unique.
I
returns the order in which the sorted
variables
appear as ports on the
Probe block.
The programmatic equivalent of the interactive binding and variable selection shown in the example in Working with the Block on the Model Canvas is:
simscape.probe.setBoundBlock('ssc_dcmotor/DC Motor/Probe','ssc_dcmotor/DC Motor/Rotational Electromechanical Converter'); simscape.probe.setVariables('ssc_dcmotor/DC Motor/Probe',["i", "w"]);
As a result, the Probe block also has two output ports, i and w, bound to the Current : i and Angular velocity : w variables of the Rotational Electromechanical Converter block, respectively.
If you supply unsorted variables, the command returns the sorted order:
I = simscape.probe.setVariables('ssc_dcmotor/DC Motor/Probe', ["w", "i"], 'Sort', true)
I = 2 1
In this example, the second variable, i
, appears as the first port on
the Probe block, followed by the first variable,
w
.
You can use the
simscape.probe.getBoundBlock(
and probeBlock
)simscape.probe.getVariables(
commands, where probeBlock
)probeBlock
is a valid full block path or a handle
to a Probe block, to return its bound block and variables,
respectively.