Main Content

BLDC Current Controller

Discrete-time Brushless DC Motor current PI controller

  • BLDC Current Controller block

Simscape / Electrical / Control / BLDC Control


The BLDC Current Controller block uses this algorithm to control current in a DC brushless motor.


The BLDC Current Controller produces the duty cycle for a BLDC block by implementing proportional-integral (PI) current control using this equation.



  • D is the duty cycle.

  • Kp is the proportional gain.

  • Ki is the integral gain.

  • Ts is the time period.

  • Is_ref is the reference current.

  • Is is the measured current.

  • Gzc is the zero cancellation polynomial.

The closed-loop transfer function for the PI control algorithm yields a zero that can be cancelled by using zero-cancellation in the feedforward path. The zero-cancellation transfer function in discrete-time is:


The block obtains control signals for the three phases by multiplying the duty cycle by the commutation signals. The resulting three control signals are normalized over the interval [-1, 1].



expand all

Reference current for control.

Data Types: single | double

Actual current.

Data Types: single | double

External reset signal (rising edge) for the integrator.

Data Types: single | double

Hall sensor data.

Data Types: single | double

Direction of motor rotation.

Data Types: single | double


expand all

Reference voltage for the a-, b-, and c-phases.

Data Types: single | double


expand all

Proportional gain, Kp, of the controller.

Integral gain, Ki, of the controller.

Anti-windup gain, Kaw, of the controller.

Time, in s, between consecutive block executions. During execution, the block produces outputs and, if appropriate, updates its internal state. For more information, see What Is Sample Time? and Specify Sample Time.

If this block is inside a triggered subsystem, inherit the sample time by setting this parameter to -1. If this block is in a continuous variable-step model, specify the sample time explicitly using a positive scalar.


If you set Sample time (-1 for inherited) to -1 and select the Enable zero cancellation option, the Discretization sample time parameter becomes visible.

Time, in s, between consecutive discretizations. Discretization is required for zero cancellation.


This parameter is only visible when both these conditions are met:

  • Sample time is set to -1.

  • Enable zero cancellation is selected.

Option to use zero cancellation on the feedforward path.


If you select the Enable zero cancellation option and set Sample time (-1 for inherited) to -1, the Discretization sample time parameter becomes visible.


[1] Stirban, A., I. Boldea, and G. D. Andreescu. "Motion-Sensorless Control of BLDC-PM Motor With Offline FEM-Information-Assisted Position and Speed Observer." IEEE Transactions on Industry Applications. 48, no. 6 (2012): 1950-1958.

Extended Capabilities

C/C++ Code Generation
Generate C and C++ code using Simulink® Coder™.

Version History

Introduced in R2018a