Unit Specification in Simulink Models
Simulink® enables you to specify physical units as attributes on signals at the boundaries of model components. Such components can be:
Subsystems
Referenced Simulink models
Simulink-PS Converter (Simscape) and PS-Simulink Converter (Simscape) blocks that interface between Simulink and components developed in Simscape™ and its associated physical modeling products
Stateflow® charts, state transition tables, or truth tables
MATLAB Function blocks
Constant blocks
Data Store Memory, Data Store Read, and Data Store Write blocks
C MEX S-Function
By specifying, controlling, and visualizing signal units, you can ensure the consistency of calculations across the various components of your model. For example, this added degree of consistency checking is useful if you are integrating many separately developed components into a large, overall system model.
In Simulink models, you specify units from a unit database. The unit database comprises units from the following unit systems:
SI
— International System of UnitsSI (extended)
— International System of Units (extended)English
— English System of UnitsCGS
— Centimetre-gram-second System of Units
Based on the type of system you are modeling, you can use any combination of units from these supported unit systems. For more information about supported unit systems and the units they contain, see Allowed Units.
You can assign units to signals through these blocks:
You can assign units to signals through these objects:
When you add a supported block to your model, the Unit parameter
on the block is set to inherit
by default. This
setting means that the block inherits the unit from a connecting signal
that has an explicitly specified unit.
You can explicitly specify units for signals using the Unit parameter of a supported block. For this parameter, the dialog box provides matching suggestions to help you:
If you do not provide a correctly formed unit expression, you
get an error. Correctly formed unit expressions are a combination
of unit names or symbols with properly balanced parentheses and *
, /
,
and ^
characters. Special characters such as [
, ]
, {
, }
, <
, >
, \
, "
, &
,
and so forth are not supported.
By default, a block port has an empty (that
is, unspecified) unit and the Unit parameter
is set to inherit
. When you specify a unit for
one port, Simulink checks the unit setting of any port connected
to it. If a port has an empty unit, you can connect it to another
port that has any supported unit. If a port unit parameter is set
to inherit
, it inherits the unit from a connected
port that has a specified unit.
To display the units on the Simulink lines in the model, on the Debug tab, click Information Overlays > Units.
Guidelines for Unitless, Dimensionless, and No Unit Quantities
When dealing with unitless, dimensionless, or no unit quantities, consider these guidelines:
Pure numbers with no units
Consider using
1
, the SI standard dimensionless unit. Simulink checks the unit to make sure other dimensionless quantities are propagated in. You can add, multiply, and otherwise manipulate these types of numbers.Unspecified units
Consider using an empty unit, where the Unit parameter is blank. When this parameter is blank, Simulink accepts any unit that propagates to the port without returning a warning.
Integer counting number unit
Consider using
count
to denote an integer counting number unit. Use this unit for quantities that are difficult to describe, but that are considered unitless or dimensionless, such as thermally accessible states or PWM count. For more information, seecount
in Allowed Units.Dimensionless physical quantities
Dimensionless physical quantities represent a specific physical quantity. Consider using the physical quantities
velocity_factor
,refractive_index
,relative_permeability
,strain
,Reynolds_number
, andlogical
. Some of these physical quantities,strain
andReynolds_number
, have corresponding units. To specify units for the other physical quantities, use a format such as1@physical quantity
, for example,1@refractive_index
. Simulink performs a physical quantity check at propagation. For example, if a model tries to add dimensional physical quantities, Simulink returns a warning.Pure scaled numbers
Consider using
ppm
,ppb
,ppt
.
Specify Physical Quantities
When you model a physical system, it is possible to use the
same unit expression for two or more signals that represent different
physical quantities. For example, a unit expression of N*m
can
represent either torque or energy. To prevent mistaken connection
of two ports with the same unit but representing different physical
quantities, you can add a physical quantity to the unit expression.
For example, for the same unit of N*m
, you can
specify different physical quantities of N*m@torque
and N*m@energy
.
Similar to units, the dialog box provides suggestions as you type
the names of physical quantities.
Physical quantities help you to enforce an extra degree of unit consistency checking between connected ports. When you attempt to connect ports with different physical quantities, the model displays a warning.
Specify Units in Objects
By default, Simulink.ValueType
, Simulink.Signal
,
Simulink.BusElement
, and Simulink.Parameter
objects have
empty units. In the case of a:
Simulink.ValueType
object, the object does not attach a unit to the corresponding signals.Simulink.Signal
object, the empty unit means that the corresponding signal can inherit a unit from an upstream or downstream port.Simulink.BusElement
object, the empty unit means that the corresponding bus element also has an empty unit. You can connect the element to a port with any unit, but the element does not inherit a unit from the port.Simulink.Parameter
object, the object does not attach a unit to the corresponding parameter value.
If you specify a unit in a Simulink.ValueType
,
Simulink.Signal
, or Simulink.BusElement
object,
Simulink applies the attribute to the corresponding signal line when:
The
Simulink.ValueType
object specifies the properties for a signal in the model.The
Simulink.Signal
object resolves to a signal in the model.The
Simulink.BusElement
object is associated with aSimulink.Bus
object and you use the corresponding bus element with a Bus Creator, Bus Selector, or Bus Assignment block that applies theSimulink.Bus
object.
For the Simulink.Parameter
object, Simulink does not apply any attribute. For all objects, if the
Unit parameter has a value that is not formed correctly,
you see an error. If the unit is formed correctly but is undefined, you see a
warning when you compile the model. If the unit expression contains special
characters such as [
, ]
, {
,
}
, <
, >
,
\
, "
, &
, and so
forth, Simulink replaces them with underscores (_
).
Custom Unit Properties
Notes on the Unit
and DocUnits
properties
starting in R2016a:
The
DocUnits
property is nowUnit
forSimulink.Parameter
andSimulink.Signal
objects. If, in a previous release, you used theDocUnits
parameter of aSimulink.Parameter
orSimulink.Signal
object to contain text that does not now comply with units specifications, simulation returns a warning when the model simulates.To suppress these warnings, set the configuration parameter Units inconsistency messages to
none
. This setting suppresses all units inconsistency check warnings.If you have a class that derives from
Simulink.Parameter
,Simulink.Signal
, orSimulink.BusElement
with a previously definedUnit
property, Simulink returns an error like the following:Cannot define property 'Unit' in class 'classname' because the property has already been defined in the superclass 'superclass'.
If you use this property to represent the physical unit of the signal, delete the
Unit
property from the derived class in the R2016a or later release. Existing scripts continue to work, unless you are assigning incorrectly formed unit expressions to theUnit
field. In this case, replace the use ofUnit
withDocUnits
to continue to be able to assign the unit expression.Note
If you store existing data in a MAT- or
.sldd
file, in a release prior to R2016a, copy the contents of theUnit
property to theDocUnits
first. Then, save the file in the earlier release before loading the model in R2016a or later release.
Specify Units for Temperature Signals
When modeling absolute temperature quantities, use units such
as K
, degC
, degF
,
and degR
. When modeling temperature difference quantities,
use units such as deltaK
, deltadegC
, deltadegF
,
and deltadegR
. If you connect a signal that has
a temperature difference unit to a block that specifies an absolute temperature
unit, Simulink detects the mismatch.
Specify Units in MATLAB Function Blocks
You specify the units for the inputs and outputs of a MATLAB
Function block by specifying the units in the Unit (e.g., m,
m/s^2, N*m) parameter in the Property Inspector. Double-click the
MATLAB Function block to open the MATLAB Function Block Editor.
In the Modeling tab, in the Design section, click
Symbols Pane. Right-click the variable name and select
Inspect. By default, this property is
inherit
, which means that the unit equals the signal sent to
the port. If you select the Data must resolve to signal object
property for an output, the signal connected to the output port determines the port
unit and the other properties except for the Name and
Scope.
MATLAB Function blocks check if the Simulink signal unit matches the unit assigned to the corresponding input or output of the block. If the units do not match, Simulink displays a warning when you update the model. Otherwise, unit settings do not affect MATLAB Function block execution.
Specify Units in Constant Blocks
You can specify units for output data of Constant blocks by using
the Unit property in the Simulink.Parameter
object.
Specify Units for Logging and Loading Signal Data
You can include units in signal data that you log or load.
You specify units for logging and loading using
objects.
When you log using Simulink.SimulationData.Unit
Dataset
or Timeseries
format, Simulink stores
the unit information using Simulink.SimulationData.Unit
objects.
If you create MATLAB® timeseries data to load, you can specify Simulink.SimulationData.Unit
object
for the Units
property of the timeseries
object.
For details, see Load Signal Data That Uses Units.
Restricting Unit Systems
By default, you can specify units from any of the supported unit systems. However,
in large modeling projects, to enforce consistency, you might want
to restrict the unit systems that certain components of your model
can use. To specify available unit systems for a model, in the configuration
parameter Allowed unit systems, enter all
or
a comma-separated list containing one or more of SI
, SI
(extended)
, CGS
, and English
.
Do not use quotation marks. If your model contains referenced models,
you can use the Allowed unit systems to restrict
units in each of those referenced models. If your model contains subsystems,
you can use the Unit System Configuration block
to restrict units in the subsystems. You can also optionally use a Unit
System Configuration block in a model. In this case, the settings
in the Unit System Configuration block override whatever
you specify in Allowed unit systems.
To restrict unit systems in a model:
In the Unit parameter of the Inport, Outport, or Signal Specification block, click the link.
If a Unit System Configuration block exists in your model, this link opens the block dialog box. Otherwise, the link opens the Allowed unit systems configuration parameter.
Specify one or more the desired unit systems,
SI
,SI (extended)
,English
, orCGS
, in a comma-delimited list, orall
, without quotation marks.
In a parent-child relationship (for example, a top model with a referenced model or subsystem), you can specify different unit systems for each component. However, if a child propagates a unit into a parent that is not in the unit systems specified for the parent, you get a warning.
To check whether there are unit mismatches caused by restricted unit systems in your model hierarchy:
Press Ctrl+D and visually inspect the model for warning badges.
Use the Model Advisor check Identify disallowed unit systems.
See Also
Blocks
- Unit Conversion | Unit System Configuration | Inport | In Bus Element | Outport | Out Bus Element | Signal Specification | MATLAB Function