Main Content

The concepts in this topic provide a consistent and common language for using Simulink^{®} software tools.

A *system* is a group of interdependent physical and functional
parts with measurable characteristics that change over time.

For example, a vehicle is a *system* with multiple parts.
Measurable characteristics include the linear speed of the vehicle and the rotational
speed of the wheels.

A *system component* is part of a *system* that interacts with the other parts of the
*system*. The interactions between components define the
structure and behavior of the *system*.

For example, a cruise control module is a *system component* in a
vehicle *system*. A microcontroller and the hardware associated with
it define the structure while a software algorithm to control speed defines the
behavior.

A *model* is a mathematical description of a
*system* derived either from physical laws or experimental data.
The description typically uses a set of variables with a set of differential and
difference equations that define the relationships between the variables.

In the following example for a vehicle, `u(t)`

is the force (N)
moving a vehicle forward, `v(t)`

is the velocity (m/s),
`b`

is a drag coefficient (Nׂׂ·s/m), and `m`

is
the mass of the vehicle (kg).

The vehicle is a continuous system. For continuous systems, differential equations
describe the rate of change for variables with the equations defined for all values of
time. The velocity of the vehicle `v(t)`

and its acceleration
`v'(t)`

are defined with the following first order differential
equation.

`mv'(t) + bv(t) = u(t)`

You can create a Simulink model for this equation by adding blocks, specifying block
behavior, and using signal lines to connect the blocks to each other. The following
Simulink *block diagram* implements the differential
equation.

A *model component* is part of a *model* that
interacts with the other parts through an interface of inputs and outputs. Simulink implements *model components* using
Subsystem and Model blocks. A Model block references
another Simulink model saved in a separate file.

In the following example, the control model was saved in the Simulink model file
`control_model.slx`

, and then referenced from a
Model block in a second Simulink model. A Subsystem
block was added for modeling the vehicle mechanics.

Typically, controllers are built with discrete systems using a computer to implement the control algorithm. For discrete systems, difference equations describe the rate of change for variables defined only at specific times. For example, the control signal for a simple discrete PI (proportional–integral) controller can be defined with the following difference equation.

```
PI[n] = e[n]Kp +
(e[n]+integral[n-1])Ki
```

Where `e[n]`

is the error between a signal whose value is controlled
(velocity) and the specified value (set velocity), `Kp`

is the
proportion constant, `Ki`

is the integration constant, and
`n`

is the time step.

The following Simulink *block diagram* implements the difference
equation.

See also: Model a Continuous System, Component-Based Modeling Guidelines, Create a Custom Library, Model Reference Basics.

Some systems of equations contain additional constraints that involve the independent
variable and the state vector in addition to differential equations. Such systems are
called *differential algebraic equations (DAEs)*,

The term *algebraic* refers to equations that do not involve any
derivatives.

In Simulink models, algebraic loops are algebraic constraints. Models with algebraic loops define a system of differential algebraic equations.

For example,

*x*' = *x*

0 = -*x* + *u* -
2*x*

is a system of differential algebraic equations implemented in the following Simulink model