Space vector Modulation#

struct uz_DutyCycle_t#

Struct for the three DutyCycles for a three-phase-system.

Public Members

float DutyCycle_A#

DutyCycle for Phase U

float DutyCycle_B#

DutyCycle for Phase V

float DutyCycle_C#

DutyCycle for Phase W

struct uz_DutyCycle_2x3ph_t#
struct uz_DutyCycle_3x3ph_t#
struct uz_DutyCycle_t uz_Space_Vector_Modulation(uz_3ph_dq_t v_ref_Volts, float V_DC_Volts, float theta_el_rad)#

Generates a DutyCycle from dq-reference voltages via Space Vector Modulation for a carrier based PWM generation.

Parameters:
  • v_ref_Volts – reference voltages in Volts (e.g. from current controller)

  • V_dc_volts – DC-Link voltage in volts

  • theta_el_rad – electrical rotor angle in rad

Returns:

struct uz_DutyCycle_t generated DutyCycles

Example#

Listing 149 Example function call for space vector limitation#
1#include "uz/uz_Space_Vector_Modulation/uz_space_vector_modulation.h"
2int main(void) {
3   float V_DC_Volts = 24.0f;
4   float theta_el_rad = 100.0f;
5   uz_3ph_dq_t v_input_Volts = {.d = 5.0f, .q = 8.0f, .zero = 0.0f};
6   struct uz_DutyCycle_t output = uz_Space_Vector_Modulation(v_input_Volts, V_DC_Volts, theta_el_rad);
7}

Description#

Generates a DutyCycle from dq-reference voltages via Space Vector Limitation for a carrier based PWM generation. This is realized according to [[1]] . Further information can be found there.

Figure made with TikZ

Fig. 300 Space vector coordinate system

Any arbitrary stator voltage vector can be produced from the eight standard vectors, which represent the eight possible logic states of a three phase voltage source inverter.

Table 86 The logic states of the standard voltage vectors#

\(U_0\)

\(U_1\)

\(U_2\)

\(U_3\)

\(U_4\)

\(U_5\)

\(U_6\)

\(U_7\)

A

0

1

1

0

0

0

1

1

B

0

0

1

1

1

0

0

1

C

0

0

0

0

1

1

1

1

\(U_S\) is achieved by vectorial addition of the two boundary vectors \(U_L\) and \(U_R\) in the directions of the standard vectors. This is achieved by modulating the on/off time of the two closest standard vectors and/or the two zero-voltage vectors (\(U_0, U_7\)). E.g. for the example provided in figure Fig. 300, a modulation between \(U_1, U_2\) and \(U_0\)/ \(U_7\) is required. Depending on the location of \(U_S\), the boundary vectors can be directly calculated from the \(\alpha\) and \(\beta\) voltages.

Table 87 Moduli of the boundary components#

\(|U_R|\)

\(|U_L|\)

\(|S_1|\)

\(|Q_1|\)

\(|U_{\alpha}| - \frac{1}{\sqrt{3}}|U_{\beta}|\)

\(\frac{2}{\sqrt{3}}|U_{\beta}|\)

\(|S_2|\)

\(|Q_1|\)

\(|U_{\alpha}| + \frac{1}{\sqrt{3}}|U_{\beta}|\)

\(-|U_{\alpha}| + \frac{1}{\sqrt{3}}|U_{\beta}|\)

\(|S_2|\)

\(|Q_2|\)

\(-|U_{\alpha}| + \frac{1}{\sqrt{3}}|U_{\beta}|\)

\(|U_{\alpha}| + \frac{1}{\sqrt{3}}|U_{\beta}|\)

\(|S_3|\)

\(|Q_2|\)

\(\frac{2}{\sqrt{3}}|U_{\beta}|\)

\(|U_{\alpha}| - \frac{1}{\sqrt{3}}|U_{\beta}|\)

\(|S_4|\)

\(|Q_3|\)

\(|U_{\alpha}| - \frac{1}{\sqrt{3}}|U_{\beta}|\)

\(\frac{2}{\sqrt{3}}|U_{\beta}|\)

\(|S_5|\)

\(|Q_3|\)

\(|U_{\alpha}| + \frac{1}{\sqrt{3}}|U_{\beta}|\)

\(-|U_{\alpha}| + \frac{1}{\sqrt{3}}|U_{\beta}|\)

\(|S_5|\)

\(|Q_4|\)

\(-|U_{\alpha}| + \frac{1}{\sqrt{3}}|U_{\beta}|\)

\(|U_{\alpha}| + \frac{1}{\sqrt{3}}|U_{\beta}|\)

\(|S_6|\)

\(|Q_4|\)

\(\frac{2}{\sqrt{3}}|U_{\beta}|\)

\(|U_{\alpha}| - \frac{1}{\sqrt{3}}|U_{\beta}|\)

Depending on the current sector and quadrant, the appropriate boundary vectors \(U_L\) and \(U_R\) will be calculated and converted into DutyCycles. The DutyCycles are limited with the Saturation function to 1, respectively 0.

Sources#