Main Content

DC motor model with electrical and torque characteristics and fault modeling

**Library:**Simscape / Electrical / Electromechanical / Brushed Motors

The DC Motor block represents the electrical and torque characteristics of a DC motor using the following equivalent circuit model:

You specify the equivalent circuit parameters for this model when you set the
**Model parameterization** parameter to ```
By equivalent
circuit parameters
```

. The resistor *R* corresponds to
the resistance you specify in the **Armature resistance** parameter.
The inductor L corresponds to the inductance you specify in the **Armature
inductance** parameter.

You can specify how to generate the magnetic field of the DC motor by setting the
**Field type** parameter to the desired option. The permanent
magnets in the motor induce the following back emf
*v _{b}* in the armature:

$${v}_{b}={k}_{v}\omega $$

where *k _{v}* is the

$${T}_{E}={k}_{t}i$$

where *k _{t}* is the

$$\begin{array}{l}{T}_{E}\omega ={v}_{b}i\\ {k}_{t}i\omega ={k}_{v}\omega i\\ {k}_{v}={k}_{t}\end{array}$$

As a result, you specify either
*k _{v}* or

If the magnetic field is generated from the current flowing through the windings, the
**Back-emf constant** depends on the field current
*I _{f}*:

$${k}_{v}={L}_{af}{I}_{f}$$

where *L _{af}* is the

The torque-speed characteristic for the DC Motor block
is related to the parameters in the preceding figure. When you set the **Model
parameterization** parameter to ```
By stall torque & no-load
speed
```

or ```
By rated power, rated speed & no-load
speed
```

, the block solves for the equivalent circuit parameters as follows:

For the steady-state torque-speed relationship,

*L*has no effect.Sum the voltages around the loop and rearrange for

*i*:$$i=\frac{V-{v}_{b}}{R}=\frac{V-{k}_{v}\omega}{R}$$

Substitute this value of

*i*into the equation for torque:$${T}_{E}=\frac{{k}_{t}}{R}\left(V-{k}_{v}\omega \right)$$

When you set the

**Model parameterization**parameter to`By stall torque & no-load speed`

, the block uses the preceding equation to determine values for*R*and*k*(and equivalently_{t}*k*)._{v}When you set the

**Model parameterization**parameter to`By rated power, rated speed & no-load speed`

, the block uses the rated speed and power to calculate the rated torque. The block uses the rated torque and no-load speed values in the preceding equation to determine values for*R*and*k*._{t}

The block models motor inertia *J* and damping *λ*
for all values of the **Model parameterization** parameter. The
resulting torque across the block is:

$$T=\frac{{k}_{t}}{R}\left(V-{k}_{v}\omega \right)-J\dot{\omega}-\lambda \omega $$

It is not always possible to measure rotor damping, and rotor damping is not always provided on a manufacturer datasheet. An alternative is to use the no-load current to infer a value for rotor damping.

For no-load, the electrically-generated mechanical torque must equal the rotor damping torque:

$${k}_{t}{i}_{noload}=\lambda {\omega}_{noload}$$

where *i*_{noload} is the no-load current. If you
select `By no-load current`

for the **Rotor damping
parameterization** parameter, then this equation is used in addition to the
torque-speed equation to determine values for *λ* and the other
equation coefficients.

The value for rotor damping, whether specified directly or in terms of no-load
current, is taken into account when determining equivalent circuit parameters for
**Model parameterization** options ```
By stall torque and
no-load speed
```

and ```
By rated power, rated speed and no-load
speed
```

.

When a positive current flows from the electrical **+** to
**-** ports, a positive torque acts from the mechanical
**C** to **R** ports.

The DC Motor block allows you to model two types of faults:

Armature winding fault — The armature winding fails and goes open circuit.

Field winding fault — The field winding that creates the magnetic field fails and goes open circuit.

The block can trigger fault events:

At a specific time (temporal fault).

When a current limit is exceeded for longer than a specific time interval (behavioral fault).

You can enable or disable these trigger mechanisms separately.

You can choose whether to issue an assertion when a fault occurs, by using the
**Reporting when a fault occurs** parameter. The assertion can
take the form of a warning or an error. By default, the block does not issue an
assertion.

This figure shows a generic representation of a DC motor, with brushes, armatures, commutators, and their windings:

If you set the **Enable armature winding open-circuit fault**
parameter to `Yes`

, the armature fails at the time
specified by the **Time at which armature winding fault is
triggered** parameter for a temporal fault, or when the winding
currents exceeds the value of the **Maximum permissible armature winding
current** parameter for a behavioral fault. When the armature fails,
the voltage source connected to this block observes an open circuit for a fraction
of the total motor revolution, specified by the **Fraction of revolution
during which armature is open-circuit** parameter,
`rev_faulted`

. This figure illustrates the circuit state
behaviour for a certain `rev_faulted`

during the entire revolution period:

The block has an optional thermal port, hidden by default. To expose the thermal port,
right-click the block in your model, and then from the context menu select
**Simscape** > **Block choices** >
**Show thermal port**. This action displays the thermal port
**H** on the block icon, and exposes the **Temperature
Dependence** and **Thermal Port** parameters.

Use the thermal port to simulate the effects of copper resistance losses that convert
electrical power to heat. For more information on using thermal ports and on the
**Temperature Dependence** and **Thermal Port**
parameters, see Simulating Thermal Effects in Rotational and Translational Actuators.

[1] Bolton, W.
*Mechatronics: Electronic Control Systems in Mechanical and Electrical
Engineering*, 3rd edition Pearson Education, 2004..