From 2b22c5b0eb69e675a858a4d595631461ed749ebd Mon Sep 17 00:00:00 2001 From: Razvalyaev Date: Thu, 20 Nov 2025 10:57:47 +0300 Subject: [PATCH] =?UTF-8?q?TIM3=20=D0=B8=20TIM8=20=D0=BF=D0=BE=D0=BC=D0=B5?= =?UTF-8?q?=D0=BD=D1=8F=D1=82=D1=8B=20=D0=BC=D0=B5=D1=81=D1=82=D0=B0=D0=BC?= =?UTF-8?q?=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit плюс по мелочи: - полряность каналов - симуляция тока для отладки без тока на АЦП - регулируемый запас на максимальнйы угол --- MATLAB/MCU_Wrapper/run_mex.bat | 1 + MATLAB/app_wrapper/app_io.c | 4 +- UPP/Core/Configs/upp_config.h | 17 +-- UPP/Core/PowerMonitor/adc_tools.c | 2 +- UPP/Core/PowerMonitor/power_monitor.c | 2 +- UPP/Core/UPP/pwm_thyristors.c | 23 ++++ UPP/Core/UPP/pwm_thyristors.h | 5 +- UPP/Core/UPP/upp_main.c | 25 ++++- UPP/Core/UPP/upp_params.c | 23 ++-- UPP/Core/UPP/upp_params.h | 2 + UPP/MDK-ARM/UPP.uvoptx | 20 ++-- UPP/UPP.ioc | 105 ++++++++---------- ...атой управления УПП.docx | Bin 55464 -> 54624 bytes 13 files changed, 132 insertions(+), 97 deletions(-) diff --git a/MATLAB/MCU_Wrapper/run_mex.bat b/MATLAB/MCU_Wrapper/run_mex.bat index add764a..8f7f456 100644 --- a/MATLAB/MCU_Wrapper/run_mex.bat +++ b/MATLAB/MCU_Wrapper/run_mex.bat @@ -88,6 +88,7 @@ set code_PERIPH=.\MCU_STM32_Matlab\stm32_matlab_conf.c^ .\MCU_STM32_Matlab\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_dma.c^ .\MCU_STM32_Matlab\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_exti.c^ .\MCU_STM32_Matlab\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_gpio.c^ + .\MCU_STM32_Matlab\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_iwdg.c^ .\MCU_STM32_Matlab\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_pwr.c^ .\MCU_STM32_Matlab\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_pwr_ex.c^ .\MCU_STM32_Matlab\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_rcc.c^ diff --git a/MATLAB/app_wrapper/app_io.c b/MATLAB/app_wrapper/app_io.c index 80d5b11..47b461d 100644 --- a/MATLAB/app_wrapper/app_io.c +++ b/MATLAB/app_wrapper/app_io.c @@ -7,7 +7,7 @@ #include "app_wrapper.h" float dbg[16]; -extern float iref_dbg; +extern float dbg_iref; #define PIN_READ(_verbname_) (_verbname_##_GPIO_Port->ODR & (_verbname_##_Pin)) ? 1 : 0 void Write_UPP_Outputs(real_T* Buffer, int ind_port) @@ -115,7 +115,7 @@ void app_readInputs(const real_T* Buffer) { ADC_Set_Channel_Value(ADC3, 8, ReadInputArray(0,4)); ADC_Set_Channel_Value(ADC3, 10, ReadInputArray(0,5)); - iref_dbg = ReadInputArray(1, 0); + dbg_iref = ReadInputArray(1, 0); upp.call->go = ReadInputArray(1, 1); MB_INTERNAL.param.angle.Angle_Max = ReadInputArray(1, 2)*65535; diff --git a/UPP/Core/Configs/upp_config.h b/UPP/Core/Configs/upp_config.h index cdb6f93..866bb04 100644 --- a/UPP/Core/Configs/upp_config.h +++ b/UPP/Core/Configs/upp_config.h @@ -30,12 +30,13 @@ #define TEMP_1 0 #define TEMP_2 1 - +#define UPP_SIMULATE_I ///< Симулировт токи а не брать с АЦП /** * @addtogroup UPP_DEFAULT_PARAMS Default params for external flash * @ingroup UPP_CONFIG * @brief Дефолтные параметры для внешней памяти. Они применятся по команде или по ошибке + * @details Префиксы * @{ */ @@ -56,12 +57,12 @@ #define NOM_I_A_DEFAULT 5 /* Параметры ПУИ */ -#define PUI_Iref_PERCENT_DEFAULT 150 +#define PUI_Iref_PERCENT_DEFAULT 1.5 #define PUI_Tnt_MS_DEFAULT 300 -#define PUI_Umin_PERCENT_DEFAULT 80 -#define PUI_Umax_PERCENT_DEFAULT 120 -#define PUI_Imax_PERCENT_DEFAULT 99 -#define PUI_Imin_PERCENT_DEFAULT 7 +#define PUI_Umin_PERCENT_DEFAULT 0.8 +#define PUI_Umax_PERCENT_DEFAULT 1.2 +#define PUI_Imax_PERCENT_DEFAULT 0.99 +#define PUI_Imin_PERCENT_DEFAULT 0.07 #define PUI_TiMax_US_DEFAULT 5000 #define PUI_Tdelay_SECONDS_DEFAULT 30 #define PUI_Interlace_EN_DEFAULT 5000 @@ -73,12 +74,13 @@ /* Параметры регулятора угла */ +#define ANGLE_PULSE_LENGTH_RESERVE_PERCENT_DEFAULT 1.0 #define ANGLE_MAX_PERCENT_DEFAULT 0.8 #define ANGLE_MIN_PERCENT_DEFAULT 0.1 #define ANGLE_PID_KP_COEF_DEFAULT 1.0 #define ANGLE_PID_KI_COEF_DEFAULT 0.1 #define ANGLE_PID_KD_COEF_DEFAULT 0 -#define ANGLE_REF_ALPHA_COEF_DEFAULT 0.01 +#define ANGLE_REF_ALPHA_COEF_DEFAULT 0.0001 /* Параметри мониторинга сети */ #define PM_EXP_ALPHA_COEF_DEFAULT 0.01 @@ -115,6 +117,7 @@ #define PM_TEMP_SLOW_PERIOD_CNT 200 ///< Период обновления датчиков температуры в тиках @ref PM_SLOW_PERIOD_CNT #define PM_F_SLOW_PERIOD_CNT 2000 ///< Период обновления частоты в тиках @ref PM_SLOW_PERIOD_CNT +#define UPP_SLOW_TICKS_FOR_INIT 20000 ///< Сколько тиков ждать медленных измерений ждать перед переходом в готовность /* Частоты таймеров в МГц*/ #define US_TIM5_FREQ_MHZ 90 ///< Частота тиков таймера ШИМ (1-4 каналы) diff --git a/UPP/Core/PowerMonitor/adc_tools.c b/UPP/Core/PowerMonitor/adc_tools.c index 7ff342d..7e3841d 100644 --- a/UPP/Core/PowerMonitor/adc_tools.c +++ b/UPP/Core/PowerMonitor/adc_tools.c @@ -104,7 +104,7 @@ HAL_StatusTypeDef ADC_Start(ADC_Periodic_t *adc, float PeriodUs) HAL_TIM_Base_Stop(adc->htim); // Запускаем таймер который будет запускать опрос АЦП с заданным периодом - __HAL_TIM_SET_AUTORELOAD(adc->htim, TIM_MicrosToTick(PeriodUs, ADC_TIM8_FREQ_MZH-1)); + __HAL_TIM_SET_AUTORELOAD_FORCE(adc->htim, TIM_MicrosToTick(PeriodUs, ADC_TIM4_FREQ_MZH-1)); res = HAL_TIM_Base_Start(adc->htim); if(res != HAL_OK) diff --git a/UPP/Core/PowerMonitor/power_monitor.c b/UPP/Core/PowerMonitor/power_monitor.c index 52582c4..e0184f0 100644 --- a/UPP/Core/PowerMonitor/power_monitor.c +++ b/UPP/Core/PowerMonitor/power_monitor.c @@ -99,7 +99,7 @@ HAL_StatusTypeDef PowerMonitor_Init(PowerMonitor_t *hpm) if(FilterAverage_Init(&hpm->avg[AVG_FBA+i], PM_F_SLOW_PERIOD_CNT, FILTER_MODE_DEFAULT)) return HAL_ERROR; - Filter_Start(&hpm->avg[AVG_FBA+i]); + Filter_Start(&hpm->avg[ADC_TEMP_CHANNELS_START+i]); } return HAL_OK; diff --git a/UPP/Core/UPP/pwm_thyristors.c b/UPP/Core/UPP/pwm_thyristors.c index 355d226..0aafba6 100644 --- a/UPP/Core/UPP/pwm_thyristors.c +++ b/UPP/Core/UPP/pwm_thyristors.c @@ -294,6 +294,29 @@ HAL_StatusTypeDef PWM_SetHalfWave(PWM_Handle_t *hpwm, UPP_Phase_t Phase, UPP_Hal } } +/** + * @brief Установка полярности шим. + * @param hpwm Указатель на хендл ШИМ тиристоров + * @param polarity Какая полярность: состяоние бита CCxP + * @return HAL Status. + */ +HAL_StatusTypeDef PWM_SetPolarity(PWM_Handle_t *hpwm, int polarity) +{ + if(assert_upp(hpwm)) + return HAL_ERROR; + + if(polarity) + { + hpwm1.Instance->CCER |= TIM_CCER_CC1P | TIM_CCER_CC2P | TIM_CCER_CC3P | TIM_CCER_CC4P; + hpwm2.Instance->CCER |= TIM_CCER_CC1P | TIM_CCER_CC2P | TIM_CCER_CC3P | TIM_CCER_CC4P; + } + else + { + hpwm1.Instance->CCER &= ~(TIM_CCER_CC1P | TIM_CCER_CC2P | TIM_CCER_CC3P | TIM_CCER_CC4P); + hpwm2.Instance->CCER &= ~(TIM_CCER_CC1P | TIM_CCER_CC2P | TIM_CCER_CC3P | TIM_CCER_CC4P); + } + return HAL_OK; +} /** * @brief Установка режима для канала ШИМ. * @param hpwm Указатель на хендл ШИМ тиристоров diff --git a/UPP/Core/UPP/pwm_thyristors.h b/UPP/Core/UPP/pwm_thyristors.h index 5e01dae..85fc1d3 100644 --- a/UPP/Core/UPP/pwm_thyristors.h +++ b/UPP/Core/UPP/pwm_thyristors.h @@ -14,7 +14,7 @@ #define PWM_ENABLE TIM_OCMODE_PWM2 -#define PWM_DISABLE TIM_OCMODE_FORCED_INACTIVE +#define PWM_DISABLE TIM_OCMODE_FORCED_ACTIVE @@ -99,7 +99,8 @@ HAL_StatusTypeDef PWM_Stop(PWM_Handle_t *hpwm, UPP_Phase_t Phase, uint8_t force_ HAL_StatusTypeDef PWM_SetConfig(PWM_Handle_t *hpwm, uint8_t PhaseMask, uint16_t Frequency, uint8_t PulseNumber); /* Установка полуволны для слежения. */ HAL_StatusTypeDef PWM_SetHalfWave(PWM_Handle_t *hpwm, UPP_Phase_t Phase, UPP_HalfWave_t halfwave); - +/* Установка полярности шим. */ +HAL_StatusTypeDef PWM_SetPolarity(PWM_Handle_t *hpwm, int polarity); // ====== СЕРВИС ========== /* Хендл ШИМ тиристоров. */ HAL_StatusTypeDef PWM_Handle(PWM_Handle_t *hpwm); diff --git a/UPP/Core/UPP/upp_main.c b/UPP/Core/UPP/upp_main.c index 466c74b..c2a2396 100644 --- a/UPP/Core/UPP/upp_main.c +++ b/UPP/Core/UPP/upp_main.c @@ -10,7 +10,8 @@ #include "iwdg.h" UPP_t upp; -float iref_dbg = 0; +float dbg_iref = 1; +int dbg_polarity = 1; // ОСНОВНОЙ ЦИКЛ main.c /** @@ -74,9 +75,12 @@ int UPP_PreWhile(void) */ int UPP_While(void) { + PWM_SetPolarity(&upp.hpwm, dbg_polarity); int retval = 0; if(upp.pm.f.runSlow) { + static uint32_t slow_cnt = 0; + HAL_IWDG_Refresh(&hiwdg); BenchTime_Start(BT_SLOWCALC, angletim.Instance->CNT, HAL_MAX_DELAY); @@ -110,6 +114,14 @@ int UPP_While(void) // Автомат состояний УПП switch(upp.workmode) { + /* Состояние инициализации */ + case UPP_Not_Init: + if(slow_cnt > UPP_SLOW_TICKS_FOR_INIT) + { + upp.workmode = UPP_Ready; + } + break; + /* Состояние готовности */ case UPP_Ready: PWM_Stop(&upp.hpwm, 0, 1); // Останавливаем ВЕСЬ ШИМ @@ -137,9 +149,12 @@ int UPP_While(void) if (!upp.call->go) upp.workmode = UPP_Ready; - // Регулирование тиристоров - Angle_PID(&upp.hangle, iref_dbg, upp.pm.measured.final.Iamp); - + // Регулирование тиристоров + #ifndef UPP_SIMULATE_I // берем с АЦП + Angle_PID(&upp.hangle, dbg_iref, upp.pm.measured.final.Iamp); + #else // симулируем + Angle_PID(&upp.hangle, dbg_iref, upp.hangle.Iref/2); + #endif // если слишком долгий запуск if((local_time() - upp.StartTick) > (upp.PUI.params->Tdelay*1000)) { @@ -166,7 +181,7 @@ int UPP_While(void) UPP_DO.Error(ENABLE); // Находимся до тех пор пока ошибки не будет устранена if(errors.common == Err_None) - upp.workmode = UPP_Ready; + upp.workmode = UPP_Not_Init; retval = 1; break; diff --git a/UPP/Core/UPP/upp_params.c b/UPP/Core/UPP/upp_params.c index c87dbe6..5474851 100644 --- a/UPP/Core/UPP/upp_params.c +++ b/UPP/Core/UPP/upp_params.c @@ -20,6 +20,7 @@ static void __AngleSetLimit(void); */ void UPP_Params_InternalControl(void) { + __AngleSetLimit(); if(upp.call->go) // при запущеном УПП ничего не меняем return; @@ -162,15 +163,11 @@ void UPP_Params_InternalControl(void) if(PWM_SetConfig(&upp.hpwm, pwm_phase_mask, pwm_freq, pwm_pulse_num) == HAL_OK) { pwm_update = 0; - __AngleSetLimit(); } else ERR_PRIVATE_CNT.pwm_reinit_err++; } - if ((upp.hangle.Config.PeriodLimit == 0) || (upp.hangle.Config.PeriodLimit >= 0.999)) - { - __AngleSetLimit(); - } + } @@ -184,12 +181,12 @@ void UPP_SetDefault(int pui_default, int internal_default) { if(pui_default) { - PARAM_PUI.Iref = PUI_Iref_PERCENT_DEFAULT; + PARAM_PUI.Iref = PUI_Iref_PERCENT_DEFAULT*100; PARAM_PUI.Tnt = PUI_Tnt_MS_DEFAULT; - PARAM_PUI.Umin = PUI_Umin_PERCENT_DEFAULT; - PARAM_PUI.Umax = PUI_Umax_PERCENT_DEFAULT; - PARAM_PUI.Imax = PUI_Imax_PERCENT_DEFAULT; - PARAM_PUI.Imin = PUI_Imin_PERCENT_DEFAULT; + PARAM_PUI.Umin = PUI_Umin_PERCENT_DEFAULT*100; + PARAM_PUI.Umax = PUI_Umax_PERCENT_DEFAULT*100; + PARAM_PUI.Imax = PUI_Imax_PERCENT_DEFAULT*100; + PARAM_PUI.Imin = PUI_Imin_PERCENT_DEFAULT*100; PARAM_PUI.TiMax = PUI_TiMax_US_DEFAULT; PARAM_PUI.Tdelay = PUI_Tdelay_SECONDS_DEFAULT; PARAM_PUI.Interlace = PUI_Interlace_EN_DEFAULT; @@ -234,6 +231,7 @@ void UPP_SetDefault(int pui_default, int internal_default) PARAM_INTERNAL.angle.PID_ExpAlpha = ANGLE_REF_ALPHA_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; //__AngleSetLimit(); } } @@ -243,9 +241,10 @@ void UPP_SetDefault(int pui_default, int internal_default) // Перерасчет максимально допустимого угла static void __AngleSetLimit(void) { // Сколько пачка ипульсов занимает процентов от всего периода - float pulses_percent_of_period = (((float)PARAM_INTERNAL.pwm.PulseNumber / PARAM_INTERNAL.pwm.Frequency) * 1000) / ANGLE_PERIOD_MS(NOM_F_HZ_DEFAULT); + float pulses_percent_of_period = (((float)PARAM_INTERNAL.pwm.PulseNumber / PARAM_INTERNAL.pwm.Frequency) * 1000) / ANGLE_PERIOD_MS(upp.pm.measured.final.Fmean); // Вычитаем этот процент из 1 - получаем максимально безопасный угол - float angle_limit = 1 - pulses_percent_of_period*1.5; // добавляем запас в половину пачки импульсов + float angle_limit = 1 - pulses_percent_of_period; + angle_limit -= pulses_percent_of_period*to_float(PARAM_INTERNAL.angle.PulseLengthReserve, 100); // добавляем запас в PulseLengthReserve процентов от пачки импульсов Angle_SetLimit(&upp.hangle, angle_limit); } diff --git a/UPP/Core/UPP/upp_params.h b/UPP/Core/UPP/upp_params.h index d502b1e..9f80af0 100644 --- a/UPP/Core/UPP/upp_params.h +++ b/UPP/Core/UPP/upp_params.h @@ -80,6 +80,8 @@ typedef struct /* Параметры Угла */ struct { + uint16_t PulseLengthReserve;/*!< @brief Сколько запаса закладывать на длительность пачки импульсов [Проценты] @ref __AngleSetLimit + @details Пример: 100% - будет запас в одну пачку импульсов */ uint16_t Angle_Max; ///< Максимальный угол открытия тиристора [0..1 x 65535] uint16_t Angle_Min; ///< Минимальный угол открытия тиристора [0..1 x 65535] uint16_t PID_Kp; ///< Пропорциональный коэфициент ПИ регулятора угла [x 10000] diff --git a/UPP/MDK-ARM/UPP.uvoptx b/UPP/MDK-ARM/UPP.uvoptx index d174165..511f869 100644 --- a/UPP/MDK-ARM/UPP.uvoptx +++ b/UPP/MDK-ARM/UPP.uvoptx @@ -363,52 +363,52 @@ 0 1 - upp,0x0A + upp.call,0x0A 1 1 - uwTick,0x0A + upp 2 1 - errors.prvt.f.err,0x0A + uwTick 3 1 - errors.prvt.cnt,0x0A + errors.prvt.f.err 4 1 - hbt,0x0A + errors.prvt.cnt 5 1 - htim5.Instance->CNT,0x0A + hbt 6 1 - htim5.Instance->PSC,0x0A + sysclockfreq,0x0A 7 1 - SystemCoreClock,0x0A + \\Debug_F417\../Core/UPP/upp_main.c\upp.pm.avg[5].dataProcessing 8 1 - sysclockfreq,0x0A + dbg_polarity,0x0A 9 1 - \\Debug_F417\../Core/UPP/upp_main.c\upp.pm.avg[5].dataProcessing + dbg_iref diff --git a/UPP/UPP.ioc b/UPP/UPP.ioc index 54bd3a7..458edce 100644 --- a/UPP/UPP.ioc +++ b/UPP/UPP.ioc @@ -7,7 +7,7 @@ ADC3.Channel-19\#ChannelRegularConversion=ADC_CHANNEL_8 ADC3.Channel-20\#ChannelRegularConversion=ADC_CHANNEL_10 ADC3.DMAContinuousRequests=ENABLE ADC3.EOCSelection=ADC_EOC_SEQ_CONV -ADC3.ExternalTrigConv=ADC_EXTERNALTRIGCONV_T8_TRGO +ADC3.ExternalTrigConv=ADC_EXTERNALTRIGCONV_T3_TRGO ADC3.IPParameters=Rank-15\#ChannelRegularConversion,Channel-15\#ChannelRegularConversion,SamplingTime-15\#ChannelRegularConversion,NbrOfConversionFlag,NbrOfConversion,ScanConvMode,Rank-16\#ChannelRegularConversion,Channel-16\#ChannelRegularConversion,SamplingTime-16\#ChannelRegularConversion,Rank-17\#ChannelRegularConversion,Channel-17\#ChannelRegularConversion,SamplingTime-17\#ChannelRegularConversion,Rank-18\#ChannelRegularConversion,Channel-18\#ChannelRegularConversion,SamplingTime-18\#ChannelRegularConversion,Rank-19\#ChannelRegularConversion,Channel-19\#ChannelRegularConversion,SamplingTime-19\#ChannelRegularConversion,Rank-20\#ChannelRegularConversion,Channel-20\#ChannelRegularConversion,SamplingTime-20\#ChannelRegularConversion,ExternalTrigConv,EOCSelection,DMAContinuousRequests ADC3.NbrOfConversion=6 ADC3.NbrOfConversionFlag=1 @@ -94,25 +94,25 @@ Mcu.Pin23=PB11 Mcu.Pin24=PB13 Mcu.Pin25=PG6 Mcu.Pin26=PC6 -Mcu.Pin27=PC7 -Mcu.Pin28=PC8 -Mcu.Pin29=PC9 +Mcu.Pin27=PC8 +Mcu.Pin28=PC9 +Mcu.Pin29=PA8 Mcu.Pin3=PE5 -Mcu.Pin30=PA8 -Mcu.Pin31=PA9 -Mcu.Pin32=PA10 -Mcu.Pin33=PA11 -Mcu.Pin34=PA12 -Mcu.Pin35=PA13 -Mcu.Pin36=PA14 -Mcu.Pin37=PA15 -Mcu.Pin38=PC10 -Mcu.Pin39=PC11 +Mcu.Pin30=PA9 +Mcu.Pin31=PA10 +Mcu.Pin32=PA11 +Mcu.Pin33=PA12 +Mcu.Pin34=PA13 +Mcu.Pin35=PA14 +Mcu.Pin36=PA15 +Mcu.Pin37=PC10 +Mcu.Pin38=PC11 +Mcu.Pin39=PC12 Mcu.Pin4=PE6 -Mcu.Pin40=PC12 -Mcu.Pin41=PD2 -Mcu.Pin42=PD3 -Mcu.Pin43=PD6 +Mcu.Pin40=PD2 +Mcu.Pin41=PD3 +Mcu.Pin42=PD6 +Mcu.Pin43=PG9 Mcu.Pin44=PG12 Mcu.Pin45=PG15 Mcu.Pin46=PB3 @@ -133,18 +133,17 @@ Mcu.Pin59=VP_TIM2_VS_no_output1 Mcu.Pin6=PC14/OSC32_IN Mcu.Pin60=VP_TIM2_VS_no_output2 Mcu.Pin61=VP_TIM2_VS_no_output3 -Mcu.Pin62=VP_TIM3_VS_ControllerModeTrigger -Mcu.Pin63=VP_TIM3_VS_ClockSourceINT -Mcu.Pin64=VP_TIM3_VS_ClockSourceITR -Mcu.Pin65=VP_TIM3_VS_OPM -Mcu.Pin66=VP_TIM5_VS_ClockSourceINT -Mcu.Pin67=VP_TIM8_VS_ClockSourceINT -Mcu.Pin68=VP_TIM11_VS_ClockSourceINT -Mcu.Pin69=VP_TIM12_VS_ClockSourceINT +Mcu.Pin62=VP_TIM3_VS_ClockSourceINT +Mcu.Pin63=VP_TIM5_VS_ClockSourceINT +Mcu.Pin64=VP_TIM8_VS_ControllerModeTrigger +Mcu.Pin65=VP_TIM8_VS_ClockSourceINT +Mcu.Pin66=VP_TIM8_VS_ClockSourceITR +Mcu.Pin67=VP_TIM11_VS_ClockSourceINT +Mcu.Pin68=VP_TIM12_VS_ClockSourceINT Mcu.Pin7=PC15/OSC32_OUT Mcu.Pin8=PF6 Mcu.Pin9=PF7 -Mcu.PinsNb=70 +Mcu.PinsNb=69 Mcu.ThirdPartyNb=0 Mcu.UserConstants=mb_huart,huart3;mbdbg_htim,htim11;PWM_CHANNEL_1,TIM_CHANNEL_1;PWM_CHANNEL_2,TIM_CHANNEL_2;PWM_CHANNEL_3,TIM_CHANNEL_3;PWM_CHANNEL_4,TIM_CHANNEL_4;mem_hspi,hspi3;PWM_CHANNEL_5,TIM_CHANNEL_3;PWM_CHANNEL_6,TIM_CHANNEL_4;mb_htim,htim12;adc_tim,htim8;usTick,ustim.Instance->CNT;hpwm2,htim3;mb_dbg_huart,huart6;ustim,htim5;hpwm1,htim1;ANGLE_CHANNEL_1,TIM_CHANNEL_1;ANGLE_CHANNEL_2,TIM_CHANNEL_2;ANGLE_CHANNEL_3,TIM_CHANNEL_3;angletim,htim2 Mcu.UserName=STM32F427ZGTx @@ -262,10 +261,7 @@ PC12.GPIOParameters=GPIO_Label PC12.GPIO_Label=UM_SPI_MOSI PC12.Mode=Full_Duplex_Master PC12.Signal=SPI3_MOSI -PC13.GPIOParameters=PinState,GPIO_Label -PC13.GPIO_Label=DO3 PC13.Locked=true -PC13.PinState=GPIO_PIN_SET PC13.Signal=GPIO_Output PC14/OSC32_IN.Mode=LSE-External-Oscillator PC14/OSC32_IN.Signal=RCC_OSC32_IN @@ -275,18 +271,12 @@ PC6.GPIOParameters=GPIO_Label PC6.GPIO_Label=SCIT1 PC6.Mode=Asynchronous PC6.Signal=USART6_TX -PC7.GPIOParameters=GPIO_Label -PC7.GPIO_Label=SCIR2 -PC7.Mode=Asynchronous -PC7.Signal=USART6_RX PC8.GPIOParameters=GPIO_Label PC8.GPIO_Label=PWM5 -PC8.Locked=true -PC8.Signal=S_TIM3_CH3 +PC8.Signal=S_TIM8_CH3 PC9.GPIOParameters=GPIO_Label PC9.GPIO_Label=PWM6 -PC9.Locked=true -PC9.Signal=S_TIM3_CH4 +PC9.Signal=S_TIM8_CH4 PD2.GPIOParameters=GPIO_Label PD2.GPIO_Label=DIN3 PD2.Locked=true @@ -357,8 +347,6 @@ PF9.GPIOParameters=GPIO_Label PF9.GPIO_Label=AI_Ia PF9.Mode=IN7 PF9.Signal=ADC3_IN7 -PG12.GPIOParameters=GPIO_Label -PG12.GPIO_Label=ERR_24V PG12.Locked=true PG12.Signal=GPIO_Input PG15.GPIOParameters=GPIO_Label @@ -370,6 +358,10 @@ PG6.GPIO_Label=UM_SPI_CS PG6.GPIO_PuPd=GPIO_PULLDOWN PG6.Locked=true PG6.Signal=GPIO_Output +PG9.GPIOParameters=GPIO_Label +PG9.GPIO_Label=SCIR2 +PG9.Mode=Asynchronous +PG9.Signal=USART6_RX PH0/OSC_IN.Mode=HSE-External-Oscillator PH0/OSC_IN.Signal=RCC_OSC_IN PH1/OSC_OUT.Mode=HSE-External-Oscillator @@ -460,10 +452,10 @@ SH.S_TIM1_CH3.0=TIM1_CH3,PWM Generation3 CH3 SH.S_TIM1_CH3.ConfNb=1 SH.S_TIM1_CH4.0=TIM1_CH4,PWM Generation4 CH4 SH.S_TIM1_CH4.ConfNb=1 -SH.S_TIM3_CH3.0=TIM3_CH3,PWM Generation3 CH3 -SH.S_TIM3_CH3.ConfNb=1 -SH.S_TIM3_CH4.0=TIM3_CH4,PWM Generation4 CH4 -SH.S_TIM3_CH4.ConfNb=1 +SH.S_TIM8_CH3.0=TIM8_CH3,PWM Generation3 CH3 +SH.S_TIM8_CH3.ConfNb=1 +SH.S_TIM8_CH4.0=TIM8_CH4,PWM Generation4 CH4 +SH.S_TIM8_CH4.ConfNb=1 SPI3.CalculateBaudRate=22.5 MBits/s SPI3.Direction=SPI_DIRECTION_2LINES SPI3.IPParameters=VirtualType,Mode,Direction,CalculateBaudRate @@ -487,17 +479,18 @@ TIM2.IPParameters=Channel-Output Compare2 No Output,Channel-Output Compare1 No O TIM2.OCMode_1=TIM_OCMODE_TIMING TIM2.OCMode_2=TIM_OCMODE_TIMING TIM2.OCMode_3=TIM_OCMODE_TIMING -TIM3.Channel-PWM\ Generation3\ CH3=TIM_CHANNEL_3 -TIM3.Channel-PWM\ Generation4\ CH4=TIM_CHANNEL_4 -TIM3.IPParameters=Channel-PWM Generation3 CH3,Channel-PWM Generation4 CH4,TIM_MasterSlaveMode,TIM_MasterOutputTrigger -TIM3.TIM_MasterOutputTrigger=TIM_TRGO_RESET +TIM3.IPParameters=TIM_MasterSlaveMode,TIM_MasterOutputTrigger +TIM3.TIM_MasterOutputTrigger=TIM_TRGO_UPDATE TIM3.TIM_MasterSlaveMode=TIM_MASTERSLAVEMODE_ENABLE TIM5.IPParameters=Prescaler TIM5.Prescaler=90-1 -TIM8.IPParameters=Prescaler,Period,TIM_MasterSlaveMode,TIM_MasterOutputTrigger -TIM8.Period=1800-1 +TIM8.Channel-PWM\ Generation3\ CH3=TIM_CHANNEL_3 +TIM8.Channel-PWM\ Generation4\ CH4=TIM_CHANNEL_4 +TIM8.IPParameters=Prescaler,Period,TIM_MasterSlaveMode,TIM_MasterOutputTrigger,Channel-PWM Generation3 CH3,Channel-PWM Generation4 CH4,OC4Preload_PWM +TIM8.OC4Preload_PWM=ENABLE +TIM8.Period=65535 TIM8.Prescaler=0 -TIM8.TIM_MasterOutputTrigger=TIM_TRGO_UPDATE +TIM8.TIM_MasterOutputTrigger=TIM_TRGO_RESET TIM8.TIM_MasterSlaveMode=TIM_MASTERSLAVEMODE_DISABLE USART3.IPParameters=VirtualMode USART3.VirtualMode=VM_ASYNC @@ -527,14 +520,12 @@ VP_TIM2_VS_no_output3.Mode=Output Compare3 No Output VP_TIM2_VS_no_output3.Signal=TIM2_VS_no_output3 VP_TIM3_VS_ClockSourceINT.Mode=Internal VP_TIM3_VS_ClockSourceINT.Signal=TIM3_VS_ClockSourceINT -VP_TIM3_VS_ClockSourceITR.Mode=TriggerSource_ITR0 -VP_TIM3_VS_ClockSourceITR.Signal=TIM3_VS_ClockSourceITR -VP_TIM3_VS_ControllerModeTrigger.Mode=Trigger Mode -VP_TIM3_VS_ControllerModeTrigger.Signal=TIM3_VS_ControllerModeTrigger -VP_TIM3_VS_OPM.Mode=OPM_bit -VP_TIM3_VS_OPM.Signal=TIM3_VS_OPM VP_TIM5_VS_ClockSourceINT.Mode=Internal VP_TIM5_VS_ClockSourceINT.Signal=TIM5_VS_ClockSourceINT VP_TIM8_VS_ClockSourceINT.Mode=Internal VP_TIM8_VS_ClockSourceINT.Signal=TIM8_VS_ClockSourceINT +VP_TIM8_VS_ClockSourceITR.Mode=TriggerSource_ITR0 +VP_TIM8_VS_ClockSourceITR.Signal=TIM8_VS_ClockSourceITR +VP_TIM8_VS_ControllerModeTrigger.Mode=Trigger Mode +VP_TIM8_VS_ControllerModeTrigger.Signal=TIM8_VS_ControllerModeTrigger board=custom diff --git a/Информация для программиста (УПП СП СЭД)/Описание работы с платой управления УПП.docx b/Информация для программиста (УПП СП СЭД)/Описание работы с платой управления УПП.docx index 9b0dc6a0bead854a2c05ad92a8d60d588e21c12a..897126a7af1cc6a006273ff3eee6810b44a27489 100644 GIT binary patch delta 28749 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 b&Gg|FFF(5ZuVDnN%q04)kwQZ+{MGtD2c|Du delta 29371 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