Use the assert
construct to implement run-time error and warning messages
for a custom block. In the component file, you specify the condition to be evaluated, as well
as the error message to be output if this condition is violated. When the custom block based
on this component file is used in a model, it will output this message if the condition is
violated during simulation. The optional Action
attribute of the
assert
construct specifies whether simulation stops when the predicate
condition is violated, continues with a warning, or ignores the violation.
The following component file implements a variable resistor,
where input physical signal R supplies the resistance value. The assert
construct
checks that this input signal is greater than or equal to zero:
component MyVariableResistor % Variable Resistor % Models a linear variable resistor. The relationship between voltage V % and current I is V=I*R where R is the numerical value presented at the % physical signal port R. If this signal becomes negative, simulation % errors out. % inputs R = { 0.0, 'Ohm' }; end nodes p = foundation.electrical.electrical; % +:left n = foundation.electrical.electrical; % -:right end variables i = { 0, 'A' }; v = { 0, 'V' }; end branches i : p.i -> n.i; end equations assert( R >= 0, 'Negative resistance is not modeled' ); v == p.v - n.v; v == i*R; end end
If a model contains this Variable Resistor block, and signal R becomes negative during simulation, then simulation stops and the Simulation Diagnostics window opens with a message similar to the following:
At time 3.200000, an assertion is triggered. Negative resistance is not modeled. The assertion comes from: Block path: dc_motor1/Variable Resistor Assert location: between line: 29, column: 14 and line: 29, column: 18 in file: C:/Work/libraries/+MySimscapeLibrary/+ElectricalElements/MyVariableResistor.ssc
The error message contains the following information:
Simulation time when the assertion got triggered
The message
string (in
this example, Negative resistance is not modeled
)
An active link to the block that triggered the assertion.
Click the Block path
link to highlight the block
in the model diagram.
An active link to the assert location in the component
source file. Click the Assert location
link to
open the Simscape™ source file of the component, with the cursor
at the start of violated predicate condition. For Simscape protected
files, the Assert location
information is omitted
from the error message.
See the assert
reference page for syntax
specifics and more examples.