Show
Ignore:
Timestamp:
10/17/11 21:00:32 (13 years ago)
Author:
vahalam
Message:
 
Files:
1 modified

Legend:

Unmodified
Added
Removed
  • applications/pmsm/pmsm.h

    r1341 r1403  
    2020//      double Rs, Ls, dt, Ypm, kp, p,  J, Mz; 
    2121// }; 
     22 
     23inline double va_drop_interp(double i){ 
     24        //double va_char[16]={0,10,50,100,200,300,500,1000, 0,1,1.8,2.4,3.2,3.8,4.8,6.8}; 
     25        //* 
     26        double si = sign(i); 
     27        i = abs(i); 
     28        double du; 
     29                 
     30        if(i < 0.1) du = 5.0*i; 
     31     else if(i < 0.5) du = 1.0*(i-0.1) + 0.5; 
     32     else if(i < 1.0) du = 0.6*(i-0.5) + 0.9; 
     33     else if(i < 2.0) du = 0.4*(i-1.0) + 1.2; 
     34     else if(i < 3.0) du = 0.3*(i-2.0) + 1.6; 
     35     else if(i < 5.0) du = 0.25*(i-3.0) + 1.9;                           
     36     else du = 0.2*(i - 5.0) + 2.4; 
     37         
     38        return si*du*1.0; 
     39         
     40        /*/ 
     41        double msi = sign(i); 
     42         
     43        i = abs(i) - 0.3; 
     44         
     45        double si = sign(i); 
     46        i = abs(i); 
     47        double du; 
     48         
     49        if(i < 0.0654) du = 5.0*i; 
     50        else if(i < 0.3225) du = 1.0*(i-0.0654) + 0.3225; 
     51        else if(i < 0.654) du = 0.6*(i-0.3225) + 0.5805; 
     52        else if(i < 1.29) du = 0.4*(i-0.654) + 0.774; 
     53        else if(i < 1.935) du = 0.3*(i-1.29) + 1.032; 
     54        else if(i < 3.225) du = 0.25*(i-1.935) + 1.2255;                                 
     55        else du = 0.2*(i - 3.225) + 1.548; 
     56                 
     57        return msi*(si*du+0.558); 
     58        /*/ 
     59} 
    2260 
    2361//! State evolution model for a PMSM drive and its derivative with respect to \f$x\f$ 
     
    4482                double u2=0.5* ( -u1+sq3*u0(1) ); 
    4583                double u3=0.5* ( -u1-sq3*u0(1) ); 
    46  
     84                // 
     85                double du1=va_drop_interp(i1); 
     86                double du2=va_drop_interp(i2); 
     87                double du3=va_drop_interp(i3); 
     88                /*/ 
    4789                double du1=1.4* ( double ( i1>0.3 ) - double ( i1<-0.3 ) ) +0.2*i1; 
    4890                double du2=1.4* ( double ( i2>0.3 ) - double ( i2<-0.3 ) ) +0.2*i2; 
    4991                double du3=1.4* ( double ( i3>0.3 ) - double ( i3<-0.3 ) ) +0.2*i3; 
     92                */ 
    5093                ua = ( 2.0* ( u1-du1 )- ( u2-du2 )- ( u3-du3 ) ) /3.0; 
    5194                ub = ( ( u2-du2 )- ( u3-du3 ) ) /sq3;