SVPWM实现
继上一篇SVPWM原理之后,这篇来讲讲SVPWM的C语言实现。实现方法列举了两种,其本质都是上篇文章中所提到过的。
按SVPWM原理按部就班实现
bool A, B, C;
int N, flag;
double alf, beta, u_1, u_2, u_3, K, x, y, z, t_x, t_y, t_xy, t_a, t_b, t_c;
alf = (*u_alf);
beta = (*u_beta);
u_1 = beta;
u_2 = 1.732*alf-beta;
u_3 = -1.732*alf-beta;
if(u_1>0) A=1; else A=0;
if(u_2>0) B=1; else B=0;
if(u_3>0) C=1; else C=0;
N = 4*C+2*B+A;
K = 1.732 * T / u_dc;
x = K*u_1;
y = 0.5*K*u_2;
z = 0.5*K*u_3;
switch (N)
{
case 1: flag = 2; t_x = -y, t_y = -z; break;
case 2: flag = 6; t_x = -z, t_y = -x; break;
case 3: flag = 1; t_x = y, t_y = x; break;
case 4: flag = 4; t_x = -x, t_y = -y; break;
case 5: flag = 3; t_x = x, t_y = z; break;
case 6: flag = 5; t_x = z, t_y = y; break;
}
if(t_x+t_y>T)
{
t_xy =