Control of an Induction Motor Drive 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 modulator (PWM). 3. Explain fundamental principles and key functionalities of a rotor-flux-oriented vector controller. 4. Implement simple discretized algorithms in the Simulink software using MATLAB Function blocks. 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, 4.5.216, 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 requested Simulink models to MyCourses. These models will be used to check that you have built the models yourself. Guidance is available in room I256 on ˆ Tuesday, 19.4.216, at 8:15 1: ˆ Tuesday, 26.4.216, at 8:15 1: The assignment will be graded on a scale of... 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/11
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 ψ s and the rotor-flux linkage s ψs are used as state variables in R 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 P N 2.2 kw Voltage U N 4 V Frequency f N 5 Hz Current I N 5. A Speed n N 1436 r/min Parameters Stator resistance R s 3.7 Ω Rotor resistance R R 2.1 Ω Total leakage inductance L σ 21 mh Magnetizing inductance L M 224 mh Total moment of inertia J.16 kgm 2 u s s i s s R s dψ s s dt L σ L M R R dψ s R dt i s R jω m ψ s R Figure 1: Inverse-Γ model in stator coordinates. 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 properly work yet. 2/11
Figure 3: Induction Motor subsystem. The first input of the subsystem is the vector u s,abc = [u a, u b, u c ] 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 T L. The first output is the vector i s,abc = [i a, i b, i c ] 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 i s s and the rotor current i s R as functions of the stator flux ψ s and the rotor flux s ψs. Implement these equations inside the Flux Equations subsystem. You can use Gain and Sum blocks. Furthermore, implement the R calculation of T M inside the Electromagnetic Torque subsystem. 2. Calculate the rated torque T N 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 T L. 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
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 discretetime algorithms. In the following, some additional explanation is given. u s s,ref PWM N i a i b i c a b c Motor n d a, d b, d c u an 1 t (a) u bn t u cn t (b) T s T s (c) t 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: d abc = [d a, d b, d c ] 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 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... 1 has been implemented with the Repeating Sequence block. The pulse-width modulator (PWM) calculates the duty ratios d a, d b, and d c for each phase based on the reference voltage vector u s s,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 algorithm 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
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 u =.5*(max(u abc ref) + min(u abc ref)); u abc ref = u abc ref u; % 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...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 sampling period. Generally, MATLAB Function blocks are very convenient, when programming discrete-time algorithms for simulation models or rapid-prototyping systems. Programming 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 u s,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 R s i s voltage drop has been omitted in (1) for simplicity. The reference voltage vector in stator coordinates is u s s,ref = u s,ref e jϑs (2) where the angle is ϑ 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 u s s,ref(k) = ψ s,ref ω s,ref (k)e jϑs(k) ϑ s (k + 1) = ϑ s (k) + T s ω s,ref (k) (4a) (4b) 5/11
ψ s,ref ω s,ref Scalar control u s s,ref PWM M (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 T s 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 simulation, 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π 4 rad/s in no-load condition. The constant ψ s,ref =.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 f sw = 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
Torque (Nm) Angular speed (rad/s) ELEC-E842 Control of Electric Drives and Power Converters Home Assignment 1 3 2 1 Electrical rotor speed Stator frequency.1.2.3.4.5.6.7.8.9 1 2 1 Electromagnetic torque Load torque -1.1.2.3.4.5.6.7.8.9 1 Time (s) Figure 7: Example simulation results of the scalar-controlled motor, when the switching frequency is f sw = 1/(2T s ) = 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. 1. Notice that you cannot simulate the model yet, since some parts are missing. ω M,ref Speed controller T M,ref ψ R,ref Current reference i s,ref Current controller u s,ref u a,ref, u b,ref, u c,ref dq abc PWM ˆϑ s i s ˆω s dq i a, i b, i c Flux estimator ω m abc p ω M M Figure 8: Simplified block diagram of rotor-flux-oriented vector control. 7/11
6. Open the MATLAB Function inside the abc dq subsystem. Complete the transformation from the phase currents i a, i b, i c to the space vector i s 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, di dt = i s,ref i s + 1 k p (u s u s,ref ) u s,ref = k p ( is,ref i s ) + ki I + (jˆω s L σ R a ) i s u s = PWM(u s,ref ) (5a) (5b) (5c) where PWM( ) represents the symmetrical suboscillation PWM algorithm (including coordinate transformations) and the gains are R a = α c L σ R s, k p = α c L σ, and k i = α 2 cl σ. Go through the discrete-time implementation 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
Figure 1: Vector Control subsystem. 3.3 Current Reference 7. Open the MATLAB Function inside the Current Reference subsystem. Complete the calculation of the current reference i s,ref as a function of the torque reference T M,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 dt = R R ( i d ˆψ R L M The angular frequency of the rotor flux is estimated as ) (6) ˆω s = ω m + R Ri q ˆψ R (7) 9/11
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 > ) % Avoid division by zero %ws =...; % Complete this else ws = wm; end % Update the states %psir new =...; thetas new = thetas + Ts*ws; % Complete this % Rotor flux angle 3.5 Simulations and Analysis When commenting the simulation results, try to link them to the theory. Brief, accurate, and relevant comments are preferred. Try to avoid lengthy or unclear explanations. 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. 1. The drive operates at the mechanical angular speed ω M = 2π 2 rad/s in the rated-load condition. The rotor-flux magnitude is ψ R =.9 Vs. Using the analytical equations, calculate i d, i q, and i s. Calculate also u d, u q, and u s. 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 12% of the original value, but do not change the values in the control system. Simulate the model. Test also the rotor resistance 15% 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. 1/11
Torque (Nm) Electr. angular speed (rad/s) ELEC-E842 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π 6 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π 4 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. 3 2 1 Rotor speed Reference -1.1.2.3.4.5.6.7.8.9 1 3 2 1 Electromagnetic torque Reference -1.1.2.3.4.5.6.7.8.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