2025-06-15 5:35 AM
I have read that in the MCSDK, there is an overmodulation technique that could exceed the linear region of the SVPWM. However, without it, I see in the WC Workbench, that the maximum modulation than can be achieved even without overmodulation is 100% so the modulation index will be equal to 1. Moreover, without overmodulation, I can see that I could attain a modulation index equal to 1 which is superior to the linear region which is 0.866. So what is the role of the overmodulation flag, and what is the difference without it?
Thank you
2025-06-18 2:27 AM
Hello AnthonyK,
It seems you are mixing different topics. The Max Modulation Index is mostly useful for Shunt-Based current measurement. It is not directly linked to Overmodulation.
To put it simply, we use the Max Modulation Index to clamp the modulation whenever it would make one of the three pulses too short for sampling current. This is why MMI is always at 100% when using ICS for example, since the current can be sampled at any time, on the contrary of shunt-based measurement.
A 100% MMI simply means that the system is allowed to modulate the pulses up to their maximum capacity. Such MMI is indeed required for overmodulation, but having a 100% MMI does not necessarily means Overmodulation is used.
The structure of a PMSM motor makes the area of reachable voltages shaped like an hexagon. We make the choice to limit ourselves to the biggest circle that can fit that hexagon. This is the 0.866 limit you are talking about, this can be called Space Vector Modulation Index.
Overmodulation makes use of the full MMI to reach the corners of the hexagon, which creates distortions in voltages and currents, but reaches the full capabilities of the system.
You can find more information on how MMI is computed, and on how Overmodulation is made in our User Manual. Via WorkBench, you can find it by clicking on About -> Documentations -> Documentation -> in the newly open browser window, click on User Manual.
2025-06-19 12:40 AM
Hello Gael,
Thank you for your reply.
But what can I see without overmodulation, that the modulation index can reach 1. I have calculated it using this formula : sqrt(Vd^2 + Vq^2)/Vdc/sqrt(3). And I have seen that the modulation index could be equal to 1 without activating the overmodulation flag.
2025-06-19 8:13 AM
Hello @AnthonyK
It is a matter of definition, MMI=1 means that we can reach the biggest circle that can fit the hexagon.
Regards
Cedric
2025-06-20 7:46 AM
Hello Cedric,
Thank you for your reply. But what I meant, that even without overmodulation, practically, I am able to reach a modulation index equal to 1 which means I am able to surpass the circle that fits in the hexagon. In fact I saw in the software to limit this, we should reduce the MMI to 86% to have this limit. Otherwise, the default value which is 100%, makes the Modulation Index equal to 1 (By measuring Vd and Vq, and applying the Modulation Index formula)
2025-06-20 8:57 AM
Hello Anthonny,
"I am able to reach a modulation index equal to 1 which means I am able to surpass the circle that fits in the hexagon."
Not sure I understand your conclusion, if you look at the documentation of the circle limitation, the MMI is used to compute the radius of the circle. So the output of the circle limitation will guarantee that at the new Vq and Vd values will be at the maximum on the circle, but you will not surpass it.
"In fact I saw in the software to limit this, we should reduce the MMI to 86% to have this limit"
Could you tell me where do you see this ?
Which version of the MCSDK do you use ?
Regards
Cedric
2025-06-20 10:00 AM - edited 2025-06-20 10:03 AM
In parameters_conversion.h there is a macro that defines the MAX_MOD which is used in the circle limitation along side with Vd max which is 95% of MAX_MODULE.
/* MMI Table Motor 1 100% */
#define MAX_MODULE 32767
What I meant in my previous post, that I have plotted using MC_Pilot Vd and Vq and I have calculated the modulation index which in theory is sqrt(Vd^2 + Vq^2)/Vdc/sqrt(3) and I have noticed that I could have it equal to 1 even if I am not activating the overmodulation in the MCSDK. (Normally I should have it at max 0.86 as stated in the documentation)
2025-06-26 4:39 AM - edited 2025-06-26 3:17 PM
Hello Cedric,
Do you have any updates regarding my questions?
For example, I ran my motor without the overmodulation and I saved the values of Vd and Vq and I got
V_Q | V_D |
11,3091 | -2,33146 |
With my Vdc bus in the software equal to 20Vdc. So calculating the theoretical modulation index I got nearly a modulation index equal to 1! which is not in the linear zone. Adding to this, if you check the PWMC_SetPhaseVoltage_OVM function which is used when activating the overmodulation option, you can see clearly that the linear zone is defined as
#define OVM_VREF_MODE1_START ((int32_t)29717
which is equal to 0.906 of 32767 where 32767 is a modulation index equal to 1!
Without overmodulation, I didn't see any limitation that limits the Vref to 29717 ( the circle limitation limits only to 95% of Max_Module as stated before!)
with Max Module:
MMI S16_MAX in the documantion equal in the software to:
/* MMI Table Motor 1 MAX_MODULATION_100_PER_CENT */
#define MAX_MODULE (uint16_t)((100* 32767)/100)
Thank you