запущен проект motor identification c терминалкой
This commit is contained in:
103
Inu_im_1wnd_3lvl/Inu/estimate.h
Normal file
103
Inu_im_1wnd_3lvl/Inu/estimate.h
Normal file
@@ -0,0 +1,103 @@
|
||||
// ============================================
|
||||
// Файл: estimate.h
|
||||
// ============================================
|
||||
#ifndef ESTIMATE_H
|
||||
#define ESTIMATE_H
|
||||
|
||||
typedef enum {
|
||||
ESTIMATE_TEST_IDLE = 0,
|
||||
ESTIMATE_TEST_RS,
|
||||
ESTIMATE_TEST_RR_L,
|
||||
ESTIMATE_TEST_LM,
|
||||
ESTIMATE_TEST_DONE
|
||||
} Estimate_Test_t;
|
||||
|
||||
typedef struct {
|
||||
float Rs; // сопротивление статора, Ом
|
||||
float Rr; // сопротивление ротора, Ом
|
||||
float Lm; // взаимная индуктивность, Гн
|
||||
float Lk; // полная индуктивность рассеяния, Гн
|
||||
float Lls; // индуктивность рассеяния статора, Гн
|
||||
float Llr; // индуктивность рассеяния ротора, Гн
|
||||
float Zk; // полное сопротивление КЗ, Ом
|
||||
float Rk; // активное сопротивление КЗ, Ом
|
||||
float Xk; // реактивное сопротивление КЗ, Ом
|
||||
} Params_t;
|
||||
|
||||
/*
|
||||
* Состояние автомата для эксперимента по измерению Rs
|
||||
* Метод: разностный метод с двумя уровнями постоянного тока
|
||||
*/
|
||||
typedef struct {
|
||||
char step; /* текущий шаг 0-5 */
|
||||
float timer; /* таймер выдержки времени */
|
||||
float meas1, meas2; /* измеренные напряжения для I1 и I2, В */
|
||||
float val1, val2; /* измеренные токи I1 и I2, А */
|
||||
float sum_v; /* сумма напряжений для усреднения */
|
||||
float sum_i; /* сумма токов для усреднения */
|
||||
int sample_cnt; /* счетчик выборок для усреднения */
|
||||
int done; /* флаг завершения эксперимента */
|
||||
} RsState_t;
|
||||
|
||||
|
||||
/*
|
||||
* Состояние автомата для эксперимента по измерению Rr и Lls, Llr
|
||||
* Метод: подача переменного тока по оси q, RMS измерения
|
||||
*/
|
||||
typedef struct {
|
||||
float timer; /* таймер фазы синусоиды, с */
|
||||
float ramp_timer; /* таймер нарастания амплитуды, с */
|
||||
float sum_p; /* сумма активной мощности, Вт */
|
||||
float sum_vq2; /* сумма квадратов напряжения Vq, В^2 */
|
||||
float sum_iq2; /* сумма квадратов тока Iq, А^2 */
|
||||
int sample_count; /* счетчик выборок */
|
||||
|
||||
/* усреднение одного измерения на текущей частоте */
|
||||
float avg_Zk; /* накопл. Zk для текущей частоты, Ом */
|
||||
float avg_Xk; /* накопл. Xk для текущей частоты, Ом */
|
||||
float avg_Lk; /* накопл. Lk для текущей частоты, Гн */
|
||||
float avg_Rk; /* накопл. Rk для текущей частоты, Ом */
|
||||
int avg_count; /* счетчик усреднений (RRL_AVG) на частоте */
|
||||
|
||||
/* буфер результатов по частотам */
|
||||
int freq_idx; /* индекс текущей частоты */
|
||||
float freq_Zk[5]; /* Zk(f), Ом */
|
||||
float freq_Rk[5]; /* Rk(f), Ом */
|
||||
float freq_Xk[5]; /* Xk(f), Ом */
|
||||
float freq_Lk[5]; /* Lk(f), Гн */
|
||||
int freq_ready; /* сколько частот заполнено */
|
||||
|
||||
int done; /* флаг завершения эксперимента */
|
||||
} RrlState_t;
|
||||
|
||||
|
||||
/*
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> Lm
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD>: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
*/
|
||||
typedef struct {
|
||||
char step; /* <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: 0-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>., 1-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>., 2-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, 3-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
float timer; /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> / <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20> */
|
||||
float prev_ed; /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ed = Vd - Rs*Id (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) */
|
||||
float integral_psi; /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ?Ed<45>dt, <20><> */
|
||||
float sum_id; /* <20><><EFBFBD><EFBFBD><EFBFBD> Id <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20> */
|
||||
int sample_cnt; /* <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
float avg_Lm; /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> Lm <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
int avg_count; /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
int done; /* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
int first_sample; /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
} LmState_t;
|
||||
|
||||
|
||||
|
||||
void estimate_init(void);
|
||||
void estimate_reset(void);
|
||||
void estimate_start(Estimate_Test_t start_test);
|
||||
Estimate_Test_t estimate_get_step(void);
|
||||
Params_t* estimate_get_params(void);
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
void estimate_process(float vd, float vq, float id, float iq, float dt,
|
||||
float* vd_ref, float* vq_ref, float* freq_ref);
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user