Space-vector PWM and associate concepts and techniques such as abc-dq transformation, zero-vector-injection and so on are very abstract to learn. I recently started to review them for a 3-phase ac-dc project. While they are commonly used, I was a little frustrated that it’s hard to find a place online that connects dots among these concepts, moreover there are lots of incorrect materials that either misdefined concepts, or had wrong derivation. Some tutorials have animations that can help visualize the concepts, yet they didn’t provide enough quantitative explanation, while others focus too much on the math and distant from the physical meaning. As such I decided to synthesize and reflect on the process of understanding these topics with some notes of my own.
DISCLAIMER: this article is more for myself to keep track of my thoughts and to clarify some concepts of SVPWM that I have struggled with. While I tried to organize the material in a logical sense for better understanding, it is NOT intended to teach SVPWM from zero knowledge. Moreover, the derivations and conclusions are directly from the fundamental concept of SVPWM, so I didn’t cite any reference. If you found anything that might have been published, please let me know so I can cite properly.
1. The initial misunderstanding of Space Vector v.s. Voltage Phasors
When I first learned about using space vector to represent 3-phase voltages, I found myself often confused between space vector and phasor vector that I learned very early in undergrad EE classes.
In time domain, the three-phase voltages are
In the phasor domain, while the three phase voltages are also represented by three vectors that are separated with , the magnitude of the vectors do not change, as it is equal to . For the space vector, the magnitude of the vectors change with the time-domain voltages as shown above, and they are apart in phase. I was quite confused by this representation first because why the length of the vectors is also related to the phase angle , while they are already apart in the phase?.
Then I realized that the physical meaning is much more clear in a three-phase electric motor layout. The in the space vector space (or abc space) is the reflection of the physical layout of the three-phase winding, and the magnitude of the three-phase voltages change in time domain. Thus, the phase angles of the three vectors are actually the physical layout angle of the winding.
2. Adding three-phase vectors in the Space-Vector plane with Clarke Transformation
Since now it’s clear that the three-phase vectors in their 2-d space are apart and with time-varying magnitudes, we can define the x-axis and y-axis of the existing 2-d space of the three vectors. And this 2-d space is referred as space, with being x-axis (0 degree), and being y-axis (90 degree)
Essentially, the aforementioned vector representation is in polar coordinates, with magnitude and phase being the two coordinates in the plane to represent one vector. In algebra, there are two ways to compute the addition of vectors:1. solve the geometry, or compute using (x,y) coordinates. Computing using (x,y) is usually more convenient to get the results, yet it is also not as intuitive as graphical representation. The famous transformation (Clarke Transformation) is the method to convert the polar information of the vectors to (x,y), or values. However, there is a scalar of that needs to be noticed. If we simply project the three voltage vectors onto axises, we will get
The results are :
This means that the resultant summed vector has a magnitude that is 1.5 times of the line voltage magnitude . This is a common mistake or inconsistency among different online tutorials and videos. For instance, if in a system controller, the reference of the final summed voltage is , the relation between line-voltage magnitude and reference voltage is . In some sources, you will find this relation is used in all of the derivations. Yet, the formal CLARKE TRANSFORMATION has a 2/3 scalar in front of the matrix as
The updated voltages are:
From basic algebra, we know that the updated summed vector rotates in a circle, with radius of and angular speed of .
Seeing the circle reinforced the physical meaning of a rotating vector. The reason that the 3-phase ac motor rotates is because of this rotating voltage vector, which generates a rotating electromagnetic field vector.
Anyways, the main takeaway is that it is recommended to use
for all the derivations, since most papers used results derived from this relation
3. Understanding the coded vector space of SVPWM
3.1 Space-vector PWM using 6-switch 2-level inverter: what is the vector of each switching state?
6-switch, 2-level (2-level each leg), 3-phase inverters are the most common 3-phase topology to apply space-vector PWM.
The convention is that since there are 6 switches and 3 phases, each phase is either 0 as low-side switch is on, and 1 as high-side switch is on. So the states of the switches can be represented as 3 bit binary code [Sa, Sb, Sc] = [100] [110]… and so on.
There are many tutorials that covers this process. Yet the first thing that took me a while to get was:
The vector length of each coded vector
For instance, [100] means the high side switch of phase A is on, and B and C are connected to the low-side. Note that the dc-bus negative common node is not the same as the ac neutral node. We can draw the equivalent circuit in [100] as below
In a balanced 3-phase system, the impedance of each phase ZL is the same. With basic voltage divider rule we can find the values of three-phase line-neutral voltages are
Using the Clarke Transformation, the vector in coordinates can be found as
This means that the voltage vector encoded with [100] has length of and a phase of zero. Thus, in the common hexagon diagram of SVPWM, except for zero vector [000] and [111], the length of each coded voltage vector [110] [010] etc is , (not as in some material)
3.2 Why the achievable voltage vector space is bounded by a hexagon not a circle with radius 2/3Vdc?
Once I derived the length of the coded vectors, I had a question that why the available vector space has a hexagon boundary, not a circle with radius. Most sources just default this fact, but this boundary can be derived using the average of the two available vectors. Since the principle of SVPWM is to create a time-averaged vector using the two adjacent available coded vectors, we can derive the expression of the achievable vector assuming no zero vector is in one switching cycle.
We start with the space between the vector [100] and [110]. Say that in one switching cycle, we spend a fraction of (duty ratio, 0 to 1) on [100] ( in ) and on [110] ( in ), the resulted voltage vector in coordinate is:
If we plot the coordinates with d from 0 to 1, we can get the hexagon boundary between [100] and [110] as a straight line:
3.3 What is the maximum achievable line-neutral voltage?
From Clarke transformation, we know that the final summed vector is rotating with radius . Basically, this question is equivalent to, how high can be?
The explanation was to draw a circle inside the hexagon that is tangent to the hexagon, with that we can find the radius of the circle to be , which is . That is, the maximum line-neutral voltage with is