Main Content

Model and Debug a DC Motor in Stateflow

This example shows the model of a permanent magnet DC motor. The mode logic and dynamics of the DC motor are both modeled using Stateflow®.

The DC motor state chart consists of two superstates: powerOn and powerOff. If the motor is powered on, it can be in one of two substates: up or down, signifying the direction of movement.

Note: This is a simplistic model of a DC motor. You can build more sophisticated DC motor models using Simscape™, which extends Simulink® with tools for modeling and simulating multidomain physical systems, such as those with mechanical, hydraulic, and electrical components.

The dynamics of the motor are defined directly in the state chart using graphical functions and change depending on the state of the motor. For example, when the motor is in the powerOff state, the voltage applied is equal to zero. When the motor is in the powerOn state, the voltage applied is either positive or negative, depending on the direction of the motor.

To review, the differential equations defining a permanent magnet DC motor are as follows:

$$ \frac{di}{dt} = \frac{v_{app}(t) - R \cdot i(t) - K_b \cdot \omega(t)}{L} $$

$$ \frac{d\omega}{dt} = \frac{K_m \cdot i(t) - K_f \cdot \omega(t)}{J} $$


$$i = \mbox{current}$$

$$R = \mbox{resistance}$$

$$L = \mbox{inductance}$$

$$K_b = \mbox{EMF constant}$$

$$\omega = \mbox{rotational speed of motor}$$

$$v_{app} = \mbox{applied voltage}$$

$$K_f = \mbox{damping constant}$$

$$K_m = \mbox{torque constant}$$

Enable Active State Output

To enable active state output monitoring, first select the powerOn state. Then, in the Simulation tab, click Log Child Activity. Additionally, select the omega_out signal in the Symbols pane. Open the Property Inspector. Under Logging, select Log signal data.

Run the simulation.

In the Review Results section of the Simulation tab, the Data Inspector button is highlighted, meaning that there is a logged signal available to view. Click the Data Inspector button, to view the simulation data.

In this plot, the orange data shows which child state of powerOn is active, and the purple data indicates the value of omega_out.

Debugging with Active State Output

You can use also active state output to help you debug your Stateflow charts. For this portion of the example, introduce an error in your Stateflow chart by removing the negative sign before Vin in the down state.

Run the simulation.

Again, the Data Inspector button shows that there is new logged data. Open the Data Inspector to look at the signal.

In this plot, you can see that the data for omega_out in Run 2 is significantly different from Run 1. With this information, you can recogognize that there is an error in your model directly related to the omega_out data.

Related Topics