# SPACE VECTOR PWM FOR PMSM

Is there experimental results, that can be used as reference to my work,

AC Drive China Forum

Forum » General Discussion » SPACE VECTOR PWM FOR PMSM

Topics: **SPACE VECTOR PWM FOR PMSM** on General Discussion
# SPACE VECTOR PWM FOR PMSM

Can anyone suggest me document to learn detail about Space vector PWM application to PMSM,

Is there experimental results, that can be used as reference to my work,

#1

Is there experimental results, that can be used as reference to my work,

09-16-2013 02:08 AM

Top #2

Hello Özgür,

we are using same SVM as for other 3-ph sine el. motors (with 3 terminals).

The 3-9ph PMSM application basics are described here (AN1931):

http://cache.freescale.com/files/product/doc/AN1931.pdf?fasp=1&WT_TYPE=Application Notes&WT_VENDOR=FREESCALE&WT_FILE_FORMAT=pdf&WT_ASSET=Documentation

The SVM is implemented in Embedded Software and Motor Control Libraries:

http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=FSLESL&fpsp=1&tab=Documentation_Tab

Please, look for document " Motor Control Library - User Reference Manual" (section 3.6) for details of description and implementation: http://cache.freescale.com/files/microcontrollers/doc/user_guide/56800E_MCLIB.pdf?fr=gdc

Here you find mathematical description, theory and function API's. Note that we implemented 6 different SVMs, so hopefully you have something to chose from.

Best Regards

Leos

we are using same SVM as for other 3-ph sine el. motors (with 3 terminals).

The 3-9ph PMSM application basics are described here (AN1931):

http://cache.freescale.com/files/product/doc/AN1931.pdf?fasp=1&WT_TYPE=Application Notes&WT_VENDOR=FREESCALE&WT_FILE_FORMAT=pdf&WT_ASSET=Documentation

The SVM is implemented in Embedded Software and Motor Control Libraries:

http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=FSLESL&fpsp=1&tab=Documentation_Tab

Please, look for document " Motor Control Library - User Reference Manual" (section 3.6) for details of description and implementation: http://cache.freescale.com/files/microcontrollers/doc/user_guide/56800E_MCLIB.pdf?fr=gdc

Here you find mathematical description, theory and function API's. Note that we implemented 6 different SVMs, so hopefully you have something to chose from.

Best Regards

Leos

09-16-2013 04:27 AM

Top #3

Hi Leos, among the various possibilities offered in the document on implementation i can't find one alternative to SV which I think is really smart.

It is a triangle-comparison corresponding of standard symmetrical SV-PWM, which provides the same advantages (maximum output voltage), but with reduced computation and complexity.

Here http://www.ntu.edu.sg/home/edwwang/jnlpapers/00982262.pdf, near eq. (32) the zero-sequence to be added to reference phase voltages is defined for this particular case. Surely there are better papers or presentations for this, now I can't find one.

However, Özgür, why did you ask specifically on SV-PWM for PMSM? IMO it's a general technique for multiphase inverters, not depending on the load applied.

It is a triangle-comparison corresponding of standard symmetrical SV-PWM, which provides the same advantages (maximum output voltage), but with reduced computation and complexity.

Here http://www.ntu.edu.sg/home/edwwang/jnlpapers/00982262.pdf, near eq. (32) the zero-sequence to be added to reference phase voltages is defined for this particular case. Surely there are better papers or presentations for this, now I can't find one.

However, Özgür, why did you ask specifically on SV-PWM for PMSM? IMO it's a general technique for multiphase inverters, not depending on the load applied.

09-16-2013 06:52 AM

Top #4

Hi Özgür,

You didn't mention clearly about your work requirement. As Leos and Sandro mentioned there are many ways of implementing SVPWM. If you are looking for some reference & to proceed your work hope Leos & Sandro inputs will help.

Finally it is having the third harmonic sine injected in to sine phase voltages to get better DC bus utilization (15% more).

You can find many techniques in IEEE journals, application notes of many semiconductor companies, articles, thesis papers.

In practical scenario, the selection of one particular technique is based on many factors.

1. Reduced computation or complexity requirement based on the device you use

2. Reduced switching losses (Edge aligned or centre aligned)

3. Again in Center aligned mode zero switching state (000 or 111) selection for point 2.

etc.,

4. With alpha & beta input or magnitude angle input available etc., for point 1.

5. Modulation range

Also if you are looking for a simple implementation without sector calculation, use the min-max method or absolute method for which you take the inverse Clarke output as your input.

You didn't mention clearly about your work requirement. As Leos and Sandro mentioned there are many ways of implementing SVPWM. If you are looking for some reference & to proceed your work hope Leos & Sandro inputs will help.

Finally it is having the third harmonic sine injected in to sine phase voltages to get better DC bus utilization (15% more).

You can find many techniques in IEEE journals, application notes of many semiconductor companies, articles, thesis papers.

In practical scenario, the selection of one particular technique is based on many factors.

1. Reduced computation or complexity requirement based on the device you use

2. Reduced switching losses (Edge aligned or centre aligned)

3. Again in Center aligned mode zero switching state (000 or 111) selection for point 2.

etc.,

4. With alpha & beta input or magnitude angle input available etc., for point 1.

5. Modulation range

Also if you are looking for a simple implementation without sector calculation, use the min-max method or absolute method for which you take the inverse Clarke output as your input.

09-16-2013 08:58 AM

Top #5

Hi Sandro,

I am not sure I got your point. However, if you refer to method depicted on Fig. 7c with T0=T7=1/2*(Ts-T1-T2), then this is the equivalent to, what we call, standard SVM. The ei(t) in this case seems like triangulars, but in reality these are part of sine function. So as mentioned by Sankaranarayanan, you can implement the same algorithms in different ways depending on what are your overall requirements. Mainly what is the output of your control algorithm (see point 4. in Sankaranarayanan's response above).

Özgür, Sankaranarayanan,

let me also add more words based on the theoretical analyses I did/participated in my professional life.

For standard 3-ph voltage inverter the best DC-bus utilization that can be achieved (in linear modulation range) is VDCB=Vphase-phase_amplitude => Vphase_ampl = VDCB/sqrt(3), which is about 15% more than VDCB/2 (as for inv. Cl.).

Such utilization can be achieved in infinite number of ways. All is about to add/inject 3rd HARMONIC AND ITS HARMONICS, in the article referenced by Sandro this represented by the ei(t). So ei(t) = sum(A3k*sin(3k*omg*t+fi3k) where k = 1 .. infinity; fi3k is phase shift of the "3k" harmonic; A3k is amplitude of "3k" harmonic; omg is angular speed and t is time. As you see, there is infinite number (Aleph-naught for math purist ;-) ) of possible combinations of amplitudes and phase shifts.

This is quite good for students, professors and engineers: you can always write an IEEE paper about “new” SVM solution and as an engineer you can always find needed SVM but different from one patented by your competition. The negative side is that it may take (Özgür) an infinite time to test all variants to find the best one…. I stop my sarcasm here ;-) .

For practical use I pretty much support the points provided by Sankaranarayanan with the following notes:

1. Reduced computation or complexity requirement based on the device you use

- honestly, if you having trouble with computational load of the SVM (do not get me wrong, I still support efficient implementations) then you probably using wrong device. Today you find on the market reasonably priced devices which can do such job in about 1us or less. In case such devices are still above your budget then SVM is not your technique, because you probably use very simple control methods (e.g. scalar control) so you can also use very simple sine PWM methods (with 3rd harmonic injection).

2. Reduced switching losses (Edge aligned or centre aligned)

- note all the SVM methods claiming the reduction of the switching losses sacrifice something else - in most cases magnitude of current (or equivalently torque) ripples and/or fundamental frequency/speed range. This is because such techniques reduce number of “switchings”; i.e. number of alternations of the applied space vectors; per certain period, so the (space vector) current is allowed to “grow” in certain direction “longer” than in case of more alternations/switchings are performed within the same time. Therefore if your application (e.g. servo-drive) requires to achieve small current/torque ripples then all SVMs are practically equal for you. Because any SVM technique will produce very similar switching losses when achieving the same current ripples.

Regarding the limited speed range, if your application must work with full torque/current at zero speed then each power switch must be thermally designed for full losses => no real savings.

Reality, of course is a bit more complex, however, for first level guidance the above holds.

4. With alpha & beta input or magnitude angle input available etc.,

- yes, it does not make sense to use e.g. SVM implementation based on apha,beta if your controll algorithm gives magnitude,angle where sine PWM with 3rd harmonic injection can be used.

Hope I did not make it too complicated and put some light into the subject.

BR

Leos

I am not sure I got your point. However, if you refer to method depicted on Fig. 7c with T0=T7=1/2*(Ts-T1-T2), then this is the equivalent to, what we call, standard SVM. The ei(t) in this case seems like triangulars, but in reality these are part of sine function. So as mentioned by Sankaranarayanan, you can implement the same algorithms in different ways depending on what are your overall requirements. Mainly what is the output of your control algorithm (see point 4. in Sankaranarayanan's response above).

Özgür, Sankaranarayanan,

let me also add more words based on the theoretical analyses I did/participated in my professional life.

For standard 3-ph voltage inverter the best DC-bus utilization that can be achieved (in linear modulation range) is VDCB=Vphase-phase_amplitude => Vphase_ampl = VDCB/sqrt(3), which is about 15% more than VDCB/2 (as for inv. Cl.).

Such utilization can be achieved in infinite number of ways. All is about to add/inject 3rd HARMONIC AND ITS HARMONICS, in the article referenced by Sandro this represented by the ei(t). So ei(t) = sum(A3k*sin(3k*omg*t+fi3k) where k = 1 .. infinity; fi3k is phase shift of the "3k" harmonic; A3k is amplitude of "3k" harmonic; omg is angular speed and t is time. As you see, there is infinite number (Aleph-naught for math purist ;-) ) of possible combinations of amplitudes and phase shifts.

This is quite good for students, professors and engineers: you can always write an IEEE paper about “new” SVM solution and as an engineer you can always find needed SVM but different from one patented by your competition. The negative side is that it may take (Özgür) an infinite time to test all variants to find the best one…. I stop my sarcasm here ;-) .

For practical use I pretty much support the points provided by Sankaranarayanan with the following notes:

1. Reduced computation or complexity requirement based on the device you use

- honestly, if you having trouble with computational load of the SVM (do not get me wrong, I still support efficient implementations) then you probably using wrong device. Today you find on the market reasonably priced devices which can do such job in about 1us or less. In case such devices are still above your budget then SVM is not your technique, because you probably use very simple control methods (e.g. scalar control) so you can also use very simple sine PWM methods (with 3rd harmonic injection).

2. Reduced switching losses (Edge aligned or centre aligned)

- note all the SVM methods claiming the reduction of the switching losses sacrifice something else - in most cases magnitude of current (or equivalently torque) ripples and/or fundamental frequency/speed range. This is because such techniques reduce number of “switchings”; i.e. number of alternations of the applied space vectors; per certain period, so the (space vector) current is allowed to “grow” in certain direction “longer” than in case of more alternations/switchings are performed within the same time. Therefore if your application (e.g. servo-drive) requires to achieve small current/torque ripples then all SVMs are practically equal for you. Because any SVM technique will produce very similar switching losses when achieving the same current ripples.

Regarding the limited speed range, if your application must work with full torque/current at zero speed then each power switch must be thermally designed for full losses => no real savings.

Reality, of course is a bit more complex, however, for first level guidance the above holds.

4. With alpha & beta input or magnitude angle input available etc.,

- yes, it does not make sense to use e.g. SVM implementation based on apha,beta if your controll algorithm gives magnitude,angle where sine PWM with 3rd harmonic injection can be used.

Hope I did not make it too complicated and put some light into the subject.

BR

Leos

09-16-2013 11:25 AM

Top #6

Hi Leos,

I think you got the point. I was saying that, among the many implementations, the one using max-min "third" harmonic" for triangle-comparison is the simplest implementation of standard SVM, since it gives exactly the same compare outputs. I never made a comparison, but I expect this algorithm to be shorter to execute on most architectures, with respect to calculating sectors and vector time applications, so I wonder why it is not the actual standard implementation of SVM (and, then, why application notes, etc. usually don't mention it).

About the choice of a particular modulation, the SV-PWM (implementation is not important, as I said above max-min technique works the same) with symmetrical edges is the most common, and IIRC it can be demonstrated that it provides the lowest current ripple. In few words, SVM uses the nearest vectors (thus it avoids unnecessary , while the centered edges give the shortest maximum application times for each vector (considering 1 off-on and 1 off-on commutation per period).

I think you got the point. I was saying that, among the many implementations, the one using max-min "third" harmonic" for triangle-comparison is the simplest implementation of standard SVM, since it gives exactly the same compare outputs. I never made a comparison, but I expect this algorithm to be shorter to execute on most architectures, with respect to calculating sectors and vector time applications, so I wonder why it is not the actual standard implementation of SVM (and, then, why application notes, etc. usually don't mention it).

About the choice of a particular modulation, the SV-PWM (implementation is not important, as I said above max-min technique works the same) with symmetrical edges is the most common, and IIRC it can be demonstrated that it provides the lowest current ripple. In few words, SVM uses the nearest vectors (thus it avoids unnecessary , while the centered edges give the shortest maximum application times for each vector (considering 1 off-on and 1 off-on commutation per period).

09-16-2013 02:07 PM

Top #7

Hi Sandro,

I think we are in agreement.

But you raised an interesting hypothesis. Is really the implementation based on the “max-min” algorithm the short to execute on most architectures? Honestly, I would not be too optimistic. I have to say, me too, I also did not make a direct comparison. But …

To make fair analyses, one shall compare apples and apples – most optimized implementation based on sectors etc. vs. most optimized implementation based on the “max-min” algorithm. The devil is hidden in details.

Let’s assume the alpha-beta inputs to the algorithm. The optimized standard SVM algorithm requires:

1. Identify the sector - 3x IF, THEN, ELSE statements; 1x multiplication

2. Calculate Times – few additions/subtractions; 1x mult. by 0.5 (div. by 2)

3. Calculate PWM duty cycles – few additions/subtractions

The optimized “max-min” SVM algorithm requires:

1. Inv. Clark Transf. – 1x mult; few additions/subtraction; ; 1x mult. by 0.5 (div. by 2)

2. Identify min-max– 3x IF, THEN, ELSE statements

3. Calculate PWM duty cycles – few additions/subtractions

So, it seems to me that both approaches are comparable also in term of computational load.

Actually, this result shall not be surprising! Referring to the computer theory, the Turing machine, one can see that equivalent (by definition) computing solutions must consist of steps of the same computational complexity (e.g. mul., div., IF-THEN, sin …). The difference then can only be in the particular sequences of computational steps.

This is summary of my argumentation why the “max-min” it is not the actual standard implementation of SVM. Why it is not mentioned by AN’s (including ours from Freescale)? I think because it is not so widely known (I am not sure it is even taught at university) and once you have any implementation you must focus your resources to other challenges (e.g. sensorless PMSM).

BR

Leos

I think we are in agreement.

But you raised an interesting hypothesis. Is really the implementation based on the “max-min” algorithm the short to execute on most architectures? Honestly, I would not be too optimistic. I have to say, me too, I also did not make a direct comparison. But …

To make fair analyses, one shall compare apples and apples – most optimized implementation based on sectors etc. vs. most optimized implementation based on the “max-min” algorithm. The devil is hidden in details.

Let’s assume the alpha-beta inputs to the algorithm. The optimized standard SVM algorithm requires:

1. Identify the sector - 3x IF, THEN, ELSE statements; 1x multiplication

2. Calculate Times – few additions/subtractions; 1x mult. by 0.5 (div. by 2)

3. Calculate PWM duty cycles – few additions/subtractions

The optimized “max-min” SVM algorithm requires:

1. Inv. Clark Transf. – 1x mult; few additions/subtraction; ; 1x mult. by 0.5 (div. by 2)

2. Identify min-max– 3x IF, THEN, ELSE statements

3. Calculate PWM duty cycles – few additions/subtractions

So, it seems to me that both approaches are comparable also in term of computational load.

Actually, this result shall not be surprising! Referring to the computer theory, the Turing machine, one can see that equivalent (by definition) computing solutions must consist of steps of the same computational complexity (e.g. mul., div., IF-THEN, sin …). The difference then can only be in the particular sequences of computational steps.

This is summary of my argumentation why the “max-min” it is not the actual standard implementation of SVM. Why it is not mentioned by AN’s (including ours from Freescale)? I think because it is not so widely known (I am not sure it is even taught at university) and once you have any implementation you must focus your resources to other challenges (e.g. sensorless PMSM).

BR

Leos

09-16-2013 04:25 PM

Top #8

Leos,

you're right, I've not found the max-min algorithm during courses, too, Although I explained myself the equivalence with classical SVM, still I miss a formal demonstration.

For the case of NPC inverters, maybe the triangle-comparison algorithms have more evident advantages, even if other issues must be addressed in those topologies.

BTW, this calls for a comparison on an actual processor, maybe I'll find the time to try on a C2000.

However, surely there are other challenges than modulation, when dealing with inverters!

you're right, I've not found the max-min algorithm during courses, too, Although I explained myself the equivalence with classical SVM, still I miss a formal demonstration.

For the case of NPC inverters, maybe the triangle-comparison algorithms have more evident advantages, even if other issues must be addressed in those topologies.

BTW, this calls for a comparison on an actual processor, maybe I'll find the time to try on a C2000.

However, surely there are other challenges than modulation, when dealing with inverters!

09-16-2013 07:11 PM

Top #9

Hi All,

Ultimately the goal is to injecting third harmonic, I did analyse various methods like Min-Max, Absolute, etc. at the end all the results are almost same.

So one has to make the decision on the computation speed and ease of operation, It is very much evident that min-max method is the simplest.

But even in min max we need to compare the pwms to find out which is max man which is min.

On the other hand if we have ready made sector information available from system then we directly identify which is max and which is min.

If we can understand Va Vb Vc correctly then we can go for look up table approach with a constant to inject third harmonic, or with simple equation.

BR

Pavan M

Ultimately the goal is to injecting third harmonic, I did analyse various methods like Min-Max, Absolute, etc. at the end all the results are almost same.

So one has to make the decision on the computation speed and ease of operation, It is very much evident that min-max method is the simplest.

But even in min max we need to compare the pwms to find out which is max man which is min.

On the other hand if we have ready made sector information available from system then we directly identify which is max and which is min.

If we can understand Va Vb Vc correctly then we can go for look up table approach with a constant to inject third harmonic, or with simple equation.

BR

Pavan M