Unit Consistency Checking and Propagation
Simulink® performs unit consistency checking between components.
Ports that you connect together — sometimes via intermediate
blocks that propagate units — must have the same units. For
example, you cannot connect a port with unit ft/s
to
a port with unit m/s^2
.
By default, Simulink shows the mismatch warning when it detects a mismatch in units between two connected ports. You can press Ctrl+D to show mismatched units in your model.
To make this connection valid, you can:
Explicitly set both port units to the same unit.
Set the Unit parameter of one of the connecting ports to
inherit
.Insert a Unit Conversion block between the mismatched units if they are separated by a scaling factor or offset, or if they are inverse units. These units are convertible. For more information, see Converting Units.
Select the Allow automatic unit conversions configuration parameter. For more information, see Converting Units.
Note
Simulink supports variations on unit expressions. For example,
one port can have a unit of m/s^2
and a connected
port can have a unit of m/s/s
. In these cases, Simulink does
not display a warning for mismatched units.
When Simulink detects one of these conditions, it displays the inconsistency warning :
Disallowed unit system
Undefined unit
Simulink checks the consistency of unit settings and propagates units across component boundaries. In a model that contains a referenced model, Simulink compiles the referenced model independently of the top model. This independent compilation means that the referenced model cannot inherit units from the top model.
If a port in a referenced model has Unit set
to inherit
, it can inherit a unit from any upstream
or downstream block in the referenced model. If the port does not
inherit a unit from an upstream or downstream block, you can connect
it to a port in the top model with any unit.
Simulink passes units through the following blocks that do not change data, known as noncomputation blocks:
Bus Creator
Bus Selector
Bus to Vector
Data Type Conversion
Demux
From
Goto
Inport
Merge
Model
Mux
Outport
Rate Transition
Signal Conversion
Signal Specification
Subsystem
Variant Sink
Variant Source
Note
If you supply two or more signals with different units to a Mux block, Simulink applies empty units to the vector signal that the Mux block outputs. Vector signals must have a common unit.
Note
If you have a nonvirtual bus in your model (see Composite Interface Guidelines), Simulink sets the unit of the bus to empty. A nonvirtual bus cannot have a unit. However, if the bus element signals themselves have units, Simulink does not change these.
Simulink does not propagate units through blocks that produce new data as output. When signals with units pass through these blocks, the units of these signals become empty. Examples of blocks that do not preserve units because they produce new data as an output include:
Sum
Gain
Filter
Product
Unit Consistency Checking and Model Arguments
Simulink checks whether any units for a model argument definition and value are equal. At a component boundary, Simulink detects and reports a warning when these units are mismatched.
To detect and report warnings for mismatched units, you must set the simulation mode of the Model blocks to normal mode.
For more information, see Mismatched Units Detected Between Model Argument Definition and Value.
Unit Propagation Between Simulink and Simscape
When modeling physical systems, you might want to integrate components developed in Simulink with components developed in Simscape™ and its associated physical modeling products. Simscape components use physical signals instead of regular Simulink signals. Therefore, you need Simulink-PS Converter (Simscape) and PS-Simulink Converter (Simscape) converter blocks to connect signals between Simulink and Simscape components.
To specify units for the input and output signals of your Simscape component, you can explicitly specify the units on the converter blocks. When you specify units on a PS-Simulink Converter (Simscape) block that converts a signal from Simscape to Simulink, Simulink propagates the unit settings to the connected Simulink port. However, Simulink cannot propagate a signal unit from Simulink into your Simscape component. To do that, you must explicitly specify the unit on the Simulink-PS Converter (Simscape) block. For more information, see Physical Units (Simscape).
See Also
Blocks
- Unit Conversion | Unit System Configuration | Inport | In Bus Element | Outport | Out Bus Element | Signal Specification | MATLAB Function