Hi all,
I am trying an exaple code from control suite for Field Oriented Control for Sensorless AC induction motor.
On compiling I am getting an error which says expression must have integral type for following line
// ------------------------------------------------------------------------------
// Connect inputs of the SVGEN_DQ module and call the space-vector gen. macro
// ------------------------------------------------------------------------------
svgen_dq1.Ualpha = ipark1.Alpha;
svgen_dq1.Ubeta = ipark1.Beta;
SVGEN_MACRO(svgen_dq1); <-----------------------expression must have integral type
following is the expansion of macro
Sector = 0; \
temp_sv1=(((0.5)) * (svgen_dq1.Ubeta)); \
temp_sv2=(((0.8660254)) * (svgen_dq1.Ualpha)); /* 0.8660254 = sqrt(3)/2*/ \
\
/* Inverse clarke transformation */ \
Va = svgen_dq1.Ubeta; \
Vb = -temp_sv1 + temp_sv2; \
Vc = -temp_sv1 - temp_sv2; \
/* 60 degree Sector determination */ \
if (Va>(0)) Sector = 1; \
if (Vb>(0)) Sector = Sector+2; \
if (Vc>(0)) Sector = Sector+4; \
/* X,Y,Z (Va,Vb,Vc) calculations X = Va, Y = Vb, Z = Vc */ \
Va = svgen_dq1.Ubeta; \
Vb = temp_sv1 + temp_sv2; \
Vc = temp_sv1 - temp_sv2; \
/* Sector 0: this is special case for (Ualpha,Ubeta) = (0,0)*/ \
\
switch(Sector) \
{ \
case 0: \
svgen_dq1.Ta = (0.5); \
svgen_dq1.Tb = (0.5); \
svgen_dq1.Tc = (0.5); \
break; \
case 1: /*Sector 1: t1=Z and t2=Y (abc ---> Tb,Ta,Tc)*/ \
t1 = Vc; \
t2 = Vb; \
svgen_dq1.Tb = ((1)-t1-t2)>>1; /* tbon = (1-t1-t2)/2 */ \
svgen_dq1.Ta = svgen_dq1.Tb+t1; /* taon = tbon+t1 */ \
svgen_dq1.Tc = svgen_dq1.Ta+t2; /* tcon = taon+t2 */ \
break; \
case 2: /* Sector 2: t1=Y and t2=-X (abc ---> Ta,Tc,Tb)*/ \
t1 = Vb; \
t2 = -Va; \
svgen_dq1.Ta = ((1)-t1-t2)>>1; /* taon = (1-t1-t2)/2 */ \
svgen_dq1.Tc = svgen_dq1.Ta+t1; /* tcon = taon+t1 */ \
svgen_dq1.Tb = svgen_dq1.Tc+t2; /* tbon = tcon+t2 */ \
break; \
case 3: /* Sector 3: t1=-Z and t2=X (abc ---> Ta,Tb,Tc)*/ \
t1 = -Vc; \
t2 = Va; \
svgen_dq1.Ta = ((1)-t1-t2)>>1; /* taon = (1-t1-t2)/2 */ \
svgen_dq1.Tb = svgen_dq1.Ta+t1; /* tbon = taon+t1 */ \
svgen_dq1.Tc = svgen_dq1.Tb+t2; /* tcon = tbon+t2 */ \
break; \
case 4: /* Sector 4: t1=-X and t2=Z (abc ---> Tc,Tb,Ta)*/ \
t1 = -Va; \
t2 = Vc; \
svgen_dq1.Tc = ((1)-t1-t2)>>1; /* tcon = (1-t1-t2)/2 */ \
svgen_dq1.Tb = svgen_dq1.Tc+t1; /* tbon = tcon+t1 */ \
svgen_dq1.Ta = svgen_dq1.Tb+t2; /* taon = tbon+t2 */ \
break; \
case 5: /* Sector 5: t1=X and t2=-Y (abc ---> Tb,Tc,Ta)*/ \
t1 = Va; \
t2 = -Vb; /* tbon = (1-t1-t2)/2 */ \
svgen_dq1.Tb = ((1)-t1-t2)>>1; /* tcon = tbon+t1 */ \
svgen_dq1.Tc = svgen_dq1.Tb+t1; /* taon = tcon+t2 */ \
svgen_dq1.Ta = svgen_dq1.Tc+t2; \
break; \
case 6: /* Sector 6: t1=-Y and t2=-Z (abc ---> Tc,Ta,Tb)*/ \
t1 = -Vb; \
t2 = -Vc; \
svgen_dq1.Tc = ((1)-t1-t2)>>1; /* tcon = (1-t1-t2)/2 */ \
svgen_dq1.Ta = svgen_dq1.Tc+t1; /* taon = tcon+t1 */ \
svgen_dq1.Tb = svgen_dq1.Ta+t2; /* tbon = taon+t2 */ \
break; \
} \
/* Convert the unsigned GLOBAL_Q format (ranged (0,1)) ->.. */ \
/* ..signed GLOBAL_Q format (ranged (-1,1))*/ \
svgen_dq1.Ta = (svgen_dq1.Ta-(0.5))<<1; \
svgen_dq1.Tb = (svgen_dq1.Tb-(0.5))<<1; \
svgen_dq1.Tc = (svgen_dq1.Tc-(0.5))<<1;