From 9234b4508b25c0c91096aaff616188cb1c16b710 Mon Sep 17 00:00:00 2001 From: Razvalyaev Date: Sat, 6 Dec 2025 18:14:56 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A2=D0=BE=D0=BA=D0=B8=20=D0=B1=D1=8B=D0=BB?= =?UTF-8?q?=D0=B8=20=D1=81=D1=82=D1=80=D0=B0=D0=BD=D0=BD=D1=8B=D0=BC=D0=B8?= =?UTF-8?q?=20=D0=B8=D0=B7-=D0=B7=D0=B0=20=D0=BD=D0=B5=D0=BF=D1=80=D0=B0?= =?UTF-8?q?=D0=B2=D0=B8=D0=BB=D1=8C=D0=BD=D0=BE=D0=B3=D0=BE=20=D0=BE=D0=BF?= =?UTF-8?q?=D1=80=D0=B5=D0=B4=D0=B5=D0=BB=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=BF?= =?UTF-8?q?=D0=B5=D1=80=D0=B5=D1=85=D0=BE=D0=B4=D0=B0=20=D1=87=D0=B5=D1=80?= =?UTF-8?q?=D0=B5=D0=B7=20=D0=BD=D0=BE=D0=BB=D1=8C=20=D0=B8=20=D0=BF=D1=80?= =?UTF-8?q?=D0=B5=D0=B6=D0=B4=D0=B5=D0=B2=D1=80=D0=B5=D0=BC=D0=B5=D0=BD?= =?UTF-8?q?=D0=BD=D0=BE=D0=B3=D0=BE=20=D0=BE=D1=82=D0=BA=D1=80=D1=8B=D1=82?= =?UTF-8?q?=D0=B8=D1=8F=20=D1=82=D0=B8=D1=80=D0=B8=D1=81=D1=82=D0=BE=D1=80?= =?UTF-8?q?=D0=BE=D0=B2.=20=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=20=D0=BF=D0=BE=D0=BB=D0=BE=D1=81=D0=BE=D0=B2=D0=BE=D0=B9?= =?UTF-8?q?=20=D1=84=D0=B8=D0=BB=D1=8C=D1=82=D1=80=20=D0=BD=D0=B0=20=D0=BD?= =?UTF-8?q?=D0=B0=D0=BF=D1=80=D1=8F=D0=B6=D0=B5=D0=BD=D0=B8=D1=8F,=20?= =?UTF-8?q?=D1=87=D1=82=D0=BE=D0=B1=D1=8B=20=D0=BA=D0=BE=D0=BC=D0=BC=D1=83?= =?UTF-8?q?=D1=82=D0=B0=D1=86=D0=B8=D0=B8=20=D1=82=D0=B8=D1=80=D0=B8=D1=81?= =?UTF-8?q?=D1=82=D0=BE=D1=80=D0=BE=D0=B2=20=D0=BD=D0=B5=20=D1=81=D0=BC?= =?UTF-8?q?=D0=B5=D1=89=D0=B0=D0=BB=D0=B8=20=D0=BF=D0=B5=D1=80=D0=B5=D1=85?= =?UTF-8?q?=D0=BE=D0=B4=20=D1=87=D0=B5=D1=80=D0=B5=D0=B7=20=D0=BD=D0=BE?= =?UTF-8?q?=D0=BB=D1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit А также: - общий rms ток считается через сумму rms фаз, а не по векторам - в установку угла добавлен аргумент коррекции - пока только смщеение между фазными и линейными. Фильтр практически не смещает, но еще посмотрим - коэф пид приведены к диапзону 0-1 - ПИД надо еще донастраивать. не нравится пока как он работает И еще не были проверены тайминги. Мб это не будет успевать рассчитываться))) --- MATLAB/app_wrapper/app_io.c | 4 +- MATLAB/upp_init.m | 4 +- MATLAB/upp_r2023.slx | Bin 88850 -> 89045 bytes UPP/AllLibs/MyLibs | 2 +- UPP/Core/PowerMonitor/adc_tools.c | 6 +- UPP/Core/PowerMonitor/power_monitor.c | 32 +- UPP/Core/PowerMonitor/power_monitor.h | 1 + UPP/Core/UPP/angle_control.c | 31 +- UPP/Core/UPP/angle_control.h | 4 +- UPP/Core/UPP/upp_main.c | 9 +- UPP/Core/UPP/upp_params.c | 18 +- UPP/MDK-ARM/UPP.uvoptx | 94 +++--- UPP/MDK-ARM/UPP.uvprojx | 309 +++++++++--------- .../CALC/calc_biquad.m | 179 +++++----- .../CALC/calc_filter.m | 230 +++++++++++++ .../CALC/test_filt.m | 199 +++++++++++ 16 files changed, 792 insertions(+), 330 deletions(-) create mode 100644 Информация для программиста (УПП СП СЭД)/CALC/calc_filter.m create mode 100644 Информация для программиста (УПП СП СЭД)/CALC/test_filt.m diff --git a/MATLAB/app_wrapper/app_io.c b/MATLAB/app_wrapper/app_io.c index 3f2a22a..0264762 100644 --- a/MATLAB/app_wrapper/app_io.c +++ b/MATLAB/app_wrapper/app_io.c @@ -175,8 +175,8 @@ void app_readInputs(const real_T* Buffer) { MB_INTERNAL.param.nominal.U = ReadInputArray(2, 2) * 10; MB_INTERNAL.param.nominal.I = ReadInputArray(2, 3) * 10; - MB_INTERNAL.param.angle.PID_Kp = ReadInputArray(2, 4) * 10000; - MB_INTERNAL.param.angle.PID_Ki = ReadInputArray(2, 5) * 10000; + MB_INTERNAL.param.angle.PID_Kp = ReadInputArray(2, 4) * 65535; + MB_INTERNAL.param.angle.PID_Ki = ReadInputArray(2, 5) * 65535; /*MB_INTERNAL.param.angle.PID_Kd*/dbg_err_limit = ReadInputArray(2, 6); MB_INTERNAL.param.angle.Angle_Max = ReadInputArray(2, 7)/180 * 65535; diff --git a/MATLAB/upp_init.m b/MATLAB/upp_init.m index 6cd838e..b7ce115 100644 --- a/MATLAB/upp_init.m +++ b/MATLAB/upp_init.m @@ -9,4 +9,6 @@ Inom = 25; Fnom = 50; Temperature1 = 2.22; % 20 градусов -Temperature2 = 2.99; % 34 градусов \ No newline at end of file +Temperature2 = 2.99; % 34 градусов + + diff --git a/MATLAB/upp_r2023.slx b/MATLAB/upp_r2023.slx index 5a4f314fa8e3cdf87877715f34978b064baec87c..dbcc52ef28b695f94fc1e31c5fcad23a9dda1299 100644 GIT binary patch delta 73248 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

?3WP4oXeSIU)wy+ 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 delta 72955 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 ZzYy)u!KfHnFeR$_ek4p8^}m0!{{u?J1a1HT diff --git a/UPP/AllLibs/MyLibs b/UPP/AllLibs/MyLibs index 1f7384c..a6b27da 160000 --- a/UPP/AllLibs/MyLibs +++ b/UPP/AllLibs/MyLibs @@ -1 +1 @@ -Subproject commit 1f7384c5edc30469217ca49c6489bdab13460320 +Subproject commit a6b27da4ce1d3cf60a251225beff3e6d0af1193e diff --git a/UPP/Core/PowerMonitor/adc_tools.c b/UPP/Core/PowerMonitor/adc_tools.c index 5d16446..d96f1bb 100644 --- a/UPP/Core/PowerMonitor/adc_tools.c +++ b/UPP/Core/PowerMonitor/adc_tools.c @@ -12,6 +12,7 @@ static void ADC_EnableAllFilters(ADC_Periodic_t *adc) for(int i = 0; i < ADC_NUMB_OF_CHANNELS; i++) { Filter_Start(&adc->filter[i]); +// FilterExpInt_Process(&adc->filter[i], adc->Coefs[i].lZero); } } static void ADC_InitAllFilters(ADC_Periodic_t *adc) @@ -198,8 +199,9 @@ HAL_StatusTypeDef ADC_Handle(ADC_Periodic_t *adc) } - if(Filter_isDataReady(&adc->filter[0])) - adc->f.DataReady = 1; +// if(Filter_isDataReady(&adc->filter[0])) +// adc->f.DataReady = 1; + return HAL_OK; } diff --git a/UPP/Core/PowerMonitor/power_monitor.c b/UPP/Core/PowerMonitor/power_monitor.c index e81d8ec..8706b57 100644 --- a/UPP/Core/PowerMonitor/power_monitor.c +++ b/UPP/Core/PowerMonitor/power_monitor.c @@ -67,6 +67,16 @@ HAL_StatusTypeDef PowerMonitor_Init(PowerMonitor_t *hpm) Filter_Start(&hpm->avg[ADC_TEMP_CHANNELS_START+i]); } + + /* Инициализация фильтра для сглаживания синусоиды*/ + for(int i = 0; i < 2; i++) + { + if(FilterBandPassDerivative_Init(&hpm->ufltr[i], (50.0f*PM_FAST_PERIOD_US/1000000), 0.1)) + return HAL_ERROR; + + Filter_Start(&hpm->ufltr[i]); + } + return HAL_OK; } @@ -115,6 +125,7 @@ void PowerMonitor_SlowCalc(PowerMonitor_t *hpm) /* Расчет всякого для трех фаз отдельно */ float fmean = 0; // средняя частота по трем фазам + float imean = 0; // средний ток по трем фазам float iphase_mean = 0; // средний ток каждой фазы float uphase_mean = 0; // среднее напряжение каждой фазы // Дополнительно посчитаем значения в реальных Вольтах/Амперах @@ -140,6 +151,7 @@ void PowerMonitor_SlowCalc(PowerMonitor_t *hpm) // meas->final.I[i] = iphase_mean*PI/2/SQRT2; /*PI/2 - получить амплитудное, SQRT2 - получить действующее */ iphase_mean = Filter_Process(&hpm->rms[RMS_I+i], meas->slow.I[i]); meas->final.I[i] = Filter_Process(&hpm->rms_exp[RMS_I+i], iphase_mean); + imean += meas->final.I[i]; /* Реальные единицы измерения (Вольты/Амперы) */ meas->real.I[i] = meas->final.I[i]*i_base; @@ -160,7 +172,8 @@ void PowerMonitor_SlowCalc(PowerMonitor_t *hpm) /* Расчет амплитуд трехфазной сети */ float uamp = vector_abs_linear_calc(meas->slow.U[U_AB], meas->slow.U[U_CA])/SQRT2; /* SQRT2 - получить действующее */ - float iamp = vector_abs_phase_calc(meas->slow.I[I_A], meas->slow.I[I_C]); +// float iamp = vector_abs_phase_calc(meas->slow.I[I_A], meas->slow.I[I_C]); + float iamp = imean / 3; meas->final.Uamp = Filter_Process(&hpm->rms_exp[RMS_EXP_U], uamp); meas->final.Iamp = Filter_Process(&hpm->rms_exp[RMS_EXP_I], iamp); @@ -178,16 +191,19 @@ void PowerMonitor_SlowCalc(PowerMonitor_t *hpm) void PowerMonitor_FastCalc(PowerMonitor_t *hpm) { if(hpm == NULL) - return; - /* Считываем АЦП с пересчетами и медианой фильтрацией от выбросов */ - ADC_Handle(&hpm->adc); - - /* Заполняем Напряжения/Токи в о.е. */ + return; float u_base = u2f(PARAM_INTERNAL.nominal.U, 10); float i_base = u2f(PARAM_INTERNAL.nominal.I, 10); PowerMonitor_Measured_t *meas = &hpm->measured; - meas->fast.U[U_AB] = hpm->adc.Data[ADC_CHANNEL_UBA]/u_base; - meas->fast.U[U_CA] = hpm->adc.Data[ADC_CHANNEL_UAC]/u_base; + + /* Считываем АЦП с пересчетами и медианой фильтрацией от выбросов */ + ADC_Handle(&hpm->adc); + + /* Заполняем Напряжения/Токи в о.е. */ + float uba_fast = hpm->adc.Data[ADC_CHANNEL_UBA]/u_base; + float uac_fast = hpm->adc.Data[ADC_CHANNEL_UAC]/u_base; + meas->fast.U[U_AB] = Filter_Process(&hpm->ufltr[U_AB], uba_fast); + meas->fast.U[U_CA] = Filter_Process(&hpm->ufltr[U_CA], uac_fast); meas->fast.U[U_BC] = U_BC_calc(meas->fast.U[U_AB], meas->fast.U[U_CA]); meas->fast.I[I_C] = hpm->adc.Data[ADC_CHANNEL_IC]/i_base; diff --git a/UPP/Core/PowerMonitor/power_monitor.h b/UPP/Core/PowerMonitor/power_monitor.h index d00907c..a9fa87d 100644 --- a/UPP/Core/PowerMonitor/power_monitor.h +++ b/UPP/Core/PowerMonitor/power_monitor.h @@ -105,6 +105,7 @@ typedef struct PowerMonitor_Measured_t measured; ///< Измеренные/рассчитанные величины + FilterBandPassDerivative_t ufltr[2]; ///< Фильтры для сглаживаний напряжений в синусы FilterRMS_t rms[RMS_ALL]; ///< Фильтры для расчета действующего значения Напряжения/Токов FilterExp_t rms_exp[RMS_EXP_ALL]; ///< Фильтры для сглаживания действующего значения Напряжения/Токов +2 для результируюзих U, I FilterAverage_t avg[AVG_ALL]; ///< Фильтры для сглаживания медленных величин АЦП diff --git a/UPP/Core/UPP/angle_control.c b/UPP/Core/UPP/angle_control.c index d9b1427..78a65a2 100644 --- a/UPP/Core/UPP/angle_control.c +++ b/UPP/Core/UPP/angle_control.c @@ -70,7 +70,7 @@ HAL_StatusTypeDef Angle_PID_Init(Angle_Handle_t *hangle, float kp, float ki, flo * @param setpoint Уставка куда регулировать * @param measurement Измеренные регулируемые величины */ -void Angle_PID(Angle_Handle_t *hangle, float setpoint, float measurement) +void Angle_PID(Angle_Handle_t *hangle, float setpoint, float measurement, float Correction) { if(assert_upp(hangle)) return; @@ -81,15 +81,15 @@ void Angle_PID(Angle_Handle_t *hangle, float setpoint, float measurement) /* Ошибка регулирования = уставка - измеренное */ float err = hangle->Iref - hangle->Imeas; /* Ограничение скорости изменения */ - extern float dbg_err_limit; - if(err > dbg_err_limit) - { - err = dbg_err_limit; - } - else if (err < -dbg_err_limit) - { - err = -dbg_err_limit; - } +// extern float dbg_err_limit; +// if(err > dbg_err_limit) +// { +// err = dbg_err_limit; +// } +// else if (err < -dbg_err_limit) +// { +// err = -dbg_err_limit; +// } /* ПИД регулирование */ float open_level = arm_pid_f32(&hangle->pid, err); // 0 - открыть максимально поздно, 1 - открыть макситмально рано @@ -114,7 +114,7 @@ void Angle_PID(Angle_Handle_t *hangle, float setpoint, float measurement) float alpha = alpha_rad/PI*hangle->Config.AngleMax; // угол открытия тиристора в о.е. от максимально заданного /* Выставляем заданный уровень открытия */ - Angle_SetAlpha(hangle, alpha); + Angle_SetAlpha(hangle, alpha, Correction); } /** @@ -136,7 +136,7 @@ void Angle_PID_Reset(Angle_Handle_t *hangle) Filter_Start(&hangle->refFilter); Filter_Process(&hangle->refFilter, 0); - Angle_SetAlpha(hangle, 1); // максимально закрываем + Angle_SetAlpha(hangle, 1, 30); // максимально закрываем Angle_Reset(hangle, UPP_PHASE_A); Angle_Reset(hangle, UPP_PHASE_B); @@ -147,12 +147,13 @@ void Angle_PID_Reset(Angle_Handle_t *hangle) /** * @brief Выставление степени открытия тиристоров. * @param hangle Указатель на таймер -* @param Alpha Угол открытия тиристора в о.е. от 180 градусов: + * @param Alpha Угол открытия тиристора в о.е. от 180 градусов: - 0 - максимально закрыт, - 1 - максимально открыт + * @param Коррекция угла в градусах * @return HAL Status. */ -HAL_StatusTypeDef Angle_SetAlpha(Angle_Handle_t *hangle, float Alpha) +HAL_StatusTypeDef Angle_SetAlpha(Angle_Handle_t *hangle, float Alpha, float Correction) { if(assert_upp(hangle)) return HAL_ERROR; @@ -165,7 +166,7 @@ HAL_StatusTypeDef Angle_SetAlpha(Angle_Handle_t *hangle, float Alpha) Alpha = hangle->Config.AngleMin; // сколько надо выжидать исходя из заданного угла - hangle->alpha_real = Alpha + (30.0/180.0); // 30 градусов - сдвиг между линейными и фазными напряжениями + hangle->alpha_real = Alpha + (Correction/180.0); hangle->alpha = Alpha; diff --git a/UPP/Core/UPP/angle_control.h b/UPP/Core/UPP/angle_control.h index 89bca44..cfad508 100644 --- a/UPP/Core/UPP/angle_control.h +++ b/UPP/Core/UPP/angle_control.h @@ -53,9 +53,9 @@ HAL_StatusTypeDef Angle_PID_Init(Angle_Handle_t *hangle, float kp, float ki, flo // ====== УПРАВЛЕНИЕ ========== /* Управление углом через ПИД регулятор */ -void Angle_PID(Angle_Handle_t *hangle, float setpoint, float measurement); +void Angle_PID(Angle_Handle_t *hangle, float setpoint, float measurement, float Correction); /* Выставление текущего угла открытия тиристоров. */ -HAL_StatusTypeDef Angle_SetAlpha(Angle_Handle_t *hangle, float Angle); +HAL_StatusTypeDef Angle_SetAlpha(Angle_Handle_t *hangle, float Angle, float Correction); /* Установка угла открытия в таймер. */ HAL_StatusTypeDef Angle_Start(Angle_Handle_t *hangle, UPP_Phase_t Phase, float PeriodMs); diff --git a/UPP/Core/UPP/upp_main.c b/UPP/Core/UPP/upp_main.c index b3ab9a8..d0337b9 100644 --- a/UPP/Core/UPP/upp_main.c +++ b/UPP/Core/UPP/upp_main.c @@ -182,9 +182,14 @@ int UPP_While(void) // если пришла команда на остановку if (!upp.call->go) upp.workmode = UPP_Init; - + + // Коррекция для отсчета угла открытия + // 30 градусов - сдвиг между линейными и фазными напряжениями + // 30 градусов - фазовое смщеение эксп. фильтра АЦП для сглаживания напряжений + float Correction = 30 + 0; + // Регулирование тиристоров - Angle_PID(&upp.hangle, u2f(PARAM_PUI.Iref,100), upp.pm.measured.final.Iamp); + Angle_PID(&upp.hangle, u2f(PARAM_PUI.Iref,100), upp.pm.measured.final.Iamp, Correction); // если слишком долгий запуск if((local_time() - upp.StartTick) > (upp.PUI.params->Tdelay*1000)) diff --git a/UPP/Core/UPP/upp_params.c b/UPP/Core/UPP/upp_params.c index 677b8c2..9f36b8e 100644 --- a/UPP/Core/UPP/upp_params.c +++ b/UPP/Core/UPP/upp_params.c @@ -141,15 +141,15 @@ void UPP_Params_ControlInternal(void) { alpha_update = 1; } - if(__CheckParamF(&angle_pid_kp, PARAM_INTERNAL.angle.PID_Kp, 10000)) + if(__CheckParamF(&angle_pid_kp, PARAM_INTERNAL.angle.PID_Kp, 65535)) { alpha_update = 1; } - if(__CheckParamF(&angle_pid_ki, PARAM_INTERNAL.angle.PID_Ki, 10000)) + if(__CheckParamF(&angle_pid_ki, PARAM_INTERNAL.angle.PID_Ki, 65535)) { alpha_update = 1; } - if(__CheckParamF(&angle_pid_kd, PARAM_INTERNAL.angle.PID_Kd, 10000)) + if(__CheckParamF(&angle_pid_kd, PARAM_INTERNAL.angle.PID_Kd, 65535)) { alpha_update = 1; } @@ -279,9 +279,9 @@ HAL_StatusTypeDef UPP_Params_Init(void) /*====== ИНИЦИАЛИЗАЦИЯ МОДУЛЯ angle_control ======*/ // Инициализация ПИД if(Angle_PID_Init(&upp.hangle, - u2f(PARAM_INTERNAL.angle.PID_Kp, 10000), - u2f(PARAM_INTERNAL.angle.PID_Ki, 10000), - u2f(PARAM_INTERNAL.angle.PID_Kd, 10000), + u2f(PARAM_INTERNAL.angle.PID_Kp, 65535), + u2f(PARAM_INTERNAL.angle.PID_Ki, 65535), + u2f(PARAM_INTERNAL.angle.PID_Kd, 65535), PUI_Tnt_CalcAlpha(u2f(PARAM_PUI.Tnt, 1000), PM_SLOW_PERIOD_US)) != HAL_OK) return HAL_ERROR; @@ -456,9 +456,9 @@ void UPP_Params_SetDefault(int pui_default, int internal_default) PARAM_INTERNAL.zc.DebouneCouner = ZERO_CROSS_DEBOUNCE_CNT_DEFAULT; - PARAM_INTERNAL.angle.PID_Kp = ANGLE_PID_KP_COEF_DEFAULT*10000; - PARAM_INTERNAL.angle.PID_Ki = ANGLE_PID_KI_COEF_DEFAULT*10000; - PARAM_INTERNAL.angle.PID_Kd = ANGLE_PID_KD_COEF_DEFAULT*10000; + PARAM_INTERNAL.angle.PID_Kp = ANGLE_PID_KP_COEF_DEFAULT*65535; + PARAM_INTERNAL.angle.PID_Ki = ANGLE_PID_KI_COEF_DEFAULT*65535; + PARAM_INTERNAL.angle.PID_Kd = ANGLE_PID_KD_COEF_DEFAULT*65535; PARAM_INTERNAL.angle.Angle_Max = ANGLE_MAX_PERCENT_DEFAULT*65535; PARAM_INTERNAL.angle.Angle_Min = ANGLE_MIN_PERCENT_DEFAULT*65535; PARAM_INTERNAL.angle.PulseLengthReserve = ANGLE_PULSE_LENGTH_RESERVE_PERCENT_DEFAULT*100; diff --git a/UPP/MDK-ARM/UPP.uvoptx b/UPP/MDK-ARM/UPP.uvoptx index 0d4b4d0..c3a2b14 100644 --- a/UPP/MDK-ARM/UPP.uvoptx +++ b/UPP/MDK-ARM/UPP.uvoptx @@ -1,4 +1,4 @@ - + 1.0 @@ -45,7 +45,7 @@ 79 66 8 - + 1 @@ -104,16 +104,16 @@ 0 0 6 - - - - - - - - - - + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll @@ -142,8 +142,8 @@ 0 0 ..\Core\PowerMonitor\power_monitor.c - - + + @@ -175,19 +175,19 @@ 0 0 - - + + 0 0 0 - - - - - - - - + + + + + + + + 1 1 @@ -222,7 +222,7 @@ 79 66 8 - + 1 @@ -281,16 +281,16 @@ 0 0 6 - - - - - - - - - - + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll @@ -307,7 +307,7 @@ 0 ARMDBGFLAGS - + 0 @@ -325,7 +325,7 @@ -U005600373433510237363934 -O206 -SF10000 -C0 -A0 -I0 -HNlocalhost -HP7184 -P1 -N00("ARM CoreSight SW-DP (ARM Core") -D00(2BA01477) -L00(0) -TO131123 -TC168000000 -TT10000000 -TP21 -TDS800D -TDT1 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32F4xx_1024.FLM -FS08000000 -FL0100000 -FP0($$Device:STM32F417ZGTx$CMSIS\Flash\STM32F4xx_1024.FLM) -WA0 -WE0 -WVCE4 -WS2710 -WM0 -WP2 - + 0 @@ -524,19 +524,19 @@ 0 0 - - + + 0 0 0 - - - - - - - - + + + + + + + + 0 diff --git a/UPP/MDK-ARM/UPP.uvprojx b/UPP/MDK-ARM/UPP.uvprojx index 0c2212a..3def99e 100644 --- a/UPP/MDK-ARM/UPP.uvprojx +++ b/UPP/MDK-ARM/UPP.uvprojx @@ -1,7 +1,10 @@ - - + + + 2.1 +

### uVision Project, (C) Keil Software
+ UPP @@ -17,28 +20,28 @@ Keil.STM32F4xx_DFP.2.17.1 https://www.keil.com/pack/ IRAM(0x20000000-0x2002FFFF) IRAM2(0x10000000-0x1000FFFF) IROM(0x8000000-0x80FFFFF) CLOCK(25000000) FPU2 CPUTYPE("Cortex-M4") TZ - - - + + + 0 - - - - - - - - - - + + + + + + + + + + $$Device:STM32F427ZGTx$CMSIS\SVD\STM32F427x.svd 0 0 - - - - - + + + + + 0 0 @@ -53,15 +56,15 @@ 1 1 1 - + 1 0 0 0 0 - - + + 0 0 0 @@ -70,8 +73,8 @@ 0 0 - - + + 0 0 0 @@ -80,15 +83,15 @@ 0 1 - - + + 0 0 0 0 1 - + 0 @@ -102,8 +105,8 @@ 0 0 3 - - + + 0 @@ -136,11 +139,11 @@ 1 BIN\UL2V8M.DLL - - - - - + + + + + 0 @@ -173,7 +176,7 @@ 0 0 "Cortex-M4" - + 0 0 0 @@ -308,7 +311,7 @@ 0x10000 - + 1 @@ -335,9 +338,9 @@ 0 0 - + USE_HAL_DRIVER,STM32F427xx, ARM_MATH_CM4 - + ../Core/Inc;../Drivers/STM32F4xx_HAL_Driver/Inc;../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy;../Drivers/CMSIS/Device/ST/STM32F4xx/Include;../Drivers/CMSIS/Include;../AllLibs/ExtMemory/Inc;../AllLibs/Modbus/Inc;../AllLibs/MyLibs/MyLibs/Inc;../AllLibs/MyLibs/RTT;../AllLibs/PeriphGeneral/Inc;../Core/Configs;../Core/PowerMonitor;../Core/Thyristors;../Core/UPP @@ -353,10 +356,10 @@ 0 1 - - - - + + + + @@ -366,15 +369,15 @@ 0 1 0 - - - - - - - - - + + + + + + + + + @@ -949,8 +952,8 @@ 2 2 11 - - + + 1 @@ -966,10 +969,10 @@ 2 0 - - - - + + + + @@ -1004,28 +1007,28 @@ Keil.STM32F4xx_DFP.2.17.1 https://www.keil.com/pack/ IRAM(0x20000000,0x00020000) IRAM2(0x10000000,0x00010000) IROM(0x08000000,0x00100000) CPUTYPE("Cortex-M4") FPU2 CLOCK(12000000) ELITTLE - - + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32F4xx_1024 -FS08000000 -FL0100000 -FP0($$Device:STM32F417ZGTx$CMSIS\Flash\STM32F4xx_1024.FLM)) 0 $$Device:STM32F417ZGTx$Drivers\CMSIS\Device\ST\STM32F4xx\Include\stm32f4xx.h - - - - - - - - - + + + + + + + + + $$Device:STM32F417ZGTx$CMSIS\SVD\STM32F41x.svd 0 0 - - - - - + + + + + 0 0 @@ -1040,15 +1043,15 @@ 1 1 1 - + 1 0 0 0 0 - - + + 0 0 0 @@ -1057,8 +1060,8 @@ 0 0 - - + + 0 0 0 @@ -1067,15 +1070,15 @@ 0 0 - - + + 0 0 0 0 1 - + 0 @@ -1089,8 +1092,8 @@ 0 0 3 - - + + 0 @@ -1124,10 +1127,10 @@ 1 BIN\UL2CM3.DLL "" () - - - - + + + + 0 @@ -1160,7 +1163,7 @@ 0 0 "Cortex-M4" - + 0 0 0 @@ -1295,7 +1298,7 @@ 0x10000 - + 1 @@ -1322,9 +1325,9 @@ 0 0 - + USE_HAL_DRIVER,STM32F417xx, ARM_MATH_CM4 - + ../Core/Inc;../Drivers/STM32F4xx_HAL_Driver/Inc;../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy;../Drivers/CMSIS/Device/ST/STM32F4xx/Include;../Drivers/CMSIS/Include;../AllLibs/ExtMemory/Inc;../AllLibs/Modbus/Inc;../AllLibs/MyLibs/MyLibs/Inc;../AllLibs/MyLibs/RTT;../AllLibs/PeriphGeneral/Inc;../Core/Configs;../Core/PowerMonitor;../Core/Thyristors;../Core/UPP @@ -1340,10 +1343,10 @@ 0 1 - - - - + + + + @@ -1353,15 +1356,15 @@ 0 1 0 - - - - - - - - - + + + + + + + + + @@ -1516,8 +1519,8 @@ 2 2 11 - - + + 1 @@ -1546,10 +1549,10 @@ 2 2 - - - - + + + + @@ -1577,8 +1580,8 @@ 2 2 11 - - + + 1 @@ -1607,10 +1610,10 @@ 2 2 - - - - + + + + @@ -1638,8 +1641,8 @@ 2 2 11 - - + + 1 @@ -1668,10 +1671,10 @@ 2 2 - - - - + + + + @@ -1699,8 +1702,8 @@ 2 2 11 - - + + 1 @@ -1729,10 +1732,10 @@ 2 2 - - - - + + + + @@ -1880,8 +1883,8 @@ 2 2 11 - - + + 1 @@ -1910,10 +1913,10 @@ 2 2 - - - - + + + + @@ -2196,8 +2199,8 @@ 2 2 11 - - + + 1 @@ -2213,10 +2216,10 @@ 2 0 - - - - + + + + @@ -2233,32 +2236,34 @@ + - + - + - + - + - - + + - + - - + + - + + @@ -2267,5 +2272,5 @@ - + diff --git a/Информация для программиста (УПП СП СЭД)/CALC/calc_biquad.m b/Информация для программиста (УПП СП СЭД)/CALC/calc_biquad.m index ff9aeb3..8d38f1d 100644 --- a/Информация для программиста (УПП СП СЭД)/CALC/calc_biquad.m +++ b/Информация для программиста (УПП СП СЭД)/CALC/calc_biquad.m @@ -2,10 +2,11 @@ clear all; close all; clc; %% Параметры моделирования -Fs = 100000; % Частота дискретизации [Гц] +Fs = 1/25e-6; % Частота дискретизации [Гц] T = 0.5; % Время моделирования [с] t = 0:1/Fs:T-1/Fs; % Временной вектор N = length(t); % Количество отсчетов +Fsrez = 50; %% Уровни шума для разных каналов noise_levels.voltage = 0.2; % 2% шума для напряжений @@ -17,28 +18,28 @@ fprintf('=== АВТОМАТИЧЕСКИЙ РАСЧЕТ КОЭФФИЦИЕНТО % 1. Полосовой фильтр 45-55 Гц для напряжений % [b_bpf, a_bpf, coeffs_bpf] = BiquadFilterDesigner.bpf(20, 10, Fs); -[b_bpf, a_bpf, coeffs_bpf] = BiquadFilterDesigner.lpf(100, Fs); +[b_bpf, a_bpf, coeffs_bpf] = BiquadFilterDesigner.lpf(Fsrez, Fs); fprintf('1. Полосовой фильтр 45-55 Гц:\n'); BiquadFilterDesigner.generate_c_code(coeffs_bpf, 'voltage_bpf'); % 2. ФНЧ 100 Гц для токов -[b_lpf_current, a_lpf_current, coeffs_lpf_current] = BiquadFilterDesigner.lpf(100, Fs); +[b_lpf_current, a_lpf_current, coeffs_lpf_current] = BiquadFilterDesigner.lpf(Fsrez, Fs); fprintf('2. ФНЧ 100 Гц (токи):\n'); BiquadFilterDesigner.generate_c_code(coeffs_lpf_current, 'current_lpf'); - -% 3. ФНЧ 10 Гц для температур -[b_lpf_temp, a_lpf_temp, coeffs_lpf_temp] = BiquadFilterDesigner.lpf(10, Fs); -fprintf('3. ФНЧ 10 Гц (температуры):\n'); -BiquadFilterDesigner.generate_c_code(coeffs_lpf_temp, 'temperature_lpf'); +% +% % 3. ФНЧ 10 Гц для температур +% [b_lpf_temp, a_lpf_temp, coeffs_lpf_temp] = BiquadFilterDesigner.lpf(10, Fs); +% fprintf('3. ФНЧ 10 Гц (температуры):\n'); +% BiquadFilterDesigner.generate_c_code(coeffs_lpf_temp, 'temperature_lpf'); % Вывод коэффициентов в консоль fprintf('\n=== РАСЧЕТНЫЕ КОЭФФИЦИЕНТЫ ===\n'); fprintf('Напряжение (BPF 45-55 Гц): b = [%.6f, %.6f, %.6f], a = [1, %.6f, %.6f]\n', ... b_bpf, a_bpf(2), a_bpf(3)); -fprintf('Ток (LPF 100 Гц): b = [%.6f, %.6f, %.6f], a = [1, %.6f, %.6f]\n', ... - b_lpf_current, a_lpf_current(2), a_lpf_current(3)); -fprintf('Температура (LPF 10 Гц): b = [%.6f, %.6f, %.6f], a = [1, %.6f, %.6f]\n\n', ... - b_lpf_temp, a_lpf_temp(2), a_lpf_temp(3)); +% fprintf('Ток (LPF 100 Гц): b = [%.6f, %.6f, %.6f], a = [1, %.6f, %.6f]\n', ... +% b_lpf_current, a_lpf_current(2), a_lpf_current(3)); +% fprintf('Температура (LPF 10 Гц): b = [%.6f, %.6f, %.6f], a = [1, %.6f, %.6f]\n\n', ... +% b_lpf_temp, a_lpf_temp(2), a_lpf_temp(3)); %% Генерация тестовых сигналов @@ -53,25 +54,25 @@ f_current = 50; current_clean = 1 * sin(2*pi*f_current*t); %.* ... %(1 + 0.2 * sin(2*pi*2*t)); % амплитудная модуляция 2 Гц -% 3. Температура (медленно меняющийся сигнал) -temperature_clean = 25 + 2 * sin(2*pi*0.1*t) + ... % медленные колебания 0.1 Гц - 0.5 * sin(2*pi*1*t); % быстрые колебания 1 Гц +% % 3. Температура (медленно меняющийся сигнал) +% temperature_clean = 25 + 2 * sin(2*pi*0.1*t) + ... % медленные колебания 0.1 Гц +% 0.5 * sin(2*pi*1*t); % быстрые колебания 1 Гц %% Добавление шума voltage_noisy = voltage_clean + noise_levels.voltage * randn(size(t)); current_noisy = current_clean + noise_levels.current * randn(size(t)); -temperature_noisy = temperature_clean + noise_levels.temperature * randn(size(t)); +% temperature_noisy = temperature_clean + noise_levels.temperature * randn(size(t)); %% Фильтрация сигналов voltage_filtered = filter(b_bpf, a_bpf, voltage_noisy); current_filtered = filter(b_lpf_current, a_lpf_current, current_noisy); -temperature_filtered = filter(b_lpf_temp, a_lpf_temp, temperature_noisy); +% temperature_filtered = filter(b_lpf_temp, a_lpf_temp, temperature_noisy); %% НОРМАЛИЗАЦИЯ УСИЛЕНИЯ (важно для правильного SNR) % Получаем АЧХ для нормализации [h_bpf, f_bpf] = freqz(b_bpf, a_bpf, 1024, Fs); [h_lpf_curr, f_lpf_curr] = freqz(b_lpf_current, a_lpf_current, 1024, Fs); -[h_lpf_temp, f_lpf_temp] = freqz(b_lpf_temp, a_lpf_temp, 1024, Fs); +% [h_lpf_temp, f_lpf_temp] = freqz(b_lpf_temp, a_lpf_temp, 1024, Fs); % Нормализация полосового фильтра на центральной частоте [~, idx_50hz] = min(abs(f_bpf - 50)); @@ -85,11 +86,11 @@ gain_lpf_current = sum(b_lpf_current) / (1 + sum(a_lpf_current(2:end))); if gain_lpf_current > 0 current_filtered = current_filtered / gain_lpf_current; end - -gain_lpf_temp = sum(b_lpf_temp) / (1 + sum(a_lpf_temp(2:end))); -if gain_lpf_temp > 0 - temperature_filtered = temperature_filtered / gain_lpf_temp; -end +% +% gain_lpf_temp = sum(b_lpf_temp) / (1 + sum(a_lpf_temp(2:end))); +% if gain_lpf_temp > 0 +% temperature_filtered = temperature_filtered / gain_lpf_temp; +% end %% ОКНО 1: НАПРЯЖЕНИЕ figure('Name', 'Анализ напряжения'); @@ -213,68 +214,68 @@ text(0.1, 0.4, sprintf('Улучшение: %.1f дБ', improvement_current), 'F text(0.1, 0.2, sprintf('Задержка 50 Гц: %.1f мс', gd_lpf_curr(idx_50hz_curr)/Fs*1000), 'FontSize', 12); title('Статистика фильтрации тока'); axis off; - -%% ОКНО 3: ТЕМПЕРАТУРА -figure('Name', 'Анализ температуры'); - -% Временные характеристики -subplot(2,3,1); -plot(t, temperature_noisy, 'b', 'LineWidth', 1); hold on; -plot(t, temperature_filtered, 'r', 'LineWidth', 2); -plot(t, temperature_clean, 'g--', 'LineWidth', 1); -title('Температура: временная область'); -legend('С шумом', 'Фильтрованный', 'Идеальный', 'Location', 'best'); -xlabel('Время [с]'); ylabel('Температура [°C]'); -grid on; - -% АЧХ фильтра -subplot(2,3,2); -plot(f_lpf_temp, 20*log10(abs(h_lpf_temp)), 'LineWidth', 2); -title('АЧХ: ФНЧ 10 Гц'); -xlabel('Частота [Гц]'); ylabel('Усиление [дБ]'); -grid on; xlim([0, 20]); - -% Спектр фильтрованного сигнала -subplot(2,3,3); -[P_temp, f_temp] = pwelch(temperature_filtered, [], [], 1024, Fs); -plot(f_temp, 10*log10(P_temp), 'LineWidth', 2); -title('Спектр фильтрованной температуры'); -xlabel('Частота [Гц]'); ylabel('Мощность [дБ]'); -grid on; xlim([0, 10]); - -% Групповая задержка -subplot(2,3,4); -[gd_lpf_temp, f_gd_temp] = grpdelay(b_lpf_temp, a_lpf_temp, 1024, Fs); -plot(f_gd_temp, gd_lpf_temp/Fs*1000, 'LineWidth', 2); -title('Групповая задержка фильтра'); -xlabel('Частота [Гц]'); ylabel('Задержка [мс]'); -grid on; xlim([0, 20]); - -% Детальный вид (последне 0.1 секунды) -idx_end_temp = max(1, length(t) - 0.1*Fs + 1):length(t); % последние 100 мс -subplot(2,3,5); -plot(t(idx_end_temp), temperature_noisy(idx_end_temp), 'b', 'LineWidth', 2); hold on; -plot(t(idx_end_temp), temperature_filtered(idx_end_temp), 'r', 'LineWidth', 2); -plot(t(idx_end_temp), temperature_clean(idx_end_temp), 'g--', 'LineWidth', 2); -title('Температура: УВЕЛИЧЕННЫЙ ВИД (900-1000 мс)'); -legend('С шумом', 'Фильтрованный', 'Идеальный', 'Location', 'best'); -xlabel('Время [с]'); ylabel('Температура [°C]'); -grid on; -xlim([t(idx_end_temp(1)) t(idx_end_temp(end))]); - -% Статистика -subplot(2,3,6); -snr_temp_in = snr(temperature_clean, temperature_noisy - temperature_clean); -snr_temp_out = snr(temperature_clean, temperature_filtered - temperature_clean); -improvement_temp = snr_temp_out - snr_temp_in; - -[~, idx_1hz] = min(abs(f_gd_temp - 1)); -text(0.1, 0.8, sprintf('SNR вход: %.1f дБ', snr_temp_in), 'FontSize', 12); -text(0.1, 0.6, sprintf('SNR выход: %.1f дБ', snr_temp_out), 'FontSize', 12); -text(0.1, 0.4, sprintf('Улучшение: %.1f дБ', improvement_temp), 'FontSize', 12); -text(0.1, 0.2, sprintf('Задержка 1 Гц: %.1f мс', gd_lpf_temp(idx_1hz)/Fs*1000), 'FontSize', 12); -title('Статистика фильтрации температуры'); -axis off; +% +% %% ОКНО 3: ТЕМПЕРАТУРА +% figure('Name', 'Анализ температуры'); +% +% % Временные характеристики +% subplot(2,3,1); +% plot(t, temperature_noisy, 'b', 'LineWidth', 1); hold on; +% plot(t, temperature_filtered, 'r', 'LineWidth', 2); +% plot(t, temperature_clean, 'g--', 'LineWidth', 1); +% title('Температура: временная область'); +% legend('С шумом', 'Фильтрованный', 'Идеальный', 'Location', 'best'); +% xlabel('Время [с]'); ylabel('Температура [°C]'); +% grid on; +% +% % АЧХ фильтра +% subplot(2,3,2); +% plot(f_lpf_temp, 20*log10(abs(h_lpf_temp)), 'LineWidth', 2); +% title('АЧХ: ФНЧ 10 Гц'); +% xlabel('Частота [Гц]'); ylabel('Усиление [дБ]'); +% grid on; xlim([0, 20]); +% +% % Спектр фильтрованного сигнала +% subplot(2,3,3); +% [P_temp, f_temp] = pwelch(temperature_filtered, [], [], 1024, Fs); +% plot(f_temp, 10*log10(P_temp), 'LineWidth', 2); +% title('Спектр фильтрованной температуры'); +% xlabel('Частота [Гц]'); ylabel('Мощность [дБ]'); +% grid on; xlim([0, 10]); +% +% % Групповая задержка +% subplot(2,3,4); +% [gd_lpf_temp, f_gd_temp] = grpdelay(b_lpf_temp, a_lpf_temp, 1024, Fs); +% plot(f_gd_temp, gd_lpf_temp/Fs*1000, 'LineWidth', 2); +% title('Групповая задержка фильтра'); +% xlabel('Частота [Гц]'); ylabel('Задержка [мс]'); +% grid on; xlim([0, 20]); +% +% % Детальный вид (последне 0.1 секунды) +% idx_end_temp = max(1, length(t) - 0.1*Fs + 1):length(t); % последние 100 мс +% subplot(2,3,5); +% plot(t(idx_end_temp), temperature_noisy(idx_end_temp), 'b', 'LineWidth', 2); hold on; +% plot(t(idx_end_temp), temperature_filtered(idx_end_temp), 'r', 'LineWidth', 2); +% plot(t(idx_end_temp), temperature_clean(idx_end_temp), 'g--', 'LineWidth', 2); +% title('Температура: УВЕЛИЧЕННЫЙ ВИД (900-1000 мс)'); +% legend('С шумом', 'Фильтрованный', 'Идеальный', 'Location', 'best'); +% xlabel('Время [с]'); ylabel('Температура [°C]'); +% grid on; +% xlim([t(idx_end_temp(1)) t(idx_end_temp(end))]); +% +% % Статистика +% subplot(2,3,6); +% snr_temp_in = snr(temperature_clean, temperature_noisy - temperature_clean); +% snr_temp_out = snr(temperature_clean, temperature_filtered - temperature_clean); +% improvement_temp = snr_temp_out - snr_temp_in; +% +% [~, idx_1hz] = min(abs(f_gd_temp - 1)); +% text(0.1, 0.8, sprintf('SNR вход: %.1f дБ', snr_temp_in), 'FontSize', 12); +% text(0.1, 0.6, sprintf('SNR выход: %.1f дБ', snr_temp_out), 'FontSize', 12); +% text(0.1, 0.4, sprintf('Улучшение: %.1f дБ', improvement_temp), 'FontSize', 12); +% text(0.1, 0.2, sprintf('Задержка 1 Гц: %.1f мс', gd_lpf_temp(idx_1hz)/Fs*1000), 'FontSize', 12); +% title('Статистика фильтрации температуры'); +% axis off; %% Вывод результатов в командное окно fprintf('\n=== ИТОГИ ФИЛЬТРАЦИИ С АВТОРАСЧЕТОМ КОЭФФИЦИЕНТОВ ===\n\n'); @@ -288,7 +289,7 @@ fprintf(' SNR вход: %.1f дБ, выход: %.1f дБ, улучшение: % snr_current_in, snr_current_out, improvement_current); fprintf(' Задержка на 50 Гц: %.1f мс\n\n', gd_lpf_curr(idx_50hz_curr)/Fs*1000); -fprintf('ТЕМПЕРАТУРА (ФНЧ 10 Гц):\n'); -fprintf(' SNR вход: %.1f дБ, выход: %.1f дБ, улучшение: %.1f дБ\n', ... - snr_temp_in, snr_temp_out, improvement_temp); -fprintf(' Задержка на 1 Гц: %.1f мс\n\n', gd_lpf_temp(idx_1hz)/Fs*1000); +% fprintf('ТЕМПЕРАТУРА (ФНЧ 10 Гц):\n'); +% fprintf(' SNR вход: %.1f дБ, выход: %.1f дБ, улучшение: %.1f дБ\n', ... +% snr_temp_in, snr_temp_out, improvement_temp); +% fprintf(' Задержка на 1 Гц: %.1f мс\n\n', gd_lpf_temp(idx_1hz)/Fs*1000); diff --git a/Информация для программиста (УПП СП СЭД)/CALC/calc_filter.m b/Информация для программиста (УПП СП СЭД)/CALC/calc_filter.m new file mode 100644 index 0000000..abedc10 --- /dev/null +++ b/Информация для программиста (УПП СП СЭД)/CALC/calc_filter.m @@ -0,0 +1,230 @@ +%% ===== РАСЧЕТ КОЭФФИЦИЕНТОВ БИКВАДРАТНОГО ФИЛЬТРА 50 Гц ===== +% Запуск: Ctrl+S (сохранить), потом F5 (запустить) + +clear all; close all; clc; + +%% 1. ПАРАМЕТРЫ (МЕНЯТЬ ЗДЕСЬ) +fs = 1/25e-6; % Частота дискретизации (Гц) +fc = 100; % Частота среза 50 Гц +Q = 0.707; % Добротность (0.707 = Баттерворт) +filter_type = 'lpf'; % 'lpf', 'hpf', 'bpf', 'notch' + +test_freq = 55; + +%% 2. РАСЧЕТ КОЭФФИЦИЕНТОВ +w0 = 2 * pi * fc / fs; +alpha = sin(w0) / (2 * Q); +cos_w0 = cos(w0); + +switch filter_type + case 'lpf' % ФНЧ + b0 = (1 - cos_w0) / 2; + b1 = 1 - cos_w0; + b2 = b0; + a0 = 1 + alpha; + a1 = -2 * cos_w0; + a2 = 1 - alpha; + + case 'hpf' % ФВЧ + b0 = (1 + cos_w0) / 2; + b1 = -(1 + cos_w0); + b2 = b0; + a0 = 1 + alpha; + a1 = -2 * cos_w0; + a2 = 1 - alpha; + + case 'bpf' % Полосовой + b0 = alpha; + b1 = 0; + b2 = -alpha; + a0 = 1 + alpha; + a1 = -2 * cos_w0; + a2 = 1 - alpha; + + case 'notch' % Режекторный (50 Гц) + b0 = 1; + b1 = -2 * cos_w0; + b2 = 1; + a0 = 1 + alpha; + a1 = -2 * cos_w0; + a2 = 1 - alpha; +end + +% Нормализация +b = [b0, b1, b2] / a0; +a = [1, a1/a0, a2/a0]; + +% Проверка полюсов +poles = roots([1, a(2), a(3)]); +if any(abs(poles) >= 1) + error('Фильтр НЕУСТОЙЧИВ! Полюса: %s', mat2str(poles)); +end +%% 3. ВЫВОД РЕЗУЛЬТАТОВ +fprintf('\n══════════════════════════════════════════════════\n'); +fprintf('ПАРАМЕТРЫ ФИЛЬТРА:\n'); +fprintf('Тип: %s\n', upper(filter_type)); +fprintf('Частота среза: %.1f Гц\n', fc); +fprintf('Частота дискретизации: %.0f Гц\n', fs); +fprintf('Добротность Q: %.3f\n', Q); +fprintf('══════════════════════════════════════════════════\n'); + +fprintf('\nКОЭФФИЦИЕНТЫ ДЛЯ CMSIS-DSP:\n'); +fprintf('float32_t coeffs[5] = {\n'); +fprintf(' %ff, // b0\n', b(1)); +fprintf(' %ff, // b1\n', b(2)); +fprintf(' %ff, // b2\n', b(3)); +fprintf(' %ff, // a1\n', a(2)); +fprintf(' %ff // a2\n', a(3)); +fprintf('};\n'); + +fprintf('\nФОРМАТ ДЛЯ Biquad_InitDirect:\n'); +fprintf('Biquad_InitDirect(&filter, %.6ff, %.6ff, %.6ff, %.6ff, %.6ff);\n', ... + b(1), b(2), b(3), a(2), a(3)); + +%% 4. ПРОВЕРКА ЧАСТОТНОЙ ХАРАКТЕРИСТИКИ +[h, f] = freqz(b, a, 2048, fs); + +figure(); + +% АЧХ +subplot(1, 2, 1); +plot(f, 20*log10(abs(h)), 'LineWidth', 2); +grid on; hold on; +xline(fc, '--r', 'Частота среза', 'LineWidth', 1.5); +xlim([0, fs/2]); +ylim([-60, 5]); +xlabel('Частота (Гц)'); +ylabel('Усиление (дБ)'); +title(['АЧХ: ' upper(filter_type) ' фильтр ' num2str(fc) ' Гц']); + +% ФЧХ +subplot(1, 2, 2); +plot(f, angle(h)*180/pi, 'LineWidth', 2); +grid on; hold on; +xline(fc, '--r', 'Частота среза', 'LineWidth', 1.5); +xlim([0, fs/2]); +xlabel('Частота (Гц)'); +ylabel('Фазовый сдвиг (градусы)'); +title(['ФЧХ: ' upper(filter_type) ' фильтр ' num2str(fc) ' Гц']); + +%% 4b. ГРАФИК ЗАДЕРЖКИ (40-60 Гц) +figure(); + +% Рассчитываем на нужном диапазоне частот +f_range = 40:0.1:60; % Частоты с шагом 0.1 Гц +h_range = freqz(b, a, f_range, fs); + +% Групповая задержка (численная производная) +phase_unwrapped = unwrap(angle(h_range)); +w_range = 2*pi*f_range/fs; +group_delay = -gradient(phase_unwrapped) ./ gradient(w_range); + +% Фазовая задержка +phase_delay = -angle(h_range) ./ w_range; + +% График 1: Групповая задержка +subplot(1, 2, 1); +plot(f_range, group_delay * 1000, 'LineWidth', 3); +grid on; hold on; +xline(test_freq, '--r', '50 Гц', 'LineWidth', 2, 'FontSize', 12); +xlim([40, 60]); +ylim([0, max(group_delay*1000)*1.1]); +xlabel('Частота (Гц)', 'FontSize', 12); +ylabel('Групповая задержка (мс)', 'FontSize', 12); +title(['Групповая задержка: ' upper(filter_type) ' фильтр'], 'FontSize', 14); + +% Значение на 50 Гц +idx_50 = find(f_range >= test_freq, 1); +if ~isempty(idx_50) + delay_50hz = group_delay(idx_50) * 1000; + plot(test_freq, delay_50hz, 'ro', 'MarkerSize', 15, 'LineWidth', 3); + text(test_freq + 0.5, delay_50hz*1.05, sprintf('%.2f мс', delay_50hz), ... + 'FontSize', 14, 'FontWeight', 'bold', 'BackgroundColor', 'white'); +end + +% График 2: Фазовая задержка +subplot(1, 2, 2); +plot(f_range, phase_delay * 1000, 'LineWidth', 3, 'Color', [0, 0.5, 0]); +grid on; hold on; +xline(test_freq, '--r', '50 Гц', 'LineWidth', 2, 'FontSize', 12); +xlim([40, 60]); +xlabel('Частота (Гц)', 'FontSize', 12); +ylabel('Фазовая задержка (мс)', 'FontSize', 12); +title(['Фазовая задержка: ' upper(filter_type) ' фильтр'], 'FontSize', 14); + +% Значение на 50 Гц +if ~isempty(idx_50) + phase_delay_50hz = phase_delay(idx_50) * 1000; + plot(test_freq, phase_delay_50hz, 'ro', 'MarkerSize', 15, 'LineWidth', 3); + text(test_freq + 0.5, phase_delay_50hz*1.05, sprintf('%.2f мс', phase_delay_50hz), ... + 'FontSize', 14, 'FontWeight', 'bold', 'BackgroundColor', 'white'); +end + +%% 4c. ГРАФИК УСИЛЕНИЯ (40-60 Гц) +figure(); + +% Усиление в дБ +gain_db = 20*log10(abs(h_range)); + +plot(f_range, gain_db, 'LineWidth', 3, 'Color', [0.8, 0, 0]); +grid on; hold on; +xline(test_freq, '--r', '50 Гц', 'LineWidth', 2, 'FontSize', 12); +xlim([40, 60]); +ylim([min(gain_db)-1, max(gain_db)+1]); +xlabel('Частота (Гц)', 'FontSize', 12); +ylabel('Усиление (дБ)', 'FontSize', 12); +title(['Усиление: ' upper(filter_type) ' фильтр (40-60 Гц)'], 'FontSize', 14); + +% Значение на 50 Гц +if ~isempty(idx_50) + gain_50hz = gain_db(idx_50); + plot(test_freq, gain_50hz, 'ro', 'MarkerSize', 15, 'LineWidth', 3); + text(test_freq +0.5, gain_50hz, sprintf('%.2f дБ', gain_50hz), ... + 'FontSize', 14, 'FontWeight', 'bold', 'BackgroundColor', 'white'); +end + +%% 5. ТЕСТОВЫЙ СИГНАЛ +t = 0:1/fs:0.2; % 200 мс +f_test = test_freq; % Тест на 50 Гц +signal = sin(2*pi*f_test*t); + +% Фильтрация +filtered = filter(b, a, signal); + +figure(); +subplot(2, 1, 1); +plot(t, signal, 'b', 'LineWidth', 1.5); +hold on; grid on; +plot(t, filtered, 'r', 'LineWidth', 2); +xlabel('Время (с)'); +ylabel('Амплитуда'); +legend('Исходный', 'После фильтра', 'Location', 'best'); +title(['Тест фильтра: ' num2str(f_test) ' Гц']); + +% Спектр +subplot(2, 1, 2); +[P1, f1] = pwelch(signal, [], [], [], fs); +[P2, f2] = pwelch(filtered, [], [], [], fs); +plot(f1, 10*log10(P1), 'b', 'LineWidth', 1.5); +hold on; grid on; +plot(f2, 10*log10(P2), 'r', 'LineWidth', 2); +xlim([0, 200]); +xlabel('Частота (Гц)'); +ylabel('Мощность (дБ)'); +legend('Исходный', 'После фильтра', 'Location', 'best'); +title('Спектр сигнала'); + + +fprintf('\n══════════════════════════════════════════════════\n'); +fprintf('ЗНАЧЕНИЯ НА %d Гц:\n', f_test); + +if ~isempty(idx_50) + fprintf('Групповая задержка: %.2f мс\n', delay_50hz); + fprintf('Фазовая задержка: %.2f мс\n', phase_delay_50hz); + fprintf('Усиление: %.2f дБ (%.3f в линейном масштабе)\n', ... + gain_50hz, abs(h_range(idx_50))); +else + fprintf('Не удалось рассчитать значения на 50 Гц\n'); +end + +fprintf('══════════════════════════════════════════════════\n'); \ No newline at end of file diff --git a/Информация для программиста (УПП СП СЭД)/CALC/test_filt.m b/Информация для программиста (УПП СП СЭД)/CALC/test_filt.m new file mode 100644 index 0000000..67a2b51 --- /dev/null +++ b/Информация для программиста (УПП СП СЭД)/CALC/test_filt.m @@ -0,0 +1,199 @@ +%% МОДЕЛИРОВАНИЕ ПОЛОСОВОГО ФИЛЬТРА С ДИФФЕРЕНЦИАТОРОМ +clear all; close all; clc; + +%% 1. ПАРАМЕТРЫ ФИЛЬТРА (подставь свои значения) +b0 = 0.000392540911; +b1 = 0.0; +b2 = -0.000392540911; +a1 = -1.99915338; +a2 = 0.999214947; + +% Или рассчитай новые: +center_freq = 50; % Центральная частота (Гц) +sample_freq = 40000; % Частота дискретизации (Гц) +bandwidth = 5; % Ширина полосы (Гц) + +% %% 2. РАСЧЕТ КОЭФФИЦИЕНТОВ (если нужно) +% if 1 % Поставь 0 если используешь готовые коэффициенты выше +% % Отношение частот +% fc_ratio = center_freq / sample_freq; +% bandwidth_ratio = bandwidth / center_freq; +% +% % Расчет коэффициентов полосового фильтра +% w0 = 2 * pi * fc_ratio; +% Q = 1 / bandwidth_ratio; +% alpha = sin(w0) / (2 * Q); +% cos_w0 = cos(w0); +% +% % Коэффициенты биквадратного полосового фильтра +% b0_bp = alpha; +% b1_bp = 0; +% b2_bp = -alpha; +% a0_bp = 1 + alpha; +% a1_bp = -2 * cos_w0; +% a2_bp = 1 - alpha; +% +% % Нормализация (a0 = 1) +% b0 = b0_bp / a0_bp; +% b1 = b1_bp / a0_bp; +% b2 = b2_bp / a0_bp; +% a1 = a1_bp / a0_bp; +% a2 = a2_bp / a0_bp; +% end + +fprintf('Коэффициенты фильтра:\n'); +fprintf('b0 = %.6f\n', b0); +fprintf('b1 = %.6f\n', b1); +fprintf('b2 = %.6f\n', b2); +fprintf('a1 = %.6f\n', a1); +fprintf('a2 = %.6f\n', a2); + +%% 3. ПРОВЕРКА УСТОЙЧИВОСТИ +poles = roots([1, a1, a2]); +fprintf('\nПолюса фильтра:\n'); +for i = 1:length(poles) + fprintf(' pole%d = %.6f %+.6fj (|pole| = %.6f)\n', ... + i, real(poles(i)), imag(poles(i)), abs(poles(i))); +end + +if any(abs(poles) >= 1) + fprintf('⚠️ ВНИМАНИЕ: Фильтр НЕУСТОЙЧИВ!\n'); +else + fprintf('✅ Фильтр устойчив\n'); +end + +%% 5. ЧАСТОТНАЯ ХАРАКТЕРИСТИКА ПОЛНОГО ФИЛЬТРА (с дифференциатором) +% Дифференциатор: H_diff(z) = 1 - z^-1 +b_diff = [1, -1]; +a_diff = 1; + +% % Каскадное соединение: дифференциатор + полосовой фильтр +% b_total = conv(b_diff, b_bp); % Перемножение полиномов +% a_total = conv(a_diff, a_bp); +% полосовой фильтр +b_total = [b0, b1, b2]; +a_total = [1, a1, a2]; + +[h_total, f_total] = freqz(b_total, a_total, 2048, sample_freq); + +figure(); +subplot(1,2,1); +plot(f_total, 20*log10(abs(h_total)), 'r', 'LineWidth', 2); +grid on; hold on; +xline(center_freq, '--r', sprintf('%d Гц', center_freq), 'LineWidth', 1.5); +xlim([0, sample_freq/2]); +ylim([-60, 20]); +xlabel('Частота (Гц)'); +ylabel('Усиление (дБ)'); +title('АЧХ полного фильтра (дифференциатор + полосовой)'); + +subplot(1,2,2); +plot(f_total, angle(h_total)*180/pi, 'r', 'LineWidth', 2); +grid on; hold on; +xline(center_freq, '--r', sprintf('%d Гц', center_freq), 'LineWidth', 1.5); +xlim([0, sample_freq/2]); +xlabel('Частота (Гц)'); +ylabel('Фаза (градусы)'); +title('ФЧХ полного фильтра (дифференциатор + полосовой)'); + +%% 6. МОДЕЛИРОВАНИЕ ВО ВРЕМЕННОЙ ОБЛАСТИ +% Создаем тестовый сигнал +duration = 0.2; % 200 мс +t = 0:1/sample_freq:duration; + +% Сигнал 50 Гц + шум +signal_freq = 50; +signal = sin(2*pi*signal_freq*t) + 0.1*randn(size(t)); + +% Имитация работы твоего кода на C +% Прямая форма II с дифференциатором +x1 = 0; x2 = 0; % Состояния входа фильтра +y1 = 0; y2 = 0; % Состояния выхода фильтра +prev_input = 0; % Для дифференциатора + +filtered_signal = zeros(size(signal)); + +for i = 1:length(signal) + % 1. Дифференциатор + diff = signal(i); + prev_input = signal(i); + + % 2. Полосовой фильтр (прямая форма II) + y = b0*diff + b1*x1 + b2*x2 - a1*y1 - a2*y2; + + % 3. Обновление состояний + x2 = x1; + x1 = diff; + y2 = y1; + y1 = y; + + filtered_signal(i) = y; +end + +% Встроенная функция MATLAB для сравнения +filtered_matlab = filter(b_total, a_total, signal); + +figure(); + +% Сигнал и выход +subplot(2,1,1); +plot(t, signal, 'b', 'LineWidth', 1); +hold on; grid on; +plot(t, filtered_signal, 'r', 'LineWidth', 2); +plot(t, filtered_matlab, 'g--', 'LineWidth', 1); +xlabel('Время (с)'); +ylabel('Амплитуда'); +legend('Исходный сигнал', 'Наш фильтр (имитация C)', 'MATLAB filter()', ... + 'Location', 'best'); +title(sprintf('Тестовый сигнал: %d Гц + помеха 150 Гц + шум', signal_freq)); + +% Ошибка между нашей реализацией и MATLAB +subplot(2,1,2); +error = filtered_signal - filtered_matlab; +plot(t, error, 'k', 'LineWidth', 1); +grid on; +xlabel('Время (с)'); +ylabel('Ошибка'); +title('Разница между нашей реализацией и MATLAB filter()'); +fprintf('\nМаксимальная ошибка: %.2e\n', max(abs(error))); + +%% 7. АНАЛИЗ НА ЧАСТОТЕ 50 Гц +freq_test = 50; +w_test = 2*pi*freq_test/sample_freq; +z = exp(1i*w_test); + +% Передаточная функция полного фильтра +H_z = (b0 + b1*z^-1 + b2*z^-2) / (1 + a1*z^-1 + a2*z^-2) * (1 - z^-1); + +fprintf('\n══════════════════════════════════════════════════\n'); +fprintf('АНАЛИЗ НА %d Гц:\n', freq_test); +fprintf('Усиление: %.3f (%.2f дБ)\n', abs(H_z), 20*log10(abs(H_z))); +fprintf('Фазовый сдвиг: %.1f градусов\n', angle(H_z)*180/pi); +fprintf('Задержка: %.2f мс (фазовая)\n', -angle(H_z)*1000/(2*pi*freq_test)); +fprintf('══════════════════════════════════════════════════\n'); + +%% 8. ГРАФИК ПОЛЮСОВ И НУЛЕЙ +figure(); + +% Единичная окружность +theta = linspace(0, 2*pi, 100); +plot(cos(theta), sin(theta), 'k--', 'LineWidth', 1); +hold on; grid on; axis equal; + +% Полюса (красные кресты) +plot(real(poles), imag(poles), 'rx', 'MarkerSize', 15, 'LineWidth', 2); + +% Нули полосового фильтра +zeros_bp = roots([b0, b1, b2]); +plot(real(zeros_bp), imag(zeros_bp), 'bo', 'MarkerSize', 10, 'LineWidth', 2); + +% Нули дифференциатора (z=1) +plot(1, 0, 'go', 'MarkerSize', 10, 'LineWidth', 2); + +xlim([-1.2, 1.2]); +ylim([-1.2, 1.2]); +xlabel('Re(z)'); +ylabel('Im(z)'); +title('Диаграмма полюсов и нулей фильтра'); +legend('Единичная окружность', 'Полюса', 'Нули полосового фильтра', ... + 'Нуль дифференциатора (z=1)', 'Location', 'best'); \ No newline at end of file