00001
00002
00003
00004 #ifndef _motor_H
00005 #define _motor_H
00006
00007 #include "node.h"
00008
00009 EXPORT SIMULATIONMODE interupdate_motor(OBJECT *obj, unsigned int64 delta_time, unsigned long dt, unsigned int iteration_count_val, bool interupdate_pos);
00010
00011 class motor : public node
00012 {
00013 public:
00014
00015 protected:
00016
00017 private:
00018 complex TF[16];
00019 complex ITF[16];
00020 double last_cycle;
00021 double curr_delta_time;
00022 bool triplex_connected;
00023
00024 typedef enum {
00025 TPNconnected1N=0,
00026 TPNconnected2N=1,
00027 TPNconnected12=2
00028 } MOTOR_TRIPLEX_CONNECTION;
00029 enumeration triplex_connection_type;
00030
00031 void SPIMupdateVars();
00032 void updateFreqVolt();
00033 void SPIMUpdateMotorStatus();
00034 void SPIMStateOFF();
00035 void SPIMreinitializeVars();
00036 void SPIMUpdateProtection(double delta_time);
00037 void SPIMSteadyState(TIMESTAMP t1);
00038 void SPIMDynamic(double curr_delta_time, double dTime);
00039 complex complex_exp(double angle);
00040 int invertMatrix(complex TF[16], complex ITF[16]);
00041
00042
00043 void TPIMupdateVars();
00044 void TPIMUpdateMotorStatus();
00045 void TPIMStateOFF();
00046 void TPIMreinitializeVars();
00047 void TPIMUpdateProtection(double delta_time);
00048 void TPIMSteadyState(TIMESTAMP t1);
00049 void TPIMDynamic(double curr_delta_time, double dTime);
00050
00051 double delta_cycle;
00052 double Pbase;
00053 double Ibase;
00054 double wbase;
00055 double ws_pu;
00056 double n;
00057 double Rds;
00058 double Rqs;
00059 double Rr;
00060 double Xm;
00061 double Xr;
00062 double Xc1;
00063 double Xc2;
00064 double Xd_prime;
00065 double Xq_prime;
00066 double bsat;
00067 double Asat;
00068 double H;
00069 double Jm;
00070 double To_prime;
00071 double cap_run_speed_percentage;
00072 double cap_run_speed;
00073 double trip_time;
00074 double reconnect_time;
00075 int32 iteration_count;
00076 double DM_volt_trig_per;
00077 double DM_speed_trig_per;
00078 double DM_volt_trig;
00079 double DM_speed_trig;
00080 double DM_volt_exit_per;
00081 double DM_speed_exit_per;
00082 double DM_volt_exit;
00083 double DM_speed_exit;
00084 double speed_error;
00085
00086 typedef enum {
00087 statusRUNNING=0,
00088 statusSTALLED=1,
00089 statusTRIPPED=2,
00090 statusOFF = 3
00091 } MOTOR_STATUS;
00092 enumeration motor_status;
00093
00094 typedef enum {
00095 overrideON=0,
00096 overrideOFF = 1
00097 } MOTOR_OVERRIDE;
00098 enumeration motor_override;
00099
00100 typedef enum {
00101 modeSPIM=0,
00102 modeTPIM=1
00103 } MOTOR_OPERATION_MODE;
00104 enumeration motor_op_mode;
00105
00106 double trip;
00107 double reconnect;
00108 bool motor_trip;
00109 complex psi_b;
00110 complex psi_f;
00111 complex psi_dr;
00112 complex psi_qr;
00113 complex Ids;
00114 complex Iqs;
00115 complex If;
00116 complex Ib;
00117 complex Is;
00118 complex motor_elec_power;
00119 double Telec;
00120 double Tmech;
00121 double Tmech_eff;
00122 double wr;
00123 double psi_sat;
00124
00125 double trip_prev;
00126 double reconnect_prev;
00127 int motor_trip_prev;
00128 complex psi_b_prev;
00129 complex psi_f_prev;
00130 complex psi_dr_prev;
00131 complex psi_qr_prev;
00132 complex Ids_prev;
00133 complex Iqs_prev;
00134 complex If_prev;
00135 complex Ib_prev;
00136 complex Is_prev;
00137 complex motor_elec_power_prev;
00138 double Telec_prev;
00139 double Tmech_prev;
00140 double wr_prev;
00141 double psi_sat_prev;
00142
00143
00144 double uv_relay_rand;
00145 double uv_relay_time;
00146 double uv_relay_trip_time;
00147 double uv_relay_trip_V;
00148 typedef enum {
00149 uv_relay_INSTALLED=0,
00150 uv_relay_UNINSTALLED=1
00151 } UV_RELAY_INSTALLED;
00152 enumeration uv_relay_install;
00153 int uv_lockout;
00154 typedef enum {
00155 contactorOPEN=0,
00156 contactorCLOSED=1
00157 } CONTACTOR_STATE;
00158 enumeration contactor_state;
00159 double contactor_open_rand;
00160 double contactor_close_rand;
00161 double contactor_open_Vmin;
00162 double contactor_close_Vmax;
00163
00164 complex Vs;
00165 double ws;
00166 int connected_phase;
00167
00168
00169 double Zbase;
00170 double Rs;
00171 double Xs;
00172 double pf;
00173 double rs_pu;
00174 double rr_pu;
00175 double lm;
00176 double lls;
00177 double llr;
00178 double TL_pu;
00179 double Kfric;
00180 complex phips;
00181 complex phins_cj;
00182 complex phipr;
00183 complex phinr_cj;
00184 double wr_pu;
00185 complex Ias;
00186 complex Ibs;
00187 complex Ics;
00188 complex Vas;
00189 complex Vbs;
00190 complex Vcs;
00191 complex Ips;
00192 complex Ipr;
00193 complex Ins_cj;
00194 complex Inr_cj;
00195 double Ls;
00196 double Lr;
00197 double sigma1;
00198 double sigma2;
00199
00200 complex phips_prev;
00201 complex phins_cj_prev;
00202 complex phipr_prev;
00203 complex phinr_cj_prev;
00204 double wr_pu_prev;
00205 complex Ips_prev;
00206 complex Ipr_prev;
00207 complex Ins_cj_prev;
00208 complex Inr_cj_prev;
00209
00210 public:
00211 int create(void);
00212 TIMESTAMP presync(TIMESTAMP t0, TIMESTAMP t1);
00213 TIMESTAMP sync(TIMESTAMP t0, TIMESTAMP t1);
00214 TIMESTAMP postsync(TIMESTAMP t0, TIMESTAMP t1);
00215 SIMULATIONMODE inter_deltaupdate(unsigned int64 delta_time, unsigned long dt, unsigned int iteration_count_val, bool interupdate_pos);
00216 motor(MODULE *mod);
00217 inline motor(CLASS *cl=oclass):node(cl){};
00218 int init(OBJECT *parent);
00219 int isa(char *classname);
00220 static CLASS *pclass;
00221 static CLASS *oclass;
00222 };
00223
00224 #endif