ELEC-E8402 Control of Electric Drives and Power Converters Home Assignment 1
Control of an Induction Motor Drive
A report is to be written on this assignment in groups of two (or alone). Submit
your report as a PDF file to the MyCourses portal (mycourses.aalto.fi) no later
than on Wednesday, 29.3.2017, at 23:59. In your report, answer briefly the questions
given inside this kind of framed boxes. The report should be clearly and consistently
written. The requested figures describing the models and simulation results should be
included in the report. Submit also the two requested Simulink models to MyCourses.
These models will be used to check that you have built the models yourself. Guidance
is available in Seminaarisali, Open Innovation House:
Wednesday, 15.3.2017, at 10:15–12:00
Wednesday, 22.3.2017, at 10:15–12:00
The assignment will be graded on a scale of 0. . . 15 (one point per problem). You are
encouraged to discuss with other students but copying solutions from other groups is
not allowed! The reports and models will be checked for plagiarism.
1 Introduction
This assignment deals with control of an induction motor drive. First, scalar control
(or Volts-per-Hertz control) is studied in Section 2, where also the motor and inverter
models are introduced. Then, rotor-flux-oriented vector control is considered in Section
3. In order to build the link between the continuous-time design and the discrete-time
implementation, all the control algorithms are implemented in the discrete-time domain
based on the forward Euler approximation. After this assignment, you should be able to:
1. Explain the basic principles of a scalar-controlled induction motor drive.
2. Explain operation of a three-phase symmetrical suboscillation pulse-width modu-
lator (PWM).
3. Explain fundamental principles and key functionalities of a rotor-flux-oriented vec-
tor controller.
4. Implement simple discretized algorithms in the Simulink software using MATLAB
Function blocks.
1/11
ELEC-E8402 Control of Electric Drives and Power Converters Home Assignment 1
2 Scalar-Controlled Drive
2.1 Induction Motor Model
A 2.2-kW induction motor is considered, cf. Table 1. The inverse-Γ dynamic model shown
in Fig. 1 is used. Download scalar.slx, init scalar.m, and fig scalar.m from the
MyCourses portal. Open the Simulink model scalar.slx of a scalar-controlled drive,
shown also in Fig. 2. The Induction Motor subsystem shown in Fig. 3 is first considered.
The stator-flux linkage ψ ss and the rotor-flux linkage ψ sR are used as state variables in
the model according to Fig. 4(a). The space vectors are represented as complex-valued
signals in the Simulink model. Unlike the most Simulink blocks, the Integrator block does
not support complex signals, but this limitation can be easily circumvented as shown in
Fig. 4(b). Study all the blocks in the Induction Motor subsystem and try to find out the
equations used in the model. Notice that you cannot simulate the model yet, since some
parts are missing.
Table 1: Rating and parameters of the motor.
Rated values
Power PN 2.2 kW
Voltage UN 400 V iss Rs Lσ RR isR
Frequency fN 50 Hz
Current IN 5.0 A
dψ ss dψ sR
Speed nN 1436 r/min uss LM jωm ψ sR
dt dt
Parameters
Stator resistance Rs 3.7 Ω
Rotor resistance RR 2.1 Ω
Total leakage inductance Lσ 21 mH Figure 1: Inverse-Γ model in stator coordinates.
Magnetizing inductance LM 224 mH
Total moment of inertia J 0.016 kgm2
Figure 2: Simulink model of a scalar-controlled drive. The Unit Delay block models the one-sampling
period computational delay, which exists in real systems. The Zero-Order Hold block models the sampling.
The red color is associated with discrete-times signals and blocks (if the Sample Time Colors option is
enabled). However, before the first simulation, the color coding does not work properly yet.
2/11
ELEC-E8402 Control of Electric Drives and Power Converters Home Assignment 1
Figure 3: Induction Motor subsystem. The first input of the subsystem is the vector us,abc = [ua , ub , uc ]T
containing the phase voltages (with respect to an arbitrary potential, since the zero-sequence voltage
disappears in the space-vector transformation). The second input is the load torque TL . The first output
is the vector is,abc = [ia , ib , ic ]T containing the phase currents. The second output is the mechanical
angular speed ωM of the rotor.
(a) (b)
Figure 4: (a) Voltage Equations subsystem. (b) Integrator (Complex Signal) subsystem, formed using two
standard Integrator blocks.
1. Derive the stator current iss and the rotor current isR as functions of the stator
flux ψ ss and the rotor flux ψ sR . Implement these equations inside the Flux Equa-
tions subsystem. You can use Gain and Sum blocks. Furthermore, implement the
calculation of TM inside the Electromagnetic Torque subsystem.
2. Calculate the rated torque TN of the motor based on the data given in Table 1.
Set this numerical value for the parameter Final value in the Step block, which
determines the load torque TL . Determine also the number p of pole pairs and
set it in the mask of the Induction Motor subsystem. Furthermore, calculate the
peak value of the rated phase-to-neutral voltage. Give all these values in your
report.
3/11
ELEC-E8402 Control of Electric Drives and Power Converters Home Assignment 1
2.2 PWM and Inverter Model
Study all the blocks in the Inverter and Scalar Control subsystems and find out the theory
behind the model. Double-click the MATLAB Function blocks in order to see their discrete-
time algorithms. In the following, some additional explanation is given.
Motor
ia a
ib b da , db , dc
Udc n
ic c
1
N
0
uss,ref uaN t
PWM
Udc
Udc
0
(a) t
ubN
Udc
0
ucN t
Udc
0
t
Ts Ts
(b) (c)
Figure 5: (a) Three-phase inverter. (b) Inverter subsystem, which also includes the triangle comparison.
The duty ratios of each phase are packed to the vector: dabc = [da , db , dc ]T . (c) Example waveforms in
the symmetrical suboscillation method.
The induction motor is fed using a three-phase inverter, whose equivalent circuit is
shown in Fig. 5(a). In this assignment, the DC-bus voltage Udc is assumed to be constant
and power switches are assumed to be ideal. The Simulink implementation of the inverter
is shown in Fig. 5(b), where the triangle comparison is also included. The triangle wave
varying between 0. . . 1 has been implemented with the Repeating Sequence block. The
pulse-width modulator (PWM) calculates the duty ratios da , db , and dc for each phase
based on the reference voltage vector uss,ref . By comparing these duty ratios to the triangle
wave, the switching states of the power switches are obtained as illustrated in Fig. 5(c).
The calculation of the duty ratios based on the symmetrical suboscillation method
is implemented using the MATLAB Function block inside the PWM subsystem. This al-
gorithm is mathematically equivalent to the one considered in the compendium (even if
the implementation is slightly different). You can open it by double-clicking the MATLAB
Function block:
function [d abc,uss ref lim] = pwm(uss ref,Udc)
%#codegen
% Components of the voltage space vector
ualpha ref = real(uss ref);
ubeta ref = imag(uss ref);
% Phase−voltage references
4/11
ELEC-E8402 Control of Electric Drives and Power Converters Home Assignment 1
ua ref = ualpha ref;
ub ref = .5*(−ualpha ref + sqrt(3)*ubeta ref);
uc ref = .5*(−ualpha ref − sqrt(3)*ubeta ref);
% Vector of phase−voltage references
u abc ref = [ua ref; ub ref; uc ref];
% Symmetrization of the references by adding the zero−sequence voltage
u0 = .5*(max(u abc ref) + min(u abc ref));
u abc ref = u abc ref − u0;
% Clamping of the reference voltages such that no phase error is caused.
% If all phase voltage reference are realizable (below Udc/2), m = 1 holds.
m = max([2* u abc ref/Udc; 1]);
u abc ref = u abc ref/m;
% Duty cycles, which can be directly used for triangle comparison,
% if the triangle wave varies between 0...1
d abc = .5 + u abc ref/Udc;
% Realized voltage vector is calculated from the clamped duty ratios.
% If the PWM does not saturate, uss ref lim = uss ref holds. The realized
% voltage vector is needed, e.g., for the current−controller antiwindup.
uss ref lim = 2/3*(d abc(1) + d abc(2)*exp(1j*2*pi/3) ...
+ d abc(3)*exp(1j*4*pi/3))*Udc;
This algorithm (as well as other discrete-time algorithms) is calculated once per sam-
pling period. Generally, MATLAB Function blocks are very convenient, when programming
discrete-time algorithms for simulation models or rapid-prototyping systems. Program-
ming real-time algorithms with the C language is actually quite similar (but the complex
variables have to be implemented by using their real and imaginary components and there
are many other practical limitations).
2.3 Scalar Control
A simple scalar-controlled drive shown in Fig. 6(a) is considered. The stator-voltage
magnitude is determined based on the approximate steady-state voltage equation
us,ref = ωs,ref ψs,ref (1)
where ωs,ref is the reference of the stator angular frequency and ψs,ref is constant in the
base-speed range. The compensation for the Rs is voltage drop has been omitted in (1)
for simplicity. The reference voltage vector in stator coordinates is
uss,ref = us,ref ejϑs (2)
where the angle is Z
ϑs = ωs,ref dt (3)
In order to write the discrete-time counterpart of this algorithm, only (3) needs to be
discretized. Using the forward Euler approximation, the whole algorithm becomes
uss,ref (k) = ψs,ref ωs,ref (k)ejϑs (k) (4a)
ϑs (k + 1) = ϑs (k) + Ts ωs,ref (k) (4b)
5/11
ELEC-E8402 Control of Electric Drives and Power Converters Home Assignment 1
Udc
ψs,ref
ωs,ref Scalar uss,ref
control PWM
(a) (b)
Figure 6: (a) Scalar control. (b) Voltage Reference subsystem. The discrete state ϑs (k) is stored in the
Unit Delay block, which can be considered as a memory here.
where k is the discrete-time index and Ts is the sampling period.
3. Open the MATLAB Function inside the Voltage Reference subsystem, cf. Fig.
6(b). The calculation of ϑs (k + 1) is readily implemented:
function [uss ref,thetas new]=scalar(ws ref,thetas,psis ref,Ts)
%#codegen
% Voltage vector
% Note: 1j is the imaginary unit in the MATLAB software
% uss ref = ... % Complete this
% Update (integrate) the voltage angle
thetas new = thetas + Ts* ws ref;
Complete the missing part of the algorithm (4) and save the function. Open the
initialization file init scalar.m and run it. Simulate the model. After simu-
lation, run the fig scalar.m file, which plots three figures. The results in the
first figure should look similar to those shown in Fig. 7. If they look different,
you should debug your model.
4. The drive operates at the stator frequency ωs = 2π·40 rad/s in no-load condition.
The constant ψs,ref = 0.95 Vs is used. Using the analytical motor model in Fig.
1, calculate the peak value of the fundamental-wave stator current in no-load
steady-state condition. Compare this result to the simulated current in the same
condition. (Tip: Calculate first the stator impedance in this condition and then
divide the stator voltage by this impedance. It might be a good idea to write a
brief m-file script for this calculation.)
5. Decrease the switching frequency to fsw = 2 kHz, i.e., change the value of the
sampling period Ts in the workspace and simulate the model again. Plot all
three figures and attach them to your report. Comment on differences between
this case and the case in Problem 3. Submit this version of your simulation
model to MyCourses.
6/11
ELEC-E8402 Control of Electric Drives and Power Converters Home Assignment 1
300
Angular speed (rad/s)
200
100
Electrical rotor speed
Stator frequency
0
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
20
Torque (Nm)
10
0
Electromagnetic torque
Load torque
-10
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
Time (s)
Figure 7: Example simulation results of the scalar-controlled motor, when the switching frequency is
fsw = 1/(2Ts ) = 4 kHz.
3 Rotor-Flux-Oriented Vector Control
3.1 Structure
Rotor-flux-oriented vector control shown in Fig. 8 is considered. The estimate ϑ̂s of the
rotor-flux angle is obtained using the current model in estimated rotor-flux coordinates.
Download vector.slx, init vector.m, and fig vector.m from the MyCourses portal.
Open the model vector.slx, copy its contents to the previous scalar control model, and
save the model with a new name. Connect the blocks according to Fig. 9. The Vector
Control subsystem is shown in Fig. 10. Notice that you cannot simulate the model yet,
since some parts are missing.
TM,ref ψR,ref i Udc
s,ref
us,ref ua,ref , ub,ref , uc,ref
ωM,ref
Speed Current
controller reference Current dq
controller PWM
abc
ϑ̂s
ω̂s
is dq ia , ib , ic
abc
Flux
estimator
ωm ωM
p M
Figure 8: Simplified block diagram of rotor-flux-oriented vector control.
7/11
ELEC-E8402 Control of Electric Drives and Power Converters Home Assignment 1
6. Open the MATLAB Function inside the abc→dq subsystem. Complete the trans-
formation from the phase currents ia , ib , ic to the space vector is in estimated
rotor flux coordinates:
function is = abc dq(is abc,thetas)
%#codegen
% Phase currents
%ia = is abc(1); ib = is abc(2); ic = is abc(3);
% Space−vector transformation and coordinate transformation
% is = ... % Complete this
Save the function. Present the algorithm also in your report.
3.2 Current Controller
A PI-type current controller with active damping and antiwindup is used,
Z
usi = ki is,ref − is + (us − us,ref )/kp dt (5a)
us,ref = kp is,ref − is + usi + (jω̂s Lσ − r) is (5b)
us = PWM(us,ref ) (5c)
where usi is the integral state of the controller, us,ref is the unlimited (ideal) voltage ref-
erence, us is the realizable voltage calculated from the duty ratios, PWM(·) represents
the symmetrical suboscillation algorithm (including coordinate transformations) and the
gains are r = αc Lσ − Rs , kp = αc Lσ , and ki = αc2 Lσ . Go through the discrete-time imple-
mentation in the MATLAB Function inside the Current Controller and PWM subsystem.
Figure 9: Connection of the Vector Control block with the Inverter and Induction Motor blocks. The
Repeating Sequence source includes a reference for a ramped speed reversal, which will be needed in one
later problem.
8/11
ELEC-E8402 Control of Electric Drives and Power Converters Home Assignment 1
Figure 10: Vector Control subsystem.
3.3 Current Reference
7. Open the MATLAB Function inside the Current Reference subsystem. Complete
the calculation of the current reference is,ref as a function of the torque reference
TM,ref and the rotor-flux reference ψR,ref (assumed here to be constant):
function is ref = curr ref(TM ref,psiR ref,LM,p)
%#codegen
% Current references in estimated rotor−flux coordinates
% id ref = ... % Complete this
% iq ref = ... % Complete this
is ref = id ref + 1j* iq ref;
Save the function. Present the algorithm also in your report.
3.4 Flux Estimator
The rotor flux of the induction motor can be estimated in many ways. Here, a simple
flux estimator (known as the current model) in synchronous coordinates is used. The
rotor-flux magnitude is estimated as
!
dψ̂R ψ̂R
= RR id − (6)
dt LM
The angular frequency of the rotor flux is estimated as
RR iq
ω̂s = ωm + (7)
ψ̂R
9/11
ELEC-E8402 Control of Electric Drives and Power Converters Home Assignment 1
The estimate ϑ̂s for the flux angle is obtained by integrating ω̂s . A discrete-time version
of this estimator is to be implemented.
8. Open the MATLAB Function inside the Flux Estimator subsystem. Complete the
calculation of ω̂s and ψ̂R :
function [ws,thetas new,psiR new] ...
= estimator(is,wm,thetas,psiR,RR,LM,Ts)
%#codegen
% Current components
id = real(is);
iq = imag(is);
% Angular frequency of the rotor flux
if(psiR > 0) % Avoid division by zero
%ws = ...; % Complete this
else
ws = wm;
end
% Update the states
%psiR new = ...; % Complete this
thetas new = thetas + Ts*ws; % Rotor flux angle
3.5 Simulations and Analysis
When commenting the simulation results, try to link them to the theory. Brief, accu-
rate, and relevant comments are preferred. Try to avoid lengthy or unclear explana-
tions.
9. Open the initialization file init vector.m and run it. Simulate the model. After
simulation, run the fig vector.m file, which plots three figures. The simulation
results of the first figure should look similar to those shown in Fig. 11. If they
look different, you should debug your model. Attach the three figures in your
report. Submit this version of your simulation model to MyCourses.
10. The drive operates at the mechanical angular speed ωM = 2π · 20 rad/s in
the rated-load condition. The rotor-flux magnitude is ψR = 0.9 Vs. Using the
analytical equations, calculate id , iq , and |is |. Calculate also ud , uq , and |us |.
Compare the analytical results to the simulated currents and voltages (i.e., the
realizable voltage us ref lim) in the same condition.
11. Change the actual rotor resistance in the motor model to 120% of the original
value, but do not change the values in the control system. Simulate the model.
Test also the rotor resistance 150% of the original value. Show the results and
comment on them in your report. After this problem, change the resistance
value back to the original one.
10/11
ELEC-E8402 Control of Electric Drives and Power Converters Home Assignment 1
12. Change the speed reference to increase stepwise already in the beginning of
the simulation (i.e., the motor is not magnetized before starting) and simulate
the model. Show the results and comment on them in your report. After this
problem, restore the speed reference back to the original state.
13. Increase the current-controller bandwidth to αc = 2π · 600 rad/s (see the file
init vector.m) and simulate the model. Show the results and comment on
them in your report. What happens if you also double the sampling frequency?
After this problem, change these values back to the original ones.
14. Change the speed reference step to ωM,ref = 2π · 40 rad/s. Show the results and
comment on them in your report.
15. Set the load-torque step to zero. Switch the speed reference to the Repeating
Sequence block, simulation time to 2 s, and simulate the model. Show the results
and comment on them in your report.
Electr. angular speed (rad/s)
300
200
100
0 Rotor speed
Reference
-100
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
30
Torque (Nm)
20
10
0 Electromagnetic torque
Reference
-10
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
Time (s)
Figure 11: Example simulation results of the vector-controlled motor.
Give us Feedback
In order to improve this assignment, please give us feedback. In order to estimate the
student workload, we would also be happy to know how many hours did you use to do
this assignment. All other comments are also welcome.
11/11