Method for providing adaptive control of variable speed AC motor drives
This application is a division of application Ser. No. 241,315, filed Mar. 6, 1981 and now U.S. Pat. No. 4,387,421. 
    
    
     This application relates generally to alternating current machine drive systems and more specifically to microprocessor based pulse width modulation drive systems. 
     A common technique for controlling the conduction of inverter solid state switching devices is that of pulse-width modulation whereby each of the solid state switching devices is alternately rendered conductive at a frequency more than twice the desired inverter output voltage frequency, producing an inverter output voltage waveform having a series of positive and negative voltage pulses. The output voltage pulse-width and hence, the inverter output fundamental voltage amplitude is controlled by adjusting the conduction duration of each inverter solid state switching device. The inverter output fundamental voltage frequency is determined by the solid state switching device conduction frequency. 
     Progress in power electronics and microprocessors have made it possible to apply inverters and AC motors to variable speed drives. Thus, the advantages of AC motors can be enjoyed in variable speed drives, giving more reliable motor performance, less weight, and less maintenance problems compared to conventional DC motor drives. 
     It is an object of the present invention to provide a microprocessor based PWM machine control combining open loop and closed loop control. 
     It is an object of the present invention to minimize RMS ripple current supplied to the machine by optimizing the pulse-width of pulses supplied to an inverter, to the machine parameters. 
     SUMMARY OF THE INVENTION 
     In one aspect, the present invention relates to a microprocessor based pulse-width modulated variable speed drive control for providing optimal switching angles based on minimizing RMS current ripple. The angles can be precalculated and are a function of the commanded frequency and commanded voltage as well as the motor parameters. 
     In another aspect, the present invention provides a closed loop double deadband control where more than one of the phase voltages is effected when the outer deadband is crossed in order to provide maximum control of the variable under consideration. 
     In still another aspect of the present invention, the optimal switching angles and the closed loop deadband controls interact to insure close following of a desired function of a specified variable to be controlled. 
    
    
     DESCRIPTION OF THE DRAWINGS 
     While the specification concludes with claims particularly pointing out and distinctly claiming the present invention, the objects and advantages of the invention can be more readily ascertained from the following description of a preferred embodiment when used in conjunction with the accompanying drawing in which: 
     FIG. 1 is an inverter suitable for use with the present invention. 
     FIG. 2 is a functional block diagram representation of an optimal and adaptive control in accordance with the present invention. 
     FIGS. 3a, b, and c are summaries of tables of the optimal switching angles. 
     FIGS. 4a and b is a schematic diagram representations of the motor models used in the present inventions. 
     FIG. 5 is a block diagram illustrating the priority of the deadband control over the optimum switching angles. 
     FIGS. 6a and b are waveform diagrams illustrating the priority of the deadband control over the optimum switching angles. 
     FIG. 7 is a hardware block diagram of the present invention. 
     FIG. 8 is a flow chart in accordance with the present invention. 
    
    
     DESCRIPTION OF THE PREFERRED EMBODIMENT 
     Referring to FIG. 1, an inverter 10 suitable for use with the present invention is shown. The inverter 10 supplies variable frequency power to an AC machine 12 from a direct current source 14 which can be a rectifier. In the present preferred embodiment, the AC machine is a three phase induction machine and inverter 10 therefore comprises three pairs of switching devices, shown as transistors 16a and 16b, 16c and 16d, and 16e and 16f respectively, with the transistors of each pair coupled in series fashion, and each of the transistor pairs coupled across direct current source 14. The junctions between transistors 16a, 16b, 16c and 16d, and 16e and 16f are respectively coupled to one of three phases of the AC machine 12. Typically, each of transistors 16a-f are high current NPN transistors. Coupled in parallel opposition with the collector emitter portion of each of transistors 16a-f is one of diodes 18a-f, respectively. Each of the diodes 18a-f provides a conductive path across an associated one of transistors 16a-f for reactive current when the associated transistors turns off. 
     An inductor 20 is in series with the DC source 14. A filter capacitor 22 is coupled in parallel with transistor pairs 16a-f and together with the inductor 20 filters the voltage supplied by the direct current source. Connected to the bases of each of the transistors 16a-f is a base drive circuit 23 which receives the switching signals for the inverter. 
     Referring now to FIG. 2 a functional block diagram of the present invention is shown. An operator voltage command V and an operator electrical frequency command F are connected to a look up table 24 and a motor model 26. Look up table 24 contains the optimal switching angles for minimizing harmonic motor losses. The switching angles determine the width of the pulses supplied to the inverter. The angles are determined by minimizing the following expression: 
     
         P=Σi.sub.ν.sup.2 R.sub.o                          (1) 
    
     
         ν=5, 7, 11, 13, 17, 19, . . . 
    
     where 
     P is the ohmic copper loss in the motor due to harmonics, 
     i.sub.ν  are the current harmonics (rms values). 
     R o  is ohmic motor resistance 
     ν is the number of the harmonic 
     ν=1 for the current fundamental. ν=3, 6, 9, 12 . . . do not have to be considered due to the three phase connection cancelling the triplen harmonics. Even ν do not have to be considered because of the symmetry of the voltage. A factor of 1/2 would be needed in the summation of equation 1 if amplitudes i.sub.ν rather than rms values were used. 
     The relationship between voltage and current is as follows: ##EQU1## where V.sub.ν is the voltage harmonic 
     R o  is the complete motor resistance shown in FIG. 4b. 
     L is the motor inductance shown in FIG. 4b. 
     ω o  is the inverter output frequency for the voltage fundamental (equal to the synchronous motor frequency F) 
     If three switching angles α 1 , α 2 , and α 3  per quarter period are chosen, the harmonics (including the fundamental V 1 ) are given by 
     
         V.sub.1 =(4Ud/π)(1-2 cos α.sub.1 +2 cos α.sub.2 -2 cos α.sub.3)                                            (3) 
    
     
         V.sub.n =(4Ud/π)(1-2 cos nα.sub.1 +2 cos nα.sub.2 -2 cos nα.sub.3)                                           (4) 
    
     where Ud is the DC voltage available from DC source 14 V.sub.ν =V.sub.ν √2. 
     The appropriate voltage harmonics from equation (4) are substituted into equation (1). A computer search routine can be used to minimize P of equation (1) by generating α 1 , α 2  and α 3 . 
     Three switching angles per quarter period provide one angle for controlling the voltage fundamental and two angles for the minimization of equation (1). Three switching angles have been selected in the preferred embodiment as a compromise between switching losses in the inverter and harmonic losses in the motor. More switching angles give the possibility of reducing the motor current harmonic loss, but produce more switching losses. At lower frequencies more switching angles would be desirable. 
     The parameters for looking up switching angles in the table are V rel  defined by the ratio of V 1  /V max , where V 1  is the voltage fundamental at the commanded frequency and V max  is the the voltage fundamental from 100 to 500 Hz, and K 1  =R/(R+ω o  L). In the present embodiment, the commanded frequency can vary from 0.2 Hz to 500 Hz. Above 100 Hz the inverter is supplied with squares waves or, in other words, only one switching angle per quarter period. A summary of the switching angles α 1 , α 2  and α 3  are shown in FIGS. 3a, b, and c for 0.1 steps of V rel  and significant (i.e. not equal steps, but steps where noticeable differences of the α 1  can be seen) steps of K 1 . 
     The optimal angles α 1 , α 2 , and α 3  are converted to optimal switching times in block 28 for the entire period. This is accomplished by first determining the switching angles for the entire period. In the first quarter α 1 , α 2 , and α 3  are the switching angles. In the second quarter, π-α 3 , π-α 2  and π-α 1 , are the switching angles. For π to 2π the angles are the same as from 0 to π but the resulting waveform has to be inverted. The switching angles are converted to switching times once the commanded frequency and motor slip are known. 
     The motor model 26, shown in more detail in FIGS. 4a and b, also receives operator voltage and frequency command V and F. The values L and R=R o  (1+C 1  Δθ)/S in the motor model are obtained from the more detailed motor model in FIG. 4a where V 10  is the phase voltage, R 1  is the stator resistance, L 1 σ is the stator leakage inductance, L h  is the magnetizing inductance, L&#39; 2 σ is the rotor leakage inductance referred to the stator, R FE  is the eddy current resistance (representing the losses), R&#39;/S is the rotor resistance referred to the stator and divided by the slip. 
     FIG. 4b shows an equivalent circuit of FIG. 4a, where R is the complete motor resistance, R o  is the motor resistance at base temperature θ o  (e.g. 20° C.), C 1  is the temperature constant, θ o  is the base temperature (e.g. 20° C.), Δθ is the temperature deviation from θ o , and S is the slip. 
     The voltage fundamental is a sinusoid having the commanded amplitude and frequency which is applied to the motor model to generate a predicted current fundamental i*. The current fundamental is used as a reference or set value in a deadband or bang-bang control in block 30. The predicted current fundamental i* is not a control input and is not known beforehand. It has to be calculated from the motor model. 
     Deadband width is a function of commanded frequency such that the i* reference sine wave is followed more closely the lower the frequency becomes. The first deadband is at i*+δ and i*-δ where δ is a function of frequency. Measured current i taken from each phase of the motor 12 is compared to the deadbands. If the measured current exceeds the upper or lower deadband then only the inverter phase associated with that inverter current is affected. If, for example, the current in the A phase exceeds i*+δ, then the lower transistor in the transistor pair in FIG. 1 corresponding to that motor phase is turned on after the upper transistor has been turned off. 
     A second deadband can be added located at i*+Δ and i*-Δ, to detect motor current that might continue to increase past the first deadband, due to adverse circumstances such as load changes. When the outer deadband is crossed by one of the measured motor currents, inverter switches in all three phases will be affected, so that maximum control can be exerted over the current. Thus, for example, if a single phase current exceeds the outer deadband, i*+Δ, then the lower transistor switch associated with that phase will be turned on after the upper transistor in that phase is turned off and, in addition, the upper transistor in the other two phases will be turned on after the lower transistor has been turned off. 
     In block 32, the switching times determined from the lookup table is compared to the switching times determined by the deadband control. When there is a conflict, priority is given to the deadband control. The determination of priority is explained in more detail herein below in connection with the flow chart of FIG. 5. The switch signals from block 32 are used to set the base drives in block 34 and thereby control the inverter 10. 
     Referring now to FIG. 5, when the program is first initialized at 36, the various inputs such as machine speed, currents, and motor temperature are detected from sensors. The keyboard is used to enter motor parameters. Necessary values based on sensed entered parameters are calculated. The program initialization is explained in greater detail in connection with FIG. 8 which contains a more detailed flow chart. In block 40 a counter CTU which serves as a time base for a phase voltage of the motor is compared to counters CTA1, CTA2, and CTA3 which are set at values representing switching times corresponding respectively to the switching angles α 1 , α 2  and α 3 . Switching times for the other two phases are obtained by adjusting the time base and again comparing it to the switching angles. The comparison of the counter CTU with counters CTA1, CTA2 and CTA3 can be made for example 1024 times/period or on another time dependent basis as shown in FIG. 7. Next in block 42 a check is made to see if the inner or outer deadband has been crossed. This check can occur, for example, 32 times/period. If an outer deadband is crossed then the switching signals for each phase of the inverter are determined to have the maximum effect on controlling (reducing or increasing) the current that crossed the outer deadband. In block 46, if only the inner deadband has been crossed, then switching signals affecting the inverter switches of the phase that crossed the inner beadband will be affected. 
     In block 48, the inverter switch changes resulting from the deadband control are maintained until the next deadband check occurs. Thus, for example, if an inner deadband has been exceeded resulting in a switching signal to the appropriate inverter switch, a predetermined switching angle occurring thereafter but before T/32 has passed, will be ignored. This is illustrated in the waveform of FIG. 6a. At ωt 1  the deadbands were checked and the measured current was seen to exceed the upper inner deadband. This resulted in the switching of the inverter switch and the corresponding change in the waveform in FIG. 6b. The optimum switching angle π-α 2  does not affect the waveform in FIG. 6b because it comes less than T/32 after the deadband was found to be exceeded. 
     In block 50, the phases not affected by the deadband control are determined and in block 40 these phases are checked for optimum switching angles until interrupted at T or T/32. 
     FIG. 7 is a hardware diagram for the present invention having a keyboard 56, RAM 58 associated with the master CPU, master CPU 60, RAM 61 associated with the slave CPU, slave CPU 62, timer 64, EPROM 66, A/D converter 68 and multiplexer 70, all interconnected by a bus consisting of data, control and address lines. 
     The keyboard/display 56 is used to enter the following data into a RAM 58: 
     
         ______________________________________                                    
peak value of stator supply                                               
                           V.sub.o                                        
                                0 to 99.9, steps                          
voltage at 0 Hz                 of .1 V                                   
maximum amplitude stator   V.sub.m                                        
                                0 to 999.9, steps                         
supply voltage at 100 Hz        .1 V                                      
constants for inner        C.sub.o                                        
                                0 to 99.99, steps                         
deadband                        of .01                                    
                           C.sub.1                                        
                                0 to 99.99, steps                         
                                of .01                                    
δ = C.sub.o + C.sub.1 F + C.sub.2 F.sup.2                           
                           C.sub.2                                        
                                0 to 99.99, steps                         
                                of .01                                    
constant for outer                                                        
deadband                                                                  
Δ = C.sub.3 δ  C.sub.3                                        
                                0 to 99.99, steps                         
                                of .1                                     
resistance of simple motor R.sub.o                                        
                                0 to 99Ω, steps of                  
model at 20° C.          .1Ω                                 
constant for resistance    CR   0 to .99[1/°C.], steps             
increase                                                                  
with temperature Δθ of .01/°C.                         
reactance of simple motor  L    0 to 9999 mH steps of                     
model                           1 mH                                      
number of pole pairs of the                                               
                           PP   1 to 16, steps of 1                       
motor being controlled                                                    
temperature variation as        -99 to +99, steps of                      
compared to 20° C.  Δθ                                 
                                .01                                       
______________________________________                                    
 
    
     The master CPU handles all calculations except for the comparison of the optimum switching times with the CTU counter. This last determination is handled by the slave CPU. In the present embodiment the master and slave CPU are Intel 8085&#39;s. A timer 64 provides the clock pulses to the master CPU so that interrupts can occur at T and T/32. The timer provides clock pulses to the slave CPU so that the CTU timer can be updated every T/1024. The 12K EPROM in block 68 provides 4 look up tables including the optimum switching angles. 
     Analog data is entered through the A/D conversion board 68. The date monitored includes the 3 motor phase currents, the temperature of the motor, motor speed, frequency command F and voltage command V. The master CPU 60 outputs deadband switching signals and the slave CPU 62 outputs switching signals based on the optimum switching angles. Multiplexer 70 gives priority to the switching signals from the master CPU. This task could also be accomplished by software. The output of the multiplexer 70 contains switching signals for each transistor switch and is connected to the base drive circuit of the inverter. 
     Referring now to the detailed flow chart of in FIG. 8, initialization begins at block 76. In block 78, the parameters described with reference to the hardware diagram are read into the RAM. In block 80 all the PWM controls are set equal to 0 and in block 82 the program is halted. An interrupt 84 occurs every period T. During interupt 84 the frequency command F, the stator voltage fundamental V, the motor speed n, and the motor temperature is read from the A/D converters in block 86. In block 88 the motor slip s is calculated from the commanded frequency F, number of poles PP, and motor speed n, ##EQU2## where n×PP=F 1 . In addition, the following parameters are calculated: actual motor (rotor) frequency F 1 , frequency in radians per second ω, K 1 , relative voltage v rel , complete motor resistance R, and inner and outer deadband width. The timers for the interrupts are loaded with T, T/32 and the CTU is loaded with T/1024, with the period T determined from the new F as given e.g. by a motor speed controller. F is the frequency of the PWM inverter output voltage as supplied to the stator of the motor. 
     The value of K 1  and the ratio of V/V rel  are used to look up α 1 , α 2  and α 3  in the look up table 1 in the EPROM 66 of FIG. 7. The values obtained from the table are CTA1, CTA2, and CTA3 which are counts from 0 to 255 corresponding to angles of 0 to π/2. CTA1, CTA2, and CTA3 are written into the slave CPU RAM 61 when the slave CPU is in hold. Interrupt 84 is reset next in block 98. The steps which are triggered by interrupt 100 are next begun. First, flags used in the deadband control are reset in block 102. Flags are one bit messages used to determine whether a particular event has occurred. Resetting a flag sets it to zero. In block 104, the angle φ is determined from table 2 located in the EPROM. φ is the phase difference between the fundamental voltage and the predicted current. The phase difference arises because of the reactive components in the motor model. Table 2 contains the ##EQU3## The angles in the table are represented by counts from 0 to 255 corresponding to 0 to π/2. The value of the time base at this instant is next read from the CTU timer. The CTU counts of 0 to 1024 correspond to 0 to 2π. 
     In block 108, the variable 1/SQP is determined from table 3 of the EPROM. The table contains ##EQU4## which is needed later to calculate predicted current. The analog to digital converters are started in block 110 so that the digital quantities will be available when needed several steps below. In block 112 the phase angle difference used to determine the value of sine (ωt-φ) in the time frame is set up by the time base timer CTU. In block 114 the magnitude of the predicted current in phase A is determined by dividing the magnitude of the voltage by complete resistance R times 1/SQP. The value of i* A  is then known because the magnitude of the sinusoid multiplier as well as the sinusoid instantaneous value is known. 
     The value of the actual motor current is read from the analog to digital converters, which have had time to settle, in block 116. Also, in block 116 the actual current of phase A is checked to see if the inner and outer deadbands, which are a function of i A  * and frequency, have been crossed. There are 4 deadband flags for each phase, 12 in all. One flag each in each phase corresponding to the upper and lower inner deadbands and upper and lower outer deadbands. When a deadband has been crossed, the corresponding flag is set by setting the flag equal to one. 
     In block 118, an additional flag FA is set if any of the 4 deadband flags associated with phase A were set. In block 120, blocks 114, 116 and 118 are repeated for phase B and in block 122 blocks 112, 114, 115 and 118 are repeated for phase C. In block 124, the outputs to be sent to the base driver of FIG. 1 are determined dependent on the 12 db flags. The outputs to the base driver consist of either a one or a minus one for each phase, which corresponds to the switching of the upper or lower inverter switch on after turning the lower or upper switch off, respectively. 
     In block 126, the flags FA, FB, and FC are written in the RAM of the slave CPU. Interrupt 100 is reset in block 128. 
     All the previous steps described in reference to FIG. 8 were performed by the master CPU. The steps that follow are performed by the slave CPU. 
     In block 130, flags FA, FB and FC are read from the RAM of the slave CPU and in block 132 the values of CTA1, CTA2, and CTA3 are also read from the RAM. The present count of the CTU is read in block 134 which is an indication of where in the period we are at this moment. Decision block 136 determines whether or not flag FA has been set. If the flag has been set, then, because the deadband controls have priority, no check is made in the A phase to see if any predetermined angles have been reached. If, however, there has been no crossing of the deadbands by the phase A currents in the last check, (flag FA has not been set), then the time base timer CTU is compared to the switching angles. This is accomplished for CTU counts equivalent to 0 to π/2 by direct comparison to the switching angles. For CTU counts equivalent to π/2 to, the comparisons are made by shifting the CTU count to 0-π/2 and comparing the count to π/2-α 3 , π /2-α 2 , π/2-α 1 . Higher counts of the CTU equivalent to π-3π/2 and 3π/2-2π are handled as 0-π/2 and π/2-π, respectively except that the resulting ones or minus ones to be sent to the base driver are inverted. When a switching angle has been reached, the appropriate switching signal (one or minus one) is sent to the phase A input for the base driver. 
     Similarly, flag FG is checked in block 144 for phase B and flag FC in block 146 for phase C. 
     Upon completion of the determination of the switching signals from the precalculated angles, if any, the program begins at block 130 again. This loop continues until interupt 84 or 100 is received. 
     Many of the functions described do not have to be carried out by software in a microcomputer but can be accomplished by analog means. The deadband control, for example, could be carried out entirely by analog methods. The calculation or storing of the switching angles however, is best done by digital means. 
     While only certain preferred features of the invention have been shown by way of illustration, many modifications and changes will occur to those skilled in the art. It is, therefore, to be understood that the appended claims are intended to cover all such modifications and changes as fall within the true spirit of the invention.