Abstract:
A machine, computer program product and method for implementing an improved inverter circuit that converts, with high efficiency, direct-current electrical power (DC) to alternating-current electrical power (AC) with low signal distortion is described herein. The machine to convert a DC input into an AC output comprises a first inverter comprising a plurality of first transistors, at least some of the first transistors receiving the DC signal, the first inverter generating a first inversion signal, the first inversion signal having an error component; a second inverter comprising a plurality of second transistors, the plurality of the second transistors connected to at least one of the first transistors, the second inverter generating a second inversion signal; a combining circuit connected to the first inverter and second inverter, combining circuit producing the AC output; and a computer defining a waveform synthesizer, the waveform synthesizer having an A/D converter for receiving a sample signal from the combining circuit and converting the sample signal into a plurality of digital data points; a non-transient computer memory having instructions stored thereon and a computer processor for executing the instructions, the instructions performing a process of computing an error between the sample signal and an ideal sine waveform and a process of correcting the error.

Description:
[0001]    This application claims priority to and incorporates herein by reference in its entirety U.S. provisional patent application 61/178,981, entitled “Novel Inverter Topology For Improved Efficiency and Reduced Harmonic Distortion, filed on May 17, 2009. 
     
    
     BACKGROUND OF THE INVENTION 
       [0002]    1. Field of the Invention 
         [0003]    This application relates generally to inverters and more particularly to a machine, computer program product and method for implementing an improved inverter circuit that converts, with high efficiency, direct-current electrical power (DC) to alternating-current electrical power (AC) with low signal distortion. 
         [0004]    2. Description of the Prior Art 
         [0005]    Inverters are critical components for converting direct current (DC) electrical power generated by, e.g., solar power, windmills, power plants, batteries, etc, into alternating current (AC) electrical power that is used to power electronics, motors, for power distribution, etc. Accordingly, inverters are critical components for load balancing electrical power grids, high voltage power transmission, inter-tie of unsynchronized power grids, uninterruptible power supplies, driving motors, electrical cars, and for portable AC power sources. 
         [0006]    One simple and common inverter topology is a pair of switches and a transformer. By connecting the two ends of the transformer&#39;s primary winding alternately to a supply of DC current, where the center tap of the winding returns current to the DC power supply, current is made to flow back and forth through the winding, inducing an alternating magnetic field in the transformer core and thus an alternating AC output voltage at the terminals of the transformer&#39;s secondary. An arrangement of four switches can convert DC to AC without a transformer. The switches in either of these simple implementations may be mechanical, such as an electromechanical oscillator called a “vibrator” or may be solid-state semiconductor switches, such as any of various types of transistors or thyristors, driven by electronic timing circuits. Other simple inverters, especially for very high power applications, are implemented by arranging a DC motor to turn an AC generator. Most modern inverters are based on solid-state semiconductor switches, and generate output waveforms that include a square wave, a modified square wave, and a sine wave. However, inverters based on switches do not naturally produce current having a sine waveform, but rather current with step changes in amplitude as the switches open and close. By varying the parameters of such square pulses, current having an approximation of a sine waveform can be produced. The departure of such an approximation from the ideal may be examined in the time domain or frequency domain. In the frequency domain, the difference between the approximation and the ideal is the total harmonic distortion (THD), i.e., energy at a frequency that is a harmonic of the desired fundamental frequency. 
         [0007]    The easiest waveform to produce with simple switches is a square wave. The efficiency of an inverter that produces a square-wave can approach 99%, but the waveform is only a gross approximation of a sine wave and the THD is nearly 50%. The modified square wave adds dead time between output pulses to suppress a third harmonic and can cut the THD to around 30%, but adds significant hardware to the inverter. Inverters that produce sine waves deliver efficiency of 85-95% range. The reduction in comparison to the efficiency of square wave designs is largely due to an increase in switching frequency. Square wave inverters switch at the fundamental frequency of the output waveform—typically 50 or 60 Hertz. Sine wave designs using carrier modulation switch at much higher frequencies, typically 5,000 to 20,000 Hertz. Because the energy lost by a high power solid-state switch is generally more or less a constant amount per change in switch state, increasing the frequency increases losses proportionately. However, pure sine inverters deliver total harmonic distortion of 3% or less, and this low distortion is vital for grid-tie and grid balancing applications. 
         [0008]    To overcome the problems with prior art inverters, i.e., to optimize inverter efficiency and simultaneously minimize THD, a multi-level inverter has been implemented. Ideally, the multi-level inverter delivers efficiencies approaching those of a square wave with a THD approaching a pure sine wave inverter. In practice, the multi-level inverter is a complicated device that requires a battery or capacitor stack to supply a plurality of DC voltages. If the battery stack is not employed, the multi-level inverter uses an intermediate DC-DC voltage converter stage employing one or more transformers. In many designs, this first inverter stage operates at high frequencies, reducing efficiency and the multi-level battery stack complicates charging and balancing. Moreover, though multi-level inverters decrease THD as more levels are added, the addition of levels reduces efficiency through switching and capacitive losses. Accordingly, more than two or three levels are not commonly implemented. Overall, because of the cost associated with producing and implementing multi-level inverters, this inverter is not ideal. 
       SUMMARY OF THE INVENTION 
       [0009]    A machine, computer program product, and method for implementing an improved inverter circuit that converts, with high efficiency, direct-current electrical power (DC) to alternating-current electrical power (AC) with low signal distortion is described herein. The machine to convert a DC input into an AC output comprises a first inverter comprising a plurality of first transistors, at least some of the first transistors receiving the DC signal, the first inverter generating a first inversion signal, the first inversion signal having an error component; a second inverter comprising a plurality of second transistors, the second inverter generating a second inversion signal; a combining circuit connected to the first inverter and second inverter, combining circuit producing the AC output; and a computer defining a wavefo synthesizer, the waveform synthesizer having an A/D converter for receiving a sample signal from the combining circuit and converting the sample signal into a plurality of digital data points; a computer memory having instructions stored thereon and a computer processor for executing the instructions, the instructions performing a process of computing an error between the sample signal and an ideal sine waveform and a process of correcting the error. The instructions may implement the steps of writing the digital data points into a data array in memory, the data array having a same size as a number of digital data points, calculating an error between each data point in the data array and corresponding a ideal data point in an ideal sine waveform, determining a corrective variable for each data point to compensate for the error, and storing the corrective variable in an output array, constructing a corrective waveform from the output array, and controlling the second inverter to generate a second inverter signal implementing the corrective waveform to compensate for the error component of the first inverter signal. 
         [0010]    In another embodiment, a computer program product operable on a computer and stored in computer memory comprises instructions that perform a process of computing an error between a sample signal and an ideal sine waveform and a process of correcting the error to convert a DC input into a substantially sinusoidal AC output, the computer program product having instructions comprising of: writing the digital data points into a data array in memory, the data array having a same size as a number of digital data points, calculating an error between each data point in the data array and corresponding a ideal data point in an ideal sine waveform, determining a corrective variable for each data point to compensate for the error, and storing the corrective variable in an output array, constructing a corrective waveform from the output array, and controlling a second inverter to generate a second inverter signal implementing the corrective waveform to compensate for the error component of the first inverter signal. 
         [0011]    In another embodiment, a computer-implemented method comprises steps that perform a process of computing an error between a sample signal and an ideal sine waveform and a process of correcting the error to convert a DC input into a substantially sinusoidal AC output, the computer-implemented method comprising the steps of: writing the digital data points into a data array in memory, the data array having a same size as a number of digital data points, calculating an error between each data point in the data array and corresponding a ideal data point in an ideal sine waveform, determining a corrective variable for each data point to compensate for the error, and storing the corrective variable in an output array, constructing a corrective waveform from the output array, and controlling a second inverter to generate a second inverter signal implementing the corrective waveform to compensate for the error component of the first inverter signal. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0012]    So that the manner in which the features and advantages of the invention, as well as others, which will become apparent, may be understood in more detail, a more particular description of the invention briefly summarized above may be had by reference to the embodiments thereof, which are illustrated in the appended drawings, which form a part of this specification. It is to be noted, however, that the drawings illustrate only various embodiments of the invention and are therefore not to be considered limiting of the invention&#39;s scope as it may include other effective embodiments as well. 
           [0013]      FIG. 1A  is a block diagram of a basic operation of an inverter circuit according to an embodiment of the invention; 
           [0014]      FIG. 1B  is a circuit diagram implementing an inverter, the inverter having generic switches according to an embodiment of the invention; 
           [0015]      FIG. 1C  is a circuit diagram implementing an inverter, the inverter having solid state switches according to an embodiment of the invention 
           [0016]      FIG. 2A  is a graph of a voltage over time, with time expressed in radians, output by a first inverter according to an embodiment of the present invention; 
           [0017]      FIG. 2B  is a graph of voltage over time, with time expressed in radians, output by a second inverter according to an embodiment of the invention; 
           [0018]      FIG. 2C  is a graph of an output of a transformer connected to the first and second inverters of  FIGS. 2A and 2B ; 
           [0019]      FIG. 3  is a circuit diagram having a waveform simulator output a correcting waveform to control primary and secondary inverter switches according to an embodiment of the invention; 
           [0020]      FIG. 4  is a block diagram of a waveform simulator according to an embodiment of the invention; 
           [0021]      FIG. 5  is a schematic flow diagram of a computer program product for correcting an output of a first inverter according to an embodiment of the invention; and 
           [0022]      FIG. 6  is a flow diagram of the instructions for a computer program product for correcting an output of a first inverter according to an embodiment of the invention. 
       
    
    
     DETAILED DESCRIPTION 
       [0023]    The present invention will now be described more fully hereinafter with reference to the accompanying drawings in which embodiments of the invention are shown. This invention may, however, be embodied in many different forms and should not be construed as limited to the illustrated embodiments set forth herein; rather, these embodiments are provided so that this disclosure will be thorough and complete, and will fully convey the scope of the invention to those skilled in the art. Like numbers refer to like elements throughout. 
         [0024]    The invention of the claims and drawings, and all equivalent circuits, adds a plurality of waveforms together to generate a close approximation of a sine wave, with the efficiency close to that of a square wave inverter and a THD that is close to a pure sine wave inverter. To do this, a basic circuit includes a primary inverter  10 , a secondary inverter  20 , a transformer  30 , and optionally a filter  40 . Primary inverter  10  may generate a square wave or a modified square wave depending upon the application, and provides the bulk of the converted power and this signal is passed on to the combining transformer  30 . Like the prior art devices, by actuating, e.g., switches, in the primary inverter to produce a square wave, an EMF is produced with a high THD. Secondary inverter  20  generates an additional signal, which is added to the primary signal to correct for the high THD. To do this, the secondary inverter  20  may comprise switches, connected to the primary winding of a transformer  30 . The secondary of the transformer is disposed in an electrical series circuit with the output of the primary inverter such that the signals from the primary and secondary inverter are combined as an algebraic sum. Filter  40 , which is optional, may be provided to attenuate undesired residual energy at the carrier frequency used by the secondary inverter. In this way, the invention implements a high efficiency, low THD inverter circuit. As one skilled in the art will appreciate, though the block diagram is shown with a primary and secondary inverter, transformer, and filter, not all of these components may be necessary to achieve the functions of the invention. A different type of filter or an alternate combining means other than a transformer may be employed. As such, and as discussed below, there may be some embodiments of the invention that do not include filter  40 , or embodiments of the invention that do not have a dedicated secondary inverter. Accordingly, though the embodiments discussed herein are given as examples, the configuration of such embodiments should in no way limit the disclosure of the invention or any equivalents thereof. 
         [0025]    In  FIG. 1B , a circuit diagram of an embodiment of the present invention is shown. The circuit diagram consists of a DC power source  102 , a plurality of switches  104 ,  106 ,  108 ,  110 ,  112 ,  113  and  115 , transformers  114  and  116 , rectifier  118  and capacitor  120 , all of which produces an AC output  122 . 
         [0026]    Switches  104 ,  106 ,  108 ,  110  and  112  form the primary inverter, while switches  113  and  115  form the secondary inverter. The primary inverter operates at line frequency, e.g., 60 HZ, and outputs a modified square wave if switch  108  is closed during a zero output period of the waveform. As one skilled in the art will appreciate, as a result of switching, square wave inverter has a duty cycle of approximately 50%. As one skilled in the art will also appreciate, the primary inverter could also be implemented as a multi-level inverter. The secondary inverter is a push pull inverter, and may operate at a higher frequency, with pulse width modulation. For example, the secondary inverter may operate at a frequency of 5 KHz to 20 KHz. Moreover, though shown tapping the primary winding of transformer  114  in a push-pull configuration, the secondary inverter may be implemented as a full-bridge driver together with an untapped transformer primary. Such a configuration would add two more switches to reduce the winding size of the transformer. As one skilled in the art will recognize, though switches,  104 ,  106 ,  108 ,  110 ,  112 ,  113  and  115  are shown as generic devices in  FIG. 1B , solid state switches may be used, e.g., MOSFET or IGBT transistors such as those available from International Rectifier, Infineon, Ixys, Microsemi, Powerex, and other manufacturers, as shown in  FIG. 1C . Depending on the nature of the switches employed, specifically if they include an anti-parallel diode as is typical with IGBT modules, switch  108  may be omitted and its function replaced by simultaneously closing switches  104  and  110  while switchers  106  and  112  remain closed. As can be seen, while the transistors may be pnp-type or npn-type, in the preferred embodiment, the transistors are npn-type so that all carriers in the transistors are electrons. Moreover, while none of the gates in the exemplary IGBT transistors are connected to a drive circuit, one skilled in the art will recognize that the gates are controlled by some drive circuit, such as the waveform simulator (to be discussed below), that can regulate switching timing, e.g., level shift g, isolation, amplification, etc. 
         [0027]    Transformers  114  and  116  are also shown in  FIG. 1 . Transformer  114  is shown as a three winding transformer, with a center-tapped primary, wired to add (boost) or subtract (buck) from the output of the primary inverter to produce the AC output  122 . As one skilled in the art will appreciate, as the switches in the secondary inverter are actuated, current flows in different directions through the primary winding of the buck-boost transformer, which in turn produces an AC output, which is summed by the electrical series connection with the output of the primary inverter. Transformer  116 , together with rectifier  118  and capacitor  120  form a filter to smooth the output from transformer  114  by reducing the pass-though of the secondary inverter&#39;s carrier frequency. The transformer  116  couples the carrier frequency generated by the second inverter to the rectifier  118 , which acts as a power sink that removes the carrier frequency and outputs a DC component that is returned to the DC power source  102 . In this way, the circuit of the exemplary embodiment produces a high efficiency, low THD signal. As one skilled in the art will appreciate, transformer  116  may be embodied as an additional winding on the core of transformer  114 , alleviating the need for the second transformer  116 . In such a configuration, the transformer would integrate an additional winding, and this additional secondary winding of the transformer would be connected to the rectifier. 
         [0028]    The operation of the circuit of  FIGS. 1B and 1C  will now be discussed with reference to  FIGS. 2A-2C . The primary inverter produces an essentially square wave input to the transformer  114 . To do this, switches  104  and  106  are connected to a secondary winding of the transformer, switches  110  and  112  are to another secondary winding of the transformer, and switches  113  and  114 , forming the secondary inverter, are connected to the center-tapped primary winding of transformer  114 . 
         [0029]    The sequence of operation of the primary inverter is as follows. During the zero-output “dead time” phase of the primary waveform, switch  108  is closed and switches  104 ,  106 ,  110 , and  112  are open. As discussed above, an alternate embodiment without switch  108  would be configured during this phase by closing switches  104  and  110  while switches  106  and  112  remain open. During the second, positive-output phase of the primary waveform, switches  106  and  110  are closed and the others are open. The third phase is identical to the first phase. The fourth and final, negative-output phase is generated by closing switches  104  and  112  and opening the other switches. In an inverter employing solid-state switches, the switches take a small increment of time to change state. If switches  106  and  104  are closed at the same time, or switches  110  and  112  are closed at the same time, an undesirably high-current will flow from the DC supply, wasting power and even possibly damaging the switches. One skilled in the art, familiar with solid switches, will recognize this problem as one of “shoot-through” currents. This problem is overcome, in the preferred solid-state embodiment of the primary inverter, by introducing a small period, on the order of a couple of microseconds, between each of the four phases described above, during which all switches are commanded to be open. 
         [0030]    Switches  113  and  115  form the second inverter are connected to the primary winding of the inverter. The sequence of operation of the secondary inverter is more complex. It uses pulse-width modulation to produce a complex waveform exemplified by the graph of  FIG. 2B . This waveform is not produced in the exact continuous form shown but rather approximated by a series of rectangular pulses, each comprising a positive phase and a negative phase. The relative width of the two phases is varied corresponding to the desired instantaneous voltage. That is, when the voltage is to be at zero, as it is at time  0  in the diagram, the duration of the positive and negative phases should be equal. When a maximum positive value is required, the duration of the positive phase is at maximum and the duration of the negative phase is at minimum. Likewise, a maximum negative value is produced with a minimum duration in the positive phase and maximum duration in the negative phase. For intermediate voltages, the relative durations of positive and negative phases are adjusted proportionately. During the positive phase of each pulse, switch  113  is on and switch  115  is off. During the negative phase, switch  115  is on and switch  113  is off. As with the primary inverter&#39;s switching sequence set forth above, the use of solid-state switches requires that a small period with both switches off be interposed between each positive phase and the subsequent negative phase and between each negative phase and the subsequent positive phase, to avoid wasteful shoot-through currents. The configuration of the primary inverter produces the output waveform of  FIG. 2A , a simple square wave. The output of the secondary inverter approximates the waveform of  FIG. 2B , and is essentially added to the waveform of  FIG. 2A  to produce the sine wave of  FIG. 2C . In this way, the inverter of the present invention improves upon the design of a simple square wave inverter by addition two switches, and optionally an output filter, e.g., transformer  116  and rectifier  118 . 
         [0031]    The secondary inverter taught herein adjusts the output of the primary inverter to the desired waveform, e.g., a sine wave, by adding to the output of the primary inverter a waveform that is, in the time domain, the difference between the primary inverter output waveform and the ideal desired output waveform or, in the frequency domain, comprises components with frequencies and amplitudes matching the undesired harmonics of the primary inverter output, but opposite in phase. In theory, the varying amplitudes of the correction waveform could be determined in advance and generated deterministically by a hardware look-up table or simple open-loop software program. However, this simplistic approach has distinct disadvantages, namely it would be beneficial to adjust the output waveform to counteract distortions introduced by a reactive or unbalanced load or even nonlinearities in the inverter itself, such as may be encountered in the buck-boost transformer. One method of addressing this is to implement the secondary inverter&#39;s controller as a computer controlled waveform synthesizer using closed-loop feedback. A computer-implemented embodiment is shown in  FIGS. 3-6 . 
         [0032]    The basic circuit for a computer-implemented embodiment is shown in  FIG. 3 . This figure illustrates a single-phase embodiment but extending the implementation for three or more phases is as simple as duplicating the secondary synthesizer, buck-boost transformer, and inverter controller for each additional phase. As can be seen, the embodiment of  FIG. 3  is similar to that of  FIG. 1C , and as such includes a DC power source  502 , a plurality of switches  504 ,  506 ,  508 ,  510 ,  512 ,  513  and  515 , transformers  514  and  516 , rectifier  518  and capacitor  520 , all of which produces an AC output  522 , in addition to waveform synthesizer  500 . Switches  504 ,  506 ,  508 ,  510  and  512  form the primary inverter, while switches  513  and  515  form the secondary inverter, and are controlled by the waveform synthesizer  500 , which is connected to, e.g., gates of IGBT transistors acting as the switches. The primary inverter operates at line frequency, e.g., 60 HZ, and outputs a modified square wave if switch  508  is closed during a zero output period of the waveform. 
         [0033]    A waveform synthesizer  500  will now be described with reference to  FIG. 4 . The waveform synthesizer  500  comprises a memory  606 , a program product  608 , a processor  604 , an analog-to-digital (A/D) and digital-to-analog (D/A) converter  602 , and a pair of discrete outputs  612 . For a bridge-type secondary inverter, four discrete outputs would be required. The analog-to-digital converter is connected to sample the output of the combined inverter and deliver to the processor a digital representation of the voltage at each instant in time. The sampling rate of the converter does not have to be the same as the modulating frequency of the secondary inverter, but accuracy will suffer if it is lower, there is little advantage to making it faster, and the details of programming will be simplified if it is the same. The analog-to-digital converter  602  may be implemented by any standard technique known in the art non-exclusively including successive approximation, sigma-delta, single- or dual-slope integration, or voltage-to-frequency conversion. One of the first two is likely to be optimum in most situations. The detailed design of the discrete outputs  612  will depend on the nature of the switches. In practical embodiments, the outputs will comprise a totem-pole logic output (not shown), typically implemented on the die of the microcontroller or a peripheral integrated circuit. Logic level outputs will not be able to control most switches directly so there will need to be an interface circuit  603  to amplify and/or level-shift the logic signal to one suitable to drive the controlling electrode of the switches. The most common switches will be MOSFET or IGBT transistors and drivers for both types of device are widely available as integrated circuits such as the Ixys IXDR502 MOSFET gate driver or as complete modules such as the VLA500 series of IGBT gate drivers offered by Powerex. Moreover, depending upon the implementation of the various embodiments, the driver  603  may control additional gates for the primary inverter switches, and though the output signals for these switches are not explicitly shown in  FIG. 4 , such an embodiment is within the scope of this disclosure. 
         [0034]    As can be seen, the analog-to-digital converter  602  and the discrete outputs  612  are connected to the processor  604  along with memory  606 . These subsystems may be separate devices embodied in a plurality of specific integrated circuits. The CPU might be a microprocessor or a special-purpose stored-program processor built from a gate array or even a hard-wired logic system. The memory can be discrete memory ICs of various technologies. The A/D and discrete outputs may be embodied in IC devices with these specific functions. However, it is sufficient and preferred to use a single integrated microcontroller with the functions of CPU, program storage, data memory, analog input, and discrete outputs all combined in a single integrated circuit. Many suitable microcontrollers are available from numerous manufacturers including the PIC32MX6xx series available from Microchip Technologies or the AT32UC3 series from Atmel. Many such devices, including the Microchip part cited above, offer on-chip pulse-width modulation components that can simplify the process of developing the program product. Processor  604  is the “brains” of the waveform synthesizer  500 , and as such executes program product  608 . The program must command the switches of the secondary inverter to open and close to produce the varying-width pulses described above according to a time-sampled representation of the waveform maintained in memory  606 . Concurrently, the program must read the voltage values from A/D converter  603 , compare them to the desired output waveform, and make adjustments to the time-sampled representation of the output. As one skilled in the art will appreciate, processor  604  may also have sufficient capacity to concurrently control the much simpler timing of the primary inverter switches and may include components that allow the waveform synthesizer  500  to be connected to user interface means [not shown] such as a display and keyboard that would allow a user to monitor operation and adjust parameters or to a network interface which would allow a remote user or higher-level automated system to similarly monitor and control the operation of the inverter. 
         [0035]    Memory  606  may store several processing and waveform generation algorithms as well as the time-sampled representations of the current secondary inverter output waveform, the overall inverter output, and a template for the desired, sinusoidal, output. Additionally it will store variables used by the particular algorithm. In many microcontrollers intended for such digital signal processing, the program storage and the data memory are logically separate rather than a single array such as used the Van Neuman architecture found in general purpose computers. As such, memory  606  may consists of both non-volatile memory, e.g., flash memory, masked-ROM, EPROM, and the like, and volatile memory, e.g., SRAM, DRAM, SDRAM, etc., as required by embodiments of the instant invention. 
         [0036]    Program product  608  processes the waveform data and produces a corrective waveform that determines the widths of the pulses driving the switches of the secondary inverter ultimately resulting in sending the analogous electrical waveform to the primary of the buck-boost transformer, described with reference to  FIG. 5 . To do this, the waveform output from the circuit is input into the waveform synthesizer (step  702 ). As one skilled in the art will appreciate, the waveform may incorporate a circuit, or digital signal processor (DSP), that is capable of reading analog voltages and operates similar to, e.g., an oscilloscope. Such a circuit may include A/D converters in combination with digital signal processing algorithms that are known in the art to convert measured voltages into digital representations of the voltage measurements and to store these measurements as a data array in memory (step  704 ). Then, the digital signal is compared to an ideal sine wave to produce a time-sampled representation of the error, comprised of an error, derivative and integral calculation for each discrete time t (step  706 ). After the error, derivative and integral are computed, the manipulated variable to correct the waveform error is computed for each data point, and a correction waveform is constructed (step  708 ). The program product then controls the DSP to dynamically adjust the waveform simulator to generate a secondary inverter signal that, when input into the transformer  516 , produces a sine wave without the computed error (step  710 ). 
         [0037]    To adjust the waveform required to correct the error between the output and an ideal sine wave, the program product  608  uses a novel form of the standard PID algorithm. As is known in the art, a PID (or “proportional”, “integral”, “derivative”) algorithm has as inputs a setpoint (SP) specifying the desired output of the system and a measured value or variable (PV), which is the actual output of the system. The output of the PID algorithm is the manipulated variable (MV) and this value controls whatever means is producing the output of the system to form a feedback loop. The PID algorithm internally computes an error value and an integral and derivative of this error value with respect to time. To compute the PID algorithm, each of these three values is multiplied by a respective constant (called tuning parameters), and the products are summed to obtain the value for the manipulated variable. Thus, for the PID algorithm: 
         [0038]    The proportional term is given by: 
         [0000]        P   out   =K   p   e ( t )  (Eq. 1.1) 
         [0039]    where,
       P out : Proportional term of output   K p : Proportional gain, a tuning parameter   e: Error=SP−PV   t: Time or instantaneous time (the present);       
 
         [0044]    The integral term is given by: 
         [0000]        I   out   =K   i ∫ 0   t   e (τ) dτ   (Eq. 2.1) 
         [0045]    where,
       I out : Integral term of output   K i : Integral gain, a tuning parameter   e: Error=SP−PV   t: Time or instantaneous time (the present)   τ: a dummy integration variable; and       
 
         [0051]    The derivative term is given by: 
         [0000]    
       
         
           
             
               
                 
                   
                     D 
                     out 
                   
                   = 
                   
                     
                       K 
                       d 
                     
                      
                     
                        
                       
                          
                         t 
                       
                     
                      
                     
                        
                        
                       
                         ( 
                         t 
                         ) 
                       
                     
                   
                 
               
               
                 
                   ( 
                   
                     Eq 
                     . 
                     
                         
                     
                      
                     3.1 
                   
                   ) 
                 
               
             
           
         
       
     
         [0052]    where,
       D out : Derivative term of output   K d : Derivative gain, a tuning parameter   e: Error=SP−PV   t: Time or instantaneous time (the present).       
 
         [0057]    As one skilled in the art will recognize, the algorithm may be implemented in discrete time steps. For each discrete time period t, the equations above reduce to: 
         [0000]        E   t =SP t −PV t  (the error term);  (Eq. 1.2) 
         [0000]        D   t   =E   t   −E   t-1  (the derivative);  (Eq. 2.2) 
         [0000]        I   t   =E   t   −I   t-1  (the integral);  (Eq. 3.2) 
         [0000]      and 
         [0000]      MV t   =K   P   *E   t   +K   D   *D   t   K   I   *I   t  (the manipulated variable, MV)  (Eq. 4.1). 
         [0058]    In the invention, the program product  608  is programmed to compute a novel PID algorithm, based on the known equations above, which have inputs, outputs and internal variables each replaced with one cycle of a periodic waveform. Preferably, these waveforms are measured, stored, and manipulated as an array of discrete time-sampled amplitudes, i.e., digitized according to known processing techniques for, e.g., digital oscilloscopes. 
         [0059]    The program product  608  is programmed to compute a novel vector PID algorithm by applying scalar PID computations to data arrays representing a waveform sample for each sampling time period. As such, each array has N values, where N is the number of sampling periods in the period of the waveform, i.e., the sampling frequency divided by the system frequency. To compute the vector PID, the following are calculated for each array index i, i=(1, 2, 3 . . . N), at each time interval t. That is, the program product performs the following calculations, either sequentially or in parallel, N times for each sampling period. 
         [0000]        E   i,t =SP i,t −PV i,t  (the error term);  (Eq. 1.3) 
         [0000]        D   i,t   =E   i,t   −E   i,t-1  (the derivative);  (Eq. 2.3) 
         [0000]        I   i,t   =E   i,t   −I   i,t-1  (the integral);  (Eq. 3.3) 
         [0000]      and 
         [0000]      MV i,t   =K   P   *E   i,t   +K   D   *D   i,t   +K   I   *I   i,t  (the manipulated variable, MV)  (Eq. 4.2). 
         [0060]    The computer program product  608  may also be programmed to include additional bounding parameters for the equations above. For example, limits on the integral term, freezing the integrator when the MV is at its minimum or maximum value, computing the integral term over a limited number of past samples, computing the derivative based upon the MV rather than the error, or making the tuning constants, K, be functions of the setpoint value, can all be integrated into the program product to further refine the techniques disclosed herein. 
         [0061]    As one skilled in the art will appreciate, equations 1.3, 2.3, 3.3 and 4.2 can be expressed as computer code programmed into computer program product  608 . A diagram of the software flow is shown in  FIG. 6 . As can be seen, the program product assigns an index as 1, and sets a value N as equal to the size of the data array from the A/D converter (step  802 ). For the index value, the error, derivative, and integral are computed for time t, or the time in which the data point was observed (step  804 ). These values are a function of the setpoint (or desired output) minus the actual observed data point. As such, this portion of the program product compares the desired output waveform from the transformer to the actual output waveform. Using the computations from step  804 , the program product then calculates the manipulated variable MV, to correct the observed output data point (step  806 ). Then, the manipulated variable in the output array is saved, and the index is incremented (step  808 ), and if the index is not greater than N, the MV for the next observed data point is computed (step  810 ). If the index is greater than the number of N, a switching scheme for the secondary inverter switches is implemented that produces an output waveform corresponding to the MV output array (step  812 ). 
         [0062]    The following exemplary code (shown herein written in the C language, though other programming languages can be used) may process the data array to generate a corrective waveform: 
         [0000]    
       
         
               
             
               
               
             
               
             
               
               
             
               
               
             
               
             
               
               
             
               
               
             
               
               
             
               
             
               
               
             
               
               
             
               
               
             
               
             
           
               
                   
               
             
             
               
                 /* 
               
               
                  * Vector PID Algorithm 
               
               
                  */ 
               
               
                 # define SAMPLES_PER_CYCLE 100 
               
               
                 float Setpoint [SAMPLES_PER_CYCLE], 
               
             
          
           
               
                   
                 PV [SAMPLES_PER_CYLCE], 
               
               
                   
                 Error [SAMPLES_PER_CYLCE], 
               
               
                   
                 PrevError [SAMPLES_PER_CYLCE], 
               
               
                   
                 Integral [SAMPLES_PER_CYLCE], 
               
               
                   
                 Derivative [SAMPLES_PER_CYLCE], 
               
               
                   
                 MV[SAMPLES_PER_CYLCE], 
               
             
          
           
               
                 float Kp , Kd , Ki ; 
               
               
                 void Initialize (void) 
               
               
                 { 
               
             
          
           
               
                   
                  int i; 
               
               
                   
                  for (i = 0; i&lt; SMAPLES_PER_CYCLE; i++) { 
               
             
          
           
               
                   
                 PrevError [i] = 0; 
               
               
                   
                 Integral [i] = 0; 
               
             
          
           
               
                 } 
               
               
                 // Set tuning parameters Kp, Kd, and Ki to application-specific values 
               
               
                 } 
               
               
                 /* 
               
               
                  * An example Setpoint - a sine waveform with RMS amplitude 1 
               
               
                  */ 
               
               
                 void createSetpoint (void) 
               
               
                 { 
               
             
          
           
               
                   
                  int i; 
               
               
                   
                  for (i=0; i&lt; SAMPLES_PER_CYLCE; i++) { 
               
             
          
           
               
                   
                 Error[i] = Setpoint[i] − PV [i]; 
               
               
                   
                 Integral [i] += Error[i]; 
               
               
                   
                 Derivative[i] = Error[i] − PrevError[i]; 
               
               
                   
                 MV[i] = Kp * Error[i] + Ki * Integral[i] + Kd * Derivative[i]; 
               
               
                   
                 PrevError[i] = Error[i]; 
               
             
          
           
               
                   
                  } 
               
             
          
           
               
                 } 
               
               
                 void main (void) 
               
               
                 { 
               
             
          
           
               
                   
                  Initialize ( ); 
               
               
                   
                  CreateSetpoint ( ); 
               
               
                   
                  for (;;){ 
               
               
                   
                  //Measure output (i.e. inverter output voltage) and place in PV 
               
             
          
           
               
                   
                 VectorPID( ); 
               
             
          
           
               
                   
                  // Send MV values to control system output means (i.e. PWM 
               
               
                   
                  modulator) 
               
               
                   
                  } 
               
             
          
           
               
                 } 
               
               
                   
               
             
          
         
       
     
         [0063]    Once the MV, or desired output of the system, is determined, the computer program product generates a new corrective waveform. To convert the numerical representation of the waveform into an analogous electrical signal, the computer program product uses, e.g., digital signal processing techniques to generate a digitized version of the desired waveform MV and a pulse-width modulation (PWM) algorithm, PWM hardware, or other digital-to-analog (D/A) converter to convert the digitized signal to the desired analog output  536 . 
         [0064]    In the drawings and specification, there have been disclosed a typical preferred embodiment of the invention, and although specific terms are employed, the terms are used in a descriptive sense only and not for purposes of limitation. The invention has been described in considerable detail with specific reference to these illustrated embodiments. It will be apparent, however, that various modifications and changes can be made within the spirit and scope of the invention as described in the foregoing specification.