From e69eb0c8c9765b60b34beb4bae27dcf2f2974ded Mon Sep 17 00:00:00 2001 From: Razvalyaev Date: Mon, 17 Nov 2025 12:38:50 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A1=D1=82=D1=80=D1=83=D0=BA=D1=82=D1=83?= =?UTF-8?q?=D1=80=D0=B8=D0=B7=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D0=BD=20PowerM?= =?UTF-8?q?onitor:=20=D1=81=D0=B4=D0=B5=D0=BB=D0=B0=D0=BD=D0=BE=20=D1=80?= =?UTF-8?q?=D0=B0=D0=B7=D0=B4=D0=B5=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BD?= =?UTF-8?q?=D0=B0=20=D0=B1=D1=8B=D1=81=D1=82=D1=80=D0=B8=D0=B5=20=D0=B8=20?= =?UTF-8?q?=D0=BC=D0=B5=D0=B4=D0=BB=D0=B5=D0=BD=D0=BD=D1=8B=D0=B5=20=D0=BE?= =?UTF-8?q?=D0=B1=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Быстрые делаются в прерывании и заполняют с fast Напряжениями/Токами - Медленные делаются в main, с каким-то периодом и работают с slow и mean Напряжениями/Токами/Температурами --- MATLAB/MCU_Wrapper/run_mex.bat | 46 ++++- MATLAB/app_wrapper/app_io.c | 15 +- MATLAB/upp_r2023.slx | Bin 68979 -> 66561 bytes UPP/AllLibs/MyLibs | 2 +- UPP/Core/Configs/upp_config.h | 8 +- UPP/Core/PowerMonitor/adc_tools.c | 3 +- UPP/Core/PowerMonitor/phases_transform.c | 49 +++++ UPP/Core/PowerMonitor/phases_transform.h | 16 ++ UPP/Core/PowerMonitor/power_monitor.c | 134 +++++++++----- UPP/Core/PowerMonitor/power_monitor.h | 50 ++++-- UPP/Core/PowerMonitor/power_protect.c | 8 + UPP/Core/PowerMonitor/power_protect.h | 11 ++ UPP/Core/UPP/upp_control.c | 6 +- UPP/Core/UPP/upp_control.h | 2 +- UPP/MDK-ARM/UPP.uvoptx | 217 +++++++++++++++-------- UPP/MDK-ARM/UPP.uvprojx | 32 +++- 16 files changed, 434 insertions(+), 165 deletions(-) create mode 100644 UPP/Core/PowerMonitor/phases_transform.c create mode 100644 UPP/Core/PowerMonitor/phases_transform.h create mode 100644 UPP/Core/PowerMonitor/power_protect.c create mode 100644 UPP/Core/PowerMonitor/power_protect.h diff --git a/MATLAB/MCU_Wrapper/run_mex.bat b/MATLAB/MCU_Wrapper/run_mex.bat index c30c29f..add764a 100644 --- a/MATLAB/MCU_Wrapper/run_mex.bat +++ b/MATLAB/MCU_Wrapper/run_mex.bat @@ -54,6 +54,33 @@ set code_PERIPH=.\MCU_STM32_Matlab\stm32_matlab_conf.c^ .\MCU_STM32_Matlab\Drivers\STM32_SIMULINK\stm32_matlab_gpio.c^ .\MCU_STM32_Matlab\Drivers\STM32_SIMULINK\stm32_matlab_dma.c^ .\MCU_STM32_Matlab\Drivers\STM32_SIMULINK\stm32_periph_registers.c^ + .\MCU_STM32_Matlab\Drivers\CMSIS\DSP\Source\BasicMathFunctions\BasicMathFunctions.c^ + .\MCU_STM32_Matlab\Drivers\CMSIS\DSP\Source\BasicMathFunctions\BasicMathFunctionsF16.c^ + .\MCU_STM32_Matlab\Drivers\CMSIS\DSP\Source\BayesFunctions\BayesFunctions.c^ + .\MCU_STM32_Matlab\Drivers\CMSIS\DSP\Source\BayesFunctions\BayesFunctionsF16.c^ + .\MCU_STM32_Matlab\Drivers\CMSIS\DSP\Source\CommonTables\CommonTables.c^ + .\MCU_STM32_Matlab\Drivers\CMSIS\DSP\Source\CommonTables\CommonTablesF16.c^ + .\MCU_STM32_Matlab\Drivers\CMSIS\DSP\Source\ComplexMathFunctions\ComplexMathFunctions.c^ + .\MCU_STM32_Matlab\Drivers\CMSIS\DSP\Source\ComplexMathFunctions\ComplexMathFunctionsF16.c^ + .\MCU_STM32_Matlab\Drivers\CMSIS\DSP\Source\ControllerFunctions\ControllerFunctions.c^ + .\MCU_STM32_Matlab\Drivers\CMSIS\DSP\Source\DistanceFunctions\DistanceFunctionsF16.c^ + .\MCU_STM32_Matlab\Drivers\CMSIS\DSP\Source\FastMathFunctions\FastMathFunctions.c^ + .\MCU_STM32_Matlab\Drivers\CMSIS\DSP\Source\FastMathFunctions\FastMathFunctionsF16.c^ + .\MCU_STM32_Matlab\Drivers\CMSIS\DSP\Source\FilteringFunctions\FilteringFunctions.c^ + .\MCU_STM32_Matlab\Drivers\CMSIS\DSP\Source\FilteringFunctions\FilteringFunctionsF16.c^ + .\MCU_STM32_Matlab\Drivers\CMSIS\DSP\Source\InterpolationFunctions\InterpolationFunctions.c^ + .\MCU_STM32_Matlab\Drivers\CMSIS\DSP\Source\InterpolationFunctions\InterpolationFunctionsF16.c^ + .\MCU_STM32_Matlab\Drivers\CMSIS\DSP\Source\MatrixFunctions\MatrixFunctions.c^ + .\MCU_STM32_Matlab\Drivers\CMSIS\DSP\Source\MatrixFunctions\MatrixFunctionsF16.c^ + .\MCU_STM32_Matlab\Drivers\CMSIS\DSP\Source\QuaternionMathFunctions\QuaternionMathFunctions.c^ + .\MCU_STM32_Matlab\Drivers\CMSIS\DSP\Source\StatisticsFunctions\StatisticsFunctions.c^ + .\MCU_STM32_Matlab\Drivers\CMSIS\DSP\Source\StatisticsFunctions\StatisticsFunctionsF16.c^ + .\MCU_STM32_Matlab\Drivers\CMSIS\DSP\Source\SupportFunctions\SupportFunctions.c^ + .\MCU_STM32_Matlab\Drivers\CMSIS\DSP\Source\SupportFunctions\SupportFunctionsF16.c^ + .\MCU_STM32_Matlab\Drivers\CMSIS\DSP\Source\SVMFunctions\SVMFunctions.c^ + .\MCU_STM32_Matlab\Drivers\CMSIS\DSP\Source\SVMFunctions\SVMFunctionsF16.c^ + .\MCU_STM32_Matlab\Drivers\CMSIS\DSP\Source\TransformFunctions\TransformFunctions.c^ + .\MCU_STM32_Matlab\Drivers\CMSIS\DSP\Source\TransformFunctions\TransformFunctionsF16.c^ .\MCU_STM32_Matlab\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal.c^ .\MCU_STM32_Matlab\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_adc.c^ .\MCU_STM32_Matlab\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_adc_ex.c^ @@ -75,7 +102,24 @@ set includes_PERIPH=-I".\MCU_STM32_Matlab\."^ -I".\MCU_STM32_Matlab\Drivers\CMSIS"^ -I".\MCU_STM32_Matlab\Drivers\CMSIS\Device\STM32F4xx"^ -I".\MCU_STM32_Matlab\Drivers\STM32F4xx_HAL_Driver\Inc"^ - -I".\MCU_STM32_Matlab\Drivers\STM32F4xx_HAL_Driver\Inc\Legacy" + -I".\MCU_STM32_Matlab\Drivers\STM32F4xx_HAL_Driver\Inc\Legacy"^ + -I".\MCU_STM32_Matlab\Drivers\CMSIS\DSP\Include"^ + -I".\MCU_STM32_Matlab\Drivers\CMSIS\DSP\PrivateInclude"^ + -I".\MCU_STM32_Matlab\Drivers\CMSIS\DSP\Source\BasicMathFunctions"^ + -I".\MCU_STM32_Matlab\Drivers\CMSIS\DSP\Source\BayesFunctions"^ + -I".\MCU_STM32_Matlab\Drivers\CMSIS\DSP\Source\CommonTables"^ + -I".\MCU_STM32_Matlab\Drivers\CMSIS\DSP\Source\ComplexMathFunctions"^ + -I".\MCU_STM32_Matlab\Drivers\CMSIS\DSP\Source\ControllerFunctions"^ + -I".\MCU_STM32_Matlab\Drivers\CMSIS\DSP\Source\DistanceFunctions"^ + -I".\MCU_STM32_Matlab\Drivers\CMSIS\DSP\Source\FastMathFunctions"^ + -I".\MCU_STM32_Matlab\Drivers\CMSIS\DSP\Source\FilteringFunctions"^ + -I".\MCU_STM32_Matlab\Drivers\CMSIS\DSP\Source\InterpolationFunctions"^ + -I".\MCU_STM32_Matlab\Drivers\CMSIS\DSP\Source\MatrixFunctions"^ + -I".\MCU_STM32_Matlab\Drivers\CMSIS\DSP\Source\QuaternionMathFunctions"^ + -I".\MCU_STM32_Matlab\Drivers\CMSIS\DSP\Source\StatisticsFunctions"^ + -I".\MCU_STM32_Matlab\Drivers\CMSIS\DSP\Source\SupportFunctions"^ + -I".\MCU_STM32_Matlab\Drivers\CMSIS\DSP\Source\SVMFunctions"^ + -I".\MCU_STM32_Matlab\Drivers\CMSIS\DSP\Source\TransformFunctions" :: PERIPH BAT END ::------------------------------------------------------------------------- diff --git a/MATLAB/app_wrapper/app_io.c b/MATLAB/app_wrapper/app_io.c index cd56554..780a0bf 100644 --- a/MATLAB/app_wrapper/app_io.c +++ b/MATLAB/app_wrapper/app_io.c @@ -33,7 +33,7 @@ void Write_PowerMonitor(real_T* Buffer, int ind_port) int nn = 0; for (int i = 0; i < 3; i++) { //0-2 - WriteOutputArray(upp.pm.measured.Ureal[i], ind_port, nn++); + WriteOutputArray(upp.pm.measured.U[i], ind_port, nn++); } for (int i = 0; i < 3; i++) { //3-5 @@ -45,16 +45,19 @@ void Write_PowerMonitor(real_T* Buffer, int ind_port) } for (int i = 0; i < 3; i++) { //9-11 - WriteOutputArray(upp.pm.measured.Ireal[i], ind_port, nn++); + WriteOutputArray(upp.pm.measured.I[i], ind_port, nn++); } for (int i = 0; i < 2; i++) { //12-13 WriteOutputArray(upp.pm.measured.T[i], ind_port, nn++); } - { //14-16 - WriteOutputArray(upp.pm.measured.U_mean, ind_port, nn++); - WriteOutputArray(upp.pm.measured.I_mean, ind_port, nn++); - WriteOutputArray(upp.pm.measured.F_mean, ind_port, nn++); + { //14-19 + WriteOutputArray(upp.pm.measured.Uvec, ind_port, nn++); + WriteOutputArray(upp.pm.measured.Ivec, ind_port, nn++); + WriteOutputArray(upp.pm.measured.Imean[0], ind_port, nn++); + WriteOutputArray(upp.pm.measured.Imean[1], ind_port, nn++); + WriteOutputArray(upp.pm.measured.Imean[2], ind_port, nn++); + WriteOutputArray(upp.pm.measured.Fmean, ind_port, nn++); } } diff --git a/MATLAB/upp_r2023.slx b/MATLAB/upp_r2023.slx index d0868f16b074a07557db2ab2f06092d7e8bf0318..87e6520c10b87cf5156171fa12a500ee668320a7 100644 GIT binary patch delta 51826 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

YY{|xeUB^kJozKw@34vmrx+n3#HU`Fc@qqir^l0 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 delta 54307 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 z=U-n!filter[0])) adc->f.DataReady = 1; + return HAL_OK; } @@ -217,7 +218,7 @@ void ADC_UpdateStatistics(ADC_Periodic_t *adc, uint8_t channel, ADC_StatLevel_t } // Накопление для Avg/RMS - stat->Sum += ABS(value); + stat->Sum += fabsf(value); stat->SumSquares += value * value; stat->SampleCount++; diff --git a/UPP/Core/PowerMonitor/phases_transform.c b/UPP/Core/PowerMonitor/phases_transform.c new file mode 100644 index 0000000..cf6ab63 --- /dev/null +++ b/UPP/Core/PowerMonitor/phases_transform.c @@ -0,0 +1,49 @@ +/** +****************************************************************************** +* @file phases_transform.c +* @brief Функции для преобразования напряжений/токов в многофазных системах +****************************************************************************** +* @details +******************************************************************************/ +#include "phases_transform.h" +#define SQRT3 1.7320508 + +/** + * @brief Рассчитать результирующий вектор трехфазной системы по фазным величинам. + * @return Длина вектора (модуль). + * @note Вызывается в DMA2_Stream0_IRQHandler() для обработки всего, что пришло по DMA. + */ +float vector_abs_phase_calc(float phase1, float phase2) +{ + /* Двухвазная система координат x-y */ + float x = phase1; + float y = (-phase1 - 2*phase2)/SQRT3; + float V = 0; + arm_status res = arm_sqrt_f32(x*x + y*y, &V); + + if(res == ARM_MATH_SUCCESS) + return V; + else + return 0; +} + +/** + * @brief Рассчитать результирующий вектор трехфазной системы по линейным величинам. + * @return Длина вектора (модуль). + * @note Вызывается в DMA2_Stream0_IRQHandler() для обработки всего, что пришло по DMA. + */ +float vector_abs_linear_calc(float phase1, float phase2) +{ + /* Двухвазная система координат x-y */ + float x = (phase1 - phase2)/SQRT3; + float y = -phase1 - phase2; + float V = 0; + arm_status res = arm_sqrt_f32(x*x + y*y, &V); + + if(res == ARM_MATH_SUCCESS) + return V; + else + return 0; +} + + diff --git a/UPP/Core/PowerMonitor/phases_transform.h b/UPP/Core/PowerMonitor/phases_transform.h new file mode 100644 index 0000000..5d78003 --- /dev/null +++ b/UPP/Core/PowerMonitor/phases_transform.h @@ -0,0 +1,16 @@ +/** +****************************************************************************** +* @file phases_transform.h +* @brief Функции для преобразования напряжений/токов в многофазных системах +****************************************************************************** +*****************************************************************************/ +#ifndef _PHASES_TRANSFORM_H_ +#define _PHASES_TRANSFORM_H_ +#include "main.h" + +/* Рассчитать результирующий вектор трехфазной системы по фазным величинам. */ +float vector_abs_phase_calc(float phase1, float phase2); +/* Рассчитать результирующий вектор трехфазной системы по линейным величинам. */ +float vector_abs_linear_calc(float phase1, float phase2); + +#endif /* _PHASES_TRANSFORM_H_ */ diff --git a/UPP/Core/PowerMonitor/power_monitor.c b/UPP/Core/PowerMonitor/power_monitor.c index fa0e51e..aeb06ec 100644 --- a/UPP/Core/PowerMonitor/power_monitor.c +++ b/UPP/Core/PowerMonitor/power_monitor.c @@ -6,9 +6,11 @@ * @details ******************************************************************************/ #include "power_monitor.h" +#include "phases_transform.h" #include "adc.h" #include "tim.h" +static void __SynchAvgFilters(PowerMonitor_t *hpm); HAL_StatusTypeDef PowerMonitor_Init(PowerMonitor_t *hpm) { @@ -59,27 +61,27 @@ HAL_StatusTypeDef PowerMonitor_Init(PowerMonitor_t *hpm) /* Инициализация экпоненциального фильтра медленного алга */ - for(int i = 0; i < 3; i++) + for(int i = 0; i < EXP_ALL; i++) { - if(FilterExp_Init(&hpm->measured.exp[i], (float)MB_INTERNAL.param.pm.mean_alpha/65535)) + if(FilterExp_Init(&hpm->exp[i], (float)MB_INTERNAL.param.pm.mean_alpha/65535)) return HAL_ERROR; - Filter_Start(&hpm->measured.exp[i]); + Filter_Start(&hpm->exp[i]); } /* Инициализация среднего фильтра медленного алга */ for(int i = 0; i < ADC_NUMB_OF_REGULAR_CHANNELS; i++) { - if(FilterAverage_Init(&hpm->measured.avg[i], PM_SLOW_PERIOD_10US, FILTER_MODE_DEFAULT)) - return HAL_ERROR; + if(FilterAverage_Init(&hpm->avg[i], PM_SLOW_PERIOD_CNT, FILTER_MODE_DEFAULT)) + return HAL_ERROR; - Filter_Start(&hpm->measured.avg[i]); + Filter_Start(&hpm->avg[i]); } for(int i = 0; i < ADC_NUMB_OF_T_CHANNELS; i++) { - if(FilterAverage_Init(&hpm->measured.avg[ADC_TEMP_CHANNELS_START+i], PM_TEMP_PERIOD_10US, FILTER_MODE_DEFAULT)) + if(FilterAverage_Init(&hpm->avg[ADC_TEMP_CHANNELS_START+i], PM_TEMP_SLOW_PERIOD_CNT, FILTER_MODE_DEFAULT)) return HAL_ERROR; - Filter_Start(&hpm->measured.avg[ADC_TEMP_CHANNELS_START+i]); + Filter_Start(&hpm->avg[ADC_TEMP_CHANNELS_START+i]); } return HAL_OK; @@ -104,76 +106,87 @@ void PowerMonitor_SlowHandle(PowerMonitor_t *hpm) return; if(!hpm->f.runSlow) return; - hpm->f.runSlow = 0; PowerMonitor_Measured_t *meas = &hpm->measured; + /* Обработка температур */ + float t1 = hpm->adc.Data[ADC_CHANNEL_TEMP1]; + float t2 = hpm->adc.Data[ADC_CHANNEL_TEMP2]; + meas->T[TEMP_1] = Filter_Process(&hpm->avg[ADC_CHANNEL_TEMP1], t1); + meas->T[TEMP_2] = Filter_Process(&hpm->avg[ADC_CHANNEL_TEMP2], t2); + + /* Расчет третьей фазы */ meas->Uslow[U_BC] = -meas->Uslow[U_BA] - meas->Uslow[U_AC]; meas->Islow[I_B] = -meas->Islow[I_A] - meas->Islow[I_C]; - - float umean = 0; - float imean = 0; - float fmean = 0; + + /* Расчет всякого для трех фаз отдельно */ + float fmean = 0; // средняя частота по трем фазам + float iphase_mean = 0; // средний ток каждой фазы for(int i = 0; i < 3; i++) { - umean += ABS(meas->Uslow[i]); - imean += ABS(meas->Islow[i]); - fmean += ABS(meas->F[i]); + /* Получение частоты фазы */ + meas->F[i] = ZC_GetFrequency(&hpm->zc, i) / 2; + fmean += meas->F[i]; + + /* Средний ток фазы */ + iphase_mean = fabsf(meas->Islow[i]); + meas->Imean[i] = Filter_Process(&hpm->exp[EXP_IC+i], iphase_mean); } - umean /=3; - imean /=3; - fmean /=3; + /* Получение средней частоты по трем фазам */ + fmean /= 3; + meas->Fmean = Filter_Process(&hpm->exp[EXP_F], fmean); - meas->U_mean = Filter_Process(&meas->exp[0], umean); - meas->I_mean = Filter_Process(&meas->exp[1], imean); - meas->F_mean = Filter_Process(&meas->exp[2], fmean); + + /* Расчет результирущих векторов трехфазной сети */ + float uvec = vector_abs_linear_calc(meas->Uslow[U_BA], meas->Uslow[U_AC]); + float ivec = vector_abs_phase_calc(meas->Islow[I_A], meas->Islow[I_C]); + meas->Uvec = Filter_Process(&hpm->exp[EXP_U], uvec); + meas->Ivec = Filter_Process(&hpm->exp[EXP_I], ivec); + hpm->f.runSlow = 0; } void PowerMonitor_Handle(PowerMonitor_t *hpm) { if(hpm == NULL) return; - /* Считываем АЦП */ - ADC_Handle(&hpm->adc); + /* Считываем АЦП с пересчетами и медианой фильтрацией от выбросов */ + ADC_Handle(&hpm->adc); - - /* Заполняем величины */ + /* Заполняем величины Напряжений/Токов */ PowerMonitor_Measured_t *meas = &hpm->measured; - meas->Ureal[U_BA] = hpm->adc.Data[ADC_CHANNEL_UBA]; - meas->Ureal[U_AC] = hpm->adc.Data[ADC_CHANNEL_UAC]; - meas->Ureal[U_BC] = -meas->Ureal[U_BA] - meas->Ureal[U_AC]; - meas->Ireal[I_C] = hpm->adc.Data[ADC_CHANNEL_IC]; - meas->Ireal[I_A] = hpm->adc.Data[ADC_CHANNEL_IA]; - meas->Ireal[I_B] = -meas->Ireal[I_A] - meas->Ireal[I_C]; - meas->T[TEMP_1] = hpm->adc.Data[ADC_CHANNEL_TEMP1]; - meas->T[TEMP_2] = hpm->adc.Data[ADC_CHANNEL_TEMP2]; + meas->U[U_BA] = hpm->adc.Data[ADC_CHANNEL_UBA]; + meas->U[U_AC] = hpm->adc.Data[ADC_CHANNEL_UAC]; + meas->U[U_BC] = -meas->U[U_BA] - meas->U[U_AC]; + meas->I[I_C] = hpm->adc.Data[ADC_CHANNEL_IC]; + meas->I[I_A] = hpm->adc.Data[ADC_CHANNEL_IA]; + meas->I[I_B] = -meas->I[I_A] - meas->I[I_C]; /* Преобразуем в относительные единицы (о.е.) */ for(int i = 0; i < 3; i++) { - meas->U[i] = 10*meas->Ureal[i]/MB_INTERNAL.param.nominal.U; - meas->I[i] = 10*meas->Ireal[i]/MB_INTERNAL.param.nominal.I; + meas->Ufast[i] = 10*meas->U[i]/MB_INTERNAL.param.nominal.U; + meas->Ifast[i] = 10*meas->I[i]/MB_INTERNAL.param.nominal.I; } /* Ищем переход через ноль */ - ZC_ProcessAllChannels(&hpm->zc, meas->U, usTick); - for(int i = 0; i < 3; i++) - { - meas->F[i] = ZC_GetFrequency(&hpm->zc, i) / 2; - } + ZC_ProcessAllChannels(&hpm->zc, meas->Ufast, usTick); + /* Вообще фильтры должны рабтоать синхронно, но на всякий синхронизация */ + __SynchAvgFilters(hpm); + /* Накопление Average для медленной фильтрации */ - meas->Uslow[U_BA] = Filter_Process(&meas->avg[0], meas->U[U_BA]); - meas->Uslow[U_AC] = Filter_Process(&meas->avg[1], meas->U[U_AC]); - meas->Islow[I_C] = Filter_Process(&meas->avg[2], meas->I[I_C]); - meas->Islow[I_A] = Filter_Process(&meas->avg[3], meas->I[I_A]); - meas->T[TEMP_1] = Filter_Process(&meas->avg[4], meas->T[TEMP_1]); - meas->T[TEMP_2] = Filter_Process(&meas->avg[5], meas->T[TEMP_2]); + meas->Uslow[U_BA] = Filter_Process(&hpm->avg[ADC_CHANNEL_UBA], meas->Ufast[U_BA]); + meas->Uslow[U_AC] = Filter_Process(&hpm->avg[ADC_CHANNEL_UAC], meas->Ufast[U_AC]); + meas->Islow[I_C] = Filter_Process(&hpm->avg[ADC_CHANNEL_IC], meas->Ifast[I_C]); + meas->Islow[I_A] = Filter_Process(&hpm->avg[ADC_CHANNEL_IA], meas->Ifast[I_A]); + /* Запускаем медленную обработку через slow_period прерываний */ -// if(hpm->isr_cnt == PM_SLOW_PERIOD_10US) +// if(hpm->isr_cnt == PM_SLOW_PERIOD_CNT) /* Запускаем медленную когда фильтры среднего зациклились */ - if(Filter_isDataReady(&meas->avg[0])) + /* Берем 0 фильтр, просто так, потому что они все должны работать синхронно */ + if(Filter_isDataReady(&hpm->avg[0])) { + hpm->isr_cnt = 0; if(!hpm->f.runSlow) { @@ -189,4 +202,27 @@ void PowerMonitor_Handle(PowerMonitor_t *hpm) { hpm->isr_cnt++; } +} + +/* Синхронизация фильтров. Но вообще не должна никогда отрабатывать */ +static void __SynchAvgFilters(PowerMonitor_t *hpm) +{ + uint8_t counts_equal = 1; + uint32_t first_count = hpm->avg[0].count; + for (int i = 1; i < ADC_NUMB_OF_REGULAR_CHANNELS; i++) + { + if (hpm->avg[i].count != first_count) + { + counts_equal = 0; + break; + } + } + if(!counts_equal) + { + for(int i = 0; i < ADC_NUMB_OF_REGULAR_CHANNELS; i++) + { + Filter_ReInit(&hpm->avg[i], hpm->avg[i].size, FILTER_MODE_DEFAULT); + Filter_Start(&hpm->avg[i]); + } + } } \ No newline at end of file diff --git a/UPP/Core/PowerMonitor/power_monitor.h b/UPP/Core/PowerMonitor/power_monitor.h index 3a0d378..6d0d54a 100644 --- a/UPP/Core/PowerMonitor/power_monitor.h +++ b/UPP/Core/PowerMonitor/power_monitor.h @@ -10,6 +10,15 @@ #include "adc_tools.h" #include "zero_cross.h" +/* Индексы экспоненциальных фильтров */ +#define EXP_ALL 6 +#define EXP_U 0 +#define EXP_I 1 +#define EXP_IC 2 +#define EXP_IA 3 +#define EXP_IB 4 +#define EXP_F 5 + typedef struct { @@ -27,24 +36,27 @@ typedef struct typedef struct { - float U_mean; ///< Среднее Напряжение по трем фазам - float I_mean; ///< Средний Ток по трем фазам - float F_mean; ///< Средняя Частота по трем фазам - float Uslow[3]; ///< Напряжение от АЦП (в о.е.) - float Islow[3]; ///< Ток от АЦП (в о.е.) + /* Усредненные величины (о.е.) */ + float Uvec; ///< Результирующий вектор Напряжения по трем фазам + float Ivec; ///< Результирующий вектор Тока по трем фазам + float Imean[3]; ///< Средний Ток по трем фазам + float Fmean; ///< Средняя Частота по трем фазам + + /* Быстрые величины (в о.е.) - обновляются в каждом прерывании АЦП */ + float Ufast[3]; ///< Напряжение + float Ifast[3]; ///< Ток + + /* Медленные величины (в о.е.) - обновляются в main в @ref PowerMonitor_SlowHandle */ + float Uslow[3]; ///< Напряжение + float Islow[3]; ///< Ток + + /* Реальные величины - обновляются кто где, и содержат значения в В/А/Цельсиях */ + float U[3]; ///< Напряжение (обновляется в прерывании АЦП) + float I[3]; ///< Ток (обновляется в прерывании АЦП) + float F[3]; ///< Частота от Zero Cross (обновляется в main) + float T[2]; ///< Температура (обновляется в main) - float U[3]; ///< Напряжение от АЦП (в о.е.) - float I[3]; ///< Ток от АЦП (в о.е.) - float F[3]; ///< Частота от Zero Cross - float T[2]; ///< Температура от АЦП - - - float Ureal[3]; ///< Напряжение от АЦП - float Ireal[3]; ///< Ток от АЦП - - FilterExp_t exp[3]; ///< Фильтры для mean - FilterAverage_t avg[6]; ///< Фильтры для avg }PowerMonitor_Measured_t; typedef struct @@ -55,8 +67,12 @@ typedef struct { ADC_Periodic_t adc; ///< Хендл периодического АЦП ZeroCross_Handle_t zc; ///< Хендл перехода через ноль - PowerMonitor_Filters_t fltr; + PowerMonitor_Measured_t measured; ///< Измеренные/рассчитанные величины + + FilterExp_t exp[EXP_ALL]; ///< Фильтры для mean + FilterAverage_t avg[ADC_NUMB_OF_CHANNELS]; ///< Фильтры для avg + PowerMonitor_Flags_t f; ///< Флаги мониторинга diff --git a/UPP/Core/PowerMonitor/power_protect.c b/UPP/Core/PowerMonitor/power_protect.c new file mode 100644 index 0000000..99d8aeb --- /dev/null +++ b/UPP/Core/PowerMonitor/power_protect.c @@ -0,0 +1,8 @@ +/** +****************************************************************************** +* @file power_protect.c +* @brief Модуль реализующий защиты по Напряжению/Токам/Температуре +****************************************************************************** +* @details +******************************************************************************/ +#include "power_protect.h" \ No newline at end of file diff --git a/UPP/Core/PowerMonitor/power_protect.h b/UPP/Core/PowerMonitor/power_protect.h new file mode 100644 index 0000000..a378e78 --- /dev/null +++ b/UPP/Core/PowerMonitor/power_protect.h @@ -0,0 +1,11 @@ +/** +****************************************************************************** +* @file power_monitor.h +* @brief Модуль реализующий защиты по Напряжению/Токам/Температуре +****************************************************************************** +*****************************************************************************/ +#ifndef _POWER_PROTECT_H_ +#define _POWER_PROTECT_H_ +#include "main.h" + +#endif /* _POWER_PROTECT_H_ */ diff --git a/UPP/Core/UPP/upp_control.c b/UPP/Core/UPP/upp_control.c index d0265bd..e949a30 100644 --- a/UPP/Core/UPP/upp_control.c +++ b/UPP/Core/UPP/upp_control.c @@ -39,7 +39,7 @@ void UPP_Control_InternalParams(void) uint16_t pwm_freq = upp.hpwm.Config.Frequency; uint8_t pwm_pulse_num = upp.hpwm.Config.PulseNumber; // временная переменная для параметров Мониторинга сети - float pm_alpha = upp.pm.measured.exp[0].alpha; + float pm_alpha = upp.pm.exp[0].alpha; for(int i = 0; i < ADC_NUMB_OF_REGULAR_CHANNELS; i++) @@ -87,7 +87,7 @@ void UPP_Control_InternalParams(void) { for(int i = 0; i < 3; i++) { - Filter_ReInit(&upp.pm.measured.exp[i], pm_alpha); + Filter_ReInit(&upp.pm.exp[i], pm_alpha); } } @@ -178,7 +178,7 @@ void UPP_SetDefault(int pui_default, int internal_default) MB_INTERNAL.param.pwm.PulseNumber = PWM_THYR_PULSE_NUMBER_DEFAULT; MB_INTERNAL.param.zc.Hysteresis = ZERO_CROSS_HYSTERESIS_PERCENT_DEFAULT*100; - MB_INTERNAL.param.zc.DebouneCouner = ZERO_CROSS_DEBOUNCE_10US_DEFAULT; + MB_INTERNAL.param.zc.DebouneCouner = ZERO_CROSS_DEBOUNCE_CNT_DEFAULT; //__AngleSetLimit(); } } diff --git a/UPP/Core/UPP/upp_control.h b/UPP/Core/UPP/upp_control.h index 45f5b48..1cbcc53 100644 --- a/UPP/Core/UPP/upp_control.h +++ b/UPP/Core/UPP/upp_control.h @@ -15,7 +15,7 @@ typedef struct unsigned set_default_pui:1; ///< Выставить настройки ПУИ в дефолтные unsigned set_default_internal:1;///< Выставить внутренние настройки в дефолтные unsigned go:1; ///< Запустить УПП - unsigned stop:1; ///< Выставить внутренние настройки в дефолтные + unsigned stop:1; ///< Остановка УПП (авария) unsigned reserved:11; diff --git a/UPP/MDK-ARM/UPP.uvoptx b/UPP/MDK-ARM/UPP.uvoptx index a8f9a56..fd4f4c5 100644 --- a/UPP/MDK-ARM/UPP.uvoptx +++ b/UPP/MDK-ARM/UPP.uvoptx @@ -128,7 +128,24 @@ -U-O142 -O2190 -S0 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32F4xx_1024.FLM -FS08000000 -FL0100000 -FP0($$Device:STM32F427ZGTx$CMSIS\Flash\STM32F4xx_1024.FLM) - + + + 0 + 0 + 156 + 1 +

0
+ 0 + 0 + 0 + 0 + 0 + 0 + ..\Core\PowerMonitor\power_monitor.c + + + + 0 @@ -498,6 +515,30 @@ 0 0 0 + ..\Core\PowerMonitor\zero_cross.c + zero_cross.c + 0 + 0 + + + 3 + 26 + 5 + 0 + 0 + 0 + ..\Core\PowerMonitor\zero_cross.h + zero_cross.h + 0 + 0 + + + 3 + 27 + 1 + 0 + 0 + 0 ..\Core\PowerMonitor\adc_tools.c adc_tools.c 0 @@ -505,7 +546,7 @@ 3 - 26 + 28 5 0 0 @@ -517,25 +558,49 @@ 3 - 27 + 29 1 0 0 0 - ..\Core\PowerMonitor\zero_cross.c - zero_cross.c + ..\Core\PowerMonitor\phases_transform.c + phases_transform.c 0 0 3 - 28 + 30 5 0 0 0 - ..\Core\PowerMonitor\zero_cross.h - zero_cross.h + ..\Core\PowerMonitor\phases_transform.h + phases_transform.h + 0 + 0 + + + 3 + 31 + 1 + 0 + 0 + 0 + ..\Core\PowerMonitor\power_protect.c + power_protect.c + 0 + 0 + + + 3 + 32 + 5 + 0 + 0 + 0 + ..\Core\PowerMonitor\power_protect.h + power_protect.h 0 0 @@ -549,7 +614,7 @@ 0 4 - 29 + 33 1 0 0 @@ -561,7 +626,7 @@ 4 - 30 + 34 1 0 0 @@ -573,7 +638,7 @@ 4 - 31 + 35 1 0 0 @@ -585,7 +650,7 @@ 4 - 32 + 36 1 0 0 @@ -597,7 +662,7 @@ 4 - 33 + 37 1 0 0 @@ -609,7 +674,7 @@ 4 - 34 + 38 1 0 0 @@ -621,7 +686,7 @@ 4 - 35 + 39 1 0 0 @@ -633,7 +698,7 @@ 4 - 36 + 40 1 0 0 @@ -645,7 +710,7 @@ 4 - 37 + 41 1 0 0 @@ -657,7 +722,7 @@ 4 - 38 + 42 1 0 0 @@ -669,7 +734,7 @@ 4 - 39 + 43 1 0 0 @@ -681,7 +746,7 @@ 4 - 40 + 44 1 0 0 @@ -693,7 +758,7 @@ 4 - 41 + 45 1 0 0 @@ -713,7 +778,7 @@ 0 5 - 42 + 46 5 0 0 @@ -725,7 +790,7 @@ 5 - 43 + 47 5 0 0 @@ -737,7 +802,7 @@ 5 - 44 + 48 5 0 0 @@ -749,7 +814,7 @@ 5 - 45 + 49 5 0 0 @@ -761,7 +826,7 @@ 5 - 46 + 50 5 0 0 @@ -773,7 +838,7 @@ 5 - 47 + 51 5 0 0 @@ -785,7 +850,7 @@ 5 - 48 + 52 1 0 0 @@ -797,7 +862,7 @@ 5 - 49 + 53 5 0 0 @@ -817,7 +882,7 @@ 0 6 - 50 + 54 1 0 0 @@ -829,7 +894,7 @@ 6 - 51 + 55 1 0 0 @@ -841,7 +906,7 @@ 6 - 52 + 56 1 0 0 @@ -853,7 +918,7 @@ 6 - 53 + 57 1 0 0 @@ -865,7 +930,7 @@ 6 - 54 + 58 1 0 0 @@ -877,7 +942,7 @@ 6 - 55 + 59 1 0 0 @@ -889,7 +954,7 @@ 6 - 56 + 60 1 0 0 @@ -901,7 +966,7 @@ 6 - 57 + 61 1 0 0 @@ -913,7 +978,7 @@ 6 - 58 + 62 1 0 0 @@ -925,7 +990,7 @@ 6 - 59 + 63 1 0 0 @@ -937,7 +1002,7 @@ 6 - 60 + 64 1 0 0 @@ -949,7 +1014,7 @@ 6 - 61 + 65 1 0 0 @@ -969,7 +1034,7 @@ 0 7 - 62 + 66 1 0 0 @@ -981,7 +1046,7 @@ 7 - 63 + 67 1 0 0 @@ -995,13 +1060,13 @@ PeriphGeneral - 1 + 0 0 0 0 8 - 64 + 68 1 0 0 @@ -1013,7 +1078,7 @@ 8 - 65 + 69 1 0 0 @@ -1025,7 +1090,7 @@ 8 - 66 + 70 1 0 0 @@ -1037,7 +1102,7 @@ 8 - 67 + 71 1 0 0 @@ -1049,7 +1114,7 @@ 8 - 68 + 72 1 0 0 @@ -1069,7 +1134,7 @@ 0 9 - 69 + 73 1 0 0 @@ -1081,7 +1146,7 @@ 9 - 70 + 74 1 0 0 @@ -1093,7 +1158,7 @@ 9 - 71 + 75 1 0 0 @@ -1105,7 +1170,7 @@ 9 - 72 + 76 1 0 0 @@ -1117,7 +1182,7 @@ 9 - 73 + 77 1 0 0 @@ -1129,7 +1194,7 @@ 9 - 74 + 78 1 0 0 @@ -1141,7 +1206,7 @@ 9 - 75 + 79 1 0 0 @@ -1153,7 +1218,7 @@ 9 - 76 + 80 1 0 0 @@ -1165,7 +1230,7 @@ 9 - 77 + 81 1 0 0 @@ -1177,7 +1242,7 @@ 9 - 78 + 82 1 0 0 @@ -1189,7 +1254,7 @@ 9 - 79 + 83 1 0 0 @@ -1201,7 +1266,7 @@ 9 - 80 + 84 1 0 0 @@ -1213,7 +1278,7 @@ 9 - 81 + 85 1 0 0 @@ -1225,7 +1290,7 @@ 9 - 82 + 86 1 0 0 @@ -1237,7 +1302,7 @@ 9 - 83 + 87 1 0 0 @@ -1249,7 +1314,7 @@ 9 - 84 + 88 1 0 0 @@ -1261,7 +1326,7 @@ 9 - 85 + 89 1 0 0 @@ -1273,7 +1338,7 @@ 9 - 86 + 90 1 0 0 @@ -1285,7 +1350,7 @@ 9 - 87 + 91 1 0 0 @@ -1297,7 +1362,7 @@ 9 - 88 + 92 1 0 0 @@ -1309,7 +1374,7 @@ 9 - 89 + 93 1 0 0 @@ -1321,7 +1386,7 @@ 9 - 90 + 94 1 0 0 @@ -1333,7 +1398,7 @@ 9 - 91 + 95 1 0 0 @@ -1345,7 +1410,7 @@ 9 - 92 + 96 1 0 0 @@ -1365,7 +1430,7 @@ 0 10 - 93 + 97 1 0 0 @@ -1385,7 +1450,7 @@ 0 11 - 94 + 98 2 0 0 @@ -1399,7 +1464,7 @@ ::CMSIS - 1 + 0 0 0 1 diff --git a/UPP/MDK-ARM/UPP.uvprojx b/UPP/MDK-ARM/UPP.uvprojx index 5045ead..24baab7 100644 --- a/UPP/MDK-ARM/UPP.uvprojx +++ b/UPP/MDK-ARM/UPP.uvprojx @@ -17,8 +17,8 @@ STM32F427ZGTx STMicroelectronics - Keil.STM32F4xx_DFP.2.16.0 - http://www.keil.com/pack/ + 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 @@ -515,6 +515,16 @@ 5 ..\Core\PowerMonitor\power_monitor.h + + zero_cross.c + 1 + ..\Core\PowerMonitor\zero_cross.c + + + zero_cross.h + 5 + ..\Core\PowerMonitor\zero_cross.h + adc_tools.c 1 @@ -526,14 +536,24 @@ ..\Core\PowerMonitor\adc_tools.h - zero_cross.c + phases_transform.c 1 - ..\Core\PowerMonitor\zero_cross.c + ..\Core\PowerMonitor\phases_transform.c - zero_cross.h + phases_transform.h 5 - ..\Core\PowerMonitor\zero_cross.h + ..\Core\PowerMonitor\phases_transform.h + + + power_protect.c + 1 + ..\Core\PowerMonitor\power_protect.c + + + power_protect.h + 5 + ..\Core\PowerMonitor\power_protect.h