#5 Заработало, но есть ньюансы

- Почему-то функция recalc_time_pwm_minimal_2_xilinx_pwm24 работает только если pwm24->XilinxFreq в формате int, а не unsigned

- Алг нормально стартует почему-то не сразу, а где-то после 4 секунды

- Тесты при разном порядке фаз (дефайн SIMULINK_SEQUENCE = V_PWM24_PHASE_SEQ_XXX)
	- V_PWM24_PHASE_SEQ_NORMAL_ABC: работает красиво, но не правильно.
	- V_PWM24_PHASE_SEQ_NORMAL_BCA: работает вроде кое-как правильно, но почти моментально выходит на скорость 34Гц. Плюс сильный выброс в начале. Мб параметры двигателя неправильные
	- остальные работают через жопу

- Задание (оборотов, мощности, Izad) почему-то никак не влияет

- ШИМ вроде шимиться нормально (учитывая высокую частоту огибающей) closed #4
This commit is contained in:
Razvalyaev 2025-01-14 18:41:34 +03:00
parent c42e0fa1d3
commit 5169ba84d3
5 changed files with 18 additions and 17 deletions

View File

@ -54,7 +54,7 @@ typedef struct { // _iq Gain; // Input: reference gain voltage (pu)
// _iq delta_t; // _iq delta_t;
//int16 Periodmax; //int16 Periodmax;
//int16 PeriodMin; //int16 PeriodMin;
unsigned int XilinxFreq; // Xilinx freq in TIC int XilinxFreq; // Xilinx freq in TIC
unsigned int pwm_minimal_impuls_zero_plus; unsigned int pwm_minimal_impuls_zero_plus;
unsigned int pwm_minimal_impuls_zero; unsigned int pwm_minimal_impuls_zero;

View File

@ -22,10 +22,11 @@ void init28335(void) {
Init_Adc_Variables(); Init_Adc_Variables();
//svgen_pwm24_1.phase_sequence = SIMULINK_SEQUENCE; svgen_pwm24_1.phase_sequence = SIMULINK_SEQUENCE;
//svgen_pwm24_2.phase_sequence = SIMULINK_SEQUENCE; svgen_pwm24_2.phase_sequence = SIMULINK_SEQUENCE;
edrk.zadanie.iq_Izad = _IQ(1); edrk.zadanie.iq_Izad = _IQ(0.5);
edrk.disable_alg_u_disbalance = 1;
//analog_zero.iqU_1 = 2048; //analog_zero.iqU_1 = 2048;
//analog_zero.iqU_2 = 2048; //analog_zero.iqU_2 = 2048;
} //void init28335(void) } //void init28335(void)

View File

@ -33,8 +33,8 @@ void readInputParameters(const real_T *u) {
u[nn++]; u[nn++];
edrk.Mode_ScalarVectorUFConst = ALG_MODE_FOC_OBOROTS; edrk.Mode_ScalarVectorUFConst = ALG_MODE_FOC_OBOROTS;
edrk.zadanie.iq_power_zad = _IQ(u[nn++]); edrk.zadanie.iq_power_zad = _IQ(0.5);
edrk.zadanie.iq_oborots_zad_hz = _IQ(u[nn++]); edrk.zadanie.iq_oborots_zad_hz = _IQ(0.5);
edrk.MasterSlave = MODE_MASTER; edrk.MasterSlave = MODE_MASTER;
edrk.master_theta; edrk.master_theta;

View File

@ -11,13 +11,13 @@
// раскомментировать, если есть сдвиг между обмотками ГЭД (30 град.) // раскомментировать, если есть сдвиг между обмотками ГЭД (30 град.)
#define SHIFT #define SHIFT
#define SIMULINK_SEQUENCE V_PWM24_PHASE_SEQ_REVERS_BAC #define SIMULINK_SEQUENCE V_PWM24_PHASE_SEQ_NORMAL_BCA
/* V_PWM24_PHASE_SEQ_NORMAL_ABC, /* V_PWM24_PHASE_SEQ_NORMAL_ABC, - íĺ ňî
V_PWM24_PHASE_SEQ_NORMAL_BCA, V_PWM24_PHASE_SEQ_NORMAL_BCA, - ďîőîćĺ íŕ ďđŕâäó
V_PWM24_PHASE_SEQ_NORMAL_CAB, V_PWM24_PHASE_SEQ_NORMAL_CAB, - ćîďŕ
V_PWM24_PHASE_SEQ_REVERS_ACB, V_PWM24_PHASE_SEQ_REVERS_ACB, - ćîďŕ
V_PWM24_PHASE_SEQ_REVERS_CBA, V_PWM24_PHASE_SEQ_REVERS_CBA, - ćîďŕ
V_PWM24_PHASE_SEQ_REVERS_BAC V_PWM24_PHASE_SEQ_REVERS_BAC - ćîďŕ
*/ */
// режимы работы (для state) // режимы работы (для state)

View File

@ -74,10 +74,10 @@ void SimulatePWM(TimerSimHandle* tsim, int compare)
{ {
simulateTimAndGetCompare(tsim, compare); simulateTimAndGetCompare(tsim, compare);
simulateActionActionQualifierSubmodule(tsim); simulateActionActionQualifierSubmodule(tsim);
tsim->ciA = tsim->dtsim.ciA_DT; //tsim->ciA = tsim->dtsim.ciA_DT;
tsim->ciB = tsim->dtsim.ciB_DT; //tsim->ciB = tsim->dtsim.ciB_DT;
//simulateDeadBendSubmodule(tsim); simulateDeadBendSubmodule(tsim);
//simulateTripZoneSubmodule(tsim); simulateTripZoneSubmodule(tsim);
} }