Changeset 280 for pmsm

Show
Ignore:
Timestamp:
02/24/09 14:12:46 (15 years ago)
Author:
smidl
Message:

progress...

Location:
pmsm
Files:
3 added
3 modified

Legend:

Unmodified
Added
Removed
  • pmsm/CMakeLists.txt

    r279 r280  
    2121 
    2222EXEC (pmsm_estim pmsmsim) 
     23EXEC (sim pmsmsim) 
     24EXEC (sim_var pmsmsim) 
  • pmsm/pmsm.h

    r279 r280  
    3838                double ubm = u0 ( 1 ); 
    3939 
    40                 vec xk=zeros ( 4 ); 
     40                vec xk( 4 ); 
    4141                //ia 
    4242                xk ( 0 ) = ( 1.0- Rs/Ls*dt ) * iam + Ypm/Ls*dt*omm * sin ( thm ) + uam*dt/Ls; 
  • pmsm/pmsmDS.h

    r278 r280  
    2727        //! Number of miliseconds per discrete time step 
    2828        int Dt; 
    29         //! options for logging, string in which each character has a meaning: 
    30         //! \c u - log predictions of 'true' voltage 
    31         string opt; 
     29        //! options for logging, - log predictions of 'true' voltage 
     30        bool opt_modu; 
    3231public: 
    3332        //! Constructor with fixed sampling period 
    34         pmsmDS (string opt0="" ) : Dt ( 125 ), opt(opt0) {} 
     33        pmsmDS ()   {Dt=125; Drv=RV ( "{o_ua o_ub o_ia o_ib t_ua t_ub }" );} 
    3534        void set_parameters ( double Rs0, double Ls0, double Fmag0, double Bf0, double p0, double kp0, double J0, double Uc0, double DT0, double dt0 ) { 
    3635                pmsmsim_set_parameters ( Rs0, Ls0, Fmag0, Bf0, p0, kp0, J0, Uc0, DT0, dt0 ); 
     36        } 
     37        //! parse options: "modelu" => opt_modu=true; 
     38        void set_options ( string &opt ) { 
     39                opt_modu = ( opt.find ( "modelu" ) ==string::npos ); 
    3740        } 
    3841        void getdata ( vec &dt ) {dt=vec ( KalmanObs,6 );} 
     
    4851                                //linear increase 
    4952                                if ( profileWw.length() ==1 ) { 
    50                                         Ww=profileWw ( 0 ); dW=0.0;} 
     53                                        Ww=profileWw ( 0 ); dW=0.0; 
     54                                } 
    5155                                else { 
    5256                                        dW = profileWw ( ind )-profileWw ( ind-1 ); 
     
    6569        void log_add ( logger &L ) { 
    6670                L_x = L.add ( rx, "x" ); 
    67                 L_oy = L.add ( ry, "obs" ); 
    68                 L_ou = L.add ( ru, "obs" ); 
    69                 L_iu = L.add ( ru, "true" ); 
     71                L_oy = L.add ( ry, "o" ); 
     72                L_ou = L.add ( ru, "o" ); 
     73                L_iu = L.add ( ru, "t" ); 
    7074                // log differences 
    71                 if (opt.find("u")==string::npos){ 
    72                         L_optu = L.add(ru, "model"); 
     75                if ( opt_modu ) { 
     76                        L_optu = L.add ( ru, "model" ); 
    7377                } 
    7478        } 
     
    7983                L.logit ( L_ou, vec_2 ( KalmanObs[0],KalmanObs[1] ) ); 
    8084                L.logit ( L_iu, vec_2 ( KalmanObs[4],KalmanObs[5] ) ); 
    81                 if (opt.find("u")==string::npos){ 
    82                         double sq3=sqrt(3.0); 
     85                if ( opt_modu ) { 
     86                        double sq3=sqrt ( 3.0 ); 
    8387                        double ua,ub; 
    8488                        double i1=x[0]; 
    85                         double i2=0.5*(-i1+sq3*x[1]); 
    86                         double i3=0.5*(-i1-sq3*x[1]); 
     89                        double i2=0.5* ( -i1+sq3*x[1] ); 
     90                        double i3=0.5* ( -i1-sq3*x[1] ); 
    8791                        double u1=KalmanObs[0]; 
    88                         double u2=0.5*(-u1+sq3*KalmanObs[1]); 
    89                         double u3=0.5*(-u1-sq3*KalmanObs[1]); 
    90                          
    91                         double du1=0.7*(double(i1>0.1) - double(i1<-0.1))+0.05*i1; 
    92                         double du2=0.7*(double(i2>0.1) - double(i2<-0.1))+0.05*i2; 
    93                         double du3=0.7*(double(i3>0.1) - double(i3<-0.1))+0.05*i3; 
    94                         ua = (2.0*(u1-du1)-(u2-du2)-(u3-du3))/3.0; 
    95                         ub = ((u2-du2)-(u3-du3))/sq3; 
    96                         L.logit( L_optu , vec_2 (ua,ub)); 
     92                        double u2=0.5* ( -u1+sq3*KalmanObs[1] ); 
     93                        double u3=0.5* ( -u1-sq3*KalmanObs[1] ); 
     94 
     95                        double du1=0.7* ( double ( i1>0.1 ) - double ( i1<-0.1 ) ) +0.05*i1; 
     96                        double du2=0.7* ( double ( i2>0.1 ) - double ( i2<-0.1 ) ) +0.05*i2; 
     97                        double du3=0.7* ( double ( i3>0.1 ) - double ( i3<-0.1 ) ) +0.05*i3; 
     98                        ua = ( 2.0* ( u1-du1 )- ( u2-du2 )- ( u3-du3 ) ) /3.0; 
     99                        ub = ( ( u2-du2 )- ( u3-du3 ) ) /sq3; 
     100                        L.logit ( L_optu , vec_2 ( ua,ub ) ); 
    97101                } 
    98                 } 
     102        } 
    99103 
    100104        void set_profile ( double dt, const vec &Ww ) {dt_prof=dt; profileWw=Ww;}