ШИМ и контроль угла отлажене на 417 более менее

Оптимизированы конфиг дефайны - в мкс и мс, а не тиках
This commit is contained in:
2025-11-20 19:13:42 +03:00
parent 2b22c5b0eb
commit d918ffb860
19 changed files with 296 additions and 192 deletions

View File

@@ -33,7 +33,7 @@
#define UPP_SIMULATE_I ///< Симулировт токи а не брать с АЦП
/**
* @addtogroup UPP_DEFAULT_PARAMS Default params for external flash
* @addtogroup UPP_PARAMS_DEFAULT Default params for external flash
* @ingroup UPP_CONFIG
* @brief Дефолтные параметры для внешней памяти. Они применятся по команде или по ошибке
* @details Префиксы
@@ -41,11 +41,10 @@
*/
/* Номинальные параметры */
/* Уставки по температурам */
#define SETPOINT_TEMP_WARN 70
#define SETPOINT_TEMP_ERR 85
/* Номинальные параметры */
#define NOM_PHASE_NUMB 3
#define NOM_U_V_DEFAULT 690
@@ -78,7 +77,7 @@
#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_KI_COEF_DEFAULT 0.01
#define ANGLE_PID_KD_COEF_DEFAULT 0
#define ANGLE_REF_ALPHA_COEF_DEFAULT 0.0001
@@ -99,7 +98,7 @@
#define PWM_THYR_FREQUENCY_HZ_DEFAULT 20000
#define PWM_THYR_PULSE_NUMBER_DEFAULT 20
/** //UPP_DEFAULT_PARAMS
/** //UPP_PARAMS_DEFAULT
* @}
*/
@@ -111,19 +110,18 @@
* @{
*/
/* Периоды вызова всякого */
#define PM_ADC_PERIOD_US 30 ///< Период опроса АЦП в мкс
#define PM_SLOW_PERIOD_CNT 20 ///< Период обновления медленных расчетов тиках @ref PM_ADC_PERIOD_US
#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 PM_ADC_PERIOD_US 30 ///< Период опроса АЦП в мкс
#define PM_SLOW_PERIOD_US 500 ///< Период обновления медленных расчетов в мкс (чтобы делилось на @ref PM_ADC_PERIOD_US)
#define PM_TEMP_SLOW_PERIOD_MS 1000 ///< Период опроса АЦП в мс
#define PM_F_SLOW_PERIOD_MS 40 ///< Период обновления частоты в мс
#define UPP_INIT_BEFORE_READY_MS 2000 ///< Сколько сканировать сеть, перед выставлением состояния готовности
/* Частоты таймеров в МГц*/
#define US_TIM5_FREQ_MHZ 90 ///< Частота тиков таймера ШИМ (1-4 каналы)
#define ADC_TIM8_FREQ_MZH 180 ///< Частота тиков таймера АЦП
#define PWM_TIM1_FREQ_MHZ 180 ///< Частота тиков таймера ШИМ (1-4 каналы)
#define PWM_TIM3_FREQ_MHZ 90 ///< Частота тиков таймера ШИМ (5-6 каналы)
#define PWM_TIM8_FREQ_MHZ 180 ///< Частота тиков таймера ШИМ (5-6 каналы)
#define US_TIM5_FREQ_MHZ 90 ///< Частота тиков микросекундного таймера
#define ADC_TIM3_FREQ_MZH 90 ///< Частота тиков таймера АЦП
#define ANGLE_TIM2_FREQ_MHZ 90 ///< Частота тиков таймера отсчета угла открытия тиристоров
@@ -132,17 +130,17 @@
// ===== ОТЛАДОЧНЫЕ ШТУКИ ДЛЯ 417 ======
#if defined(STM32F417xx)
#undef US_TIM5_FREQ_MHZ
#undef ADC_TIM8_FREQ_MZH
#undef PWM_TIM1_FREQ_MHZ
#undef PWM_TIM3_FREQ_MHZ
#undef PWM_TIM8_FREQ_MHZ
#undef US_TIM5_FREQ_MHZ
#undef ADC_TIM3_FREQ_MZH
#undef ANGLE_TIM2_FREQ_MHZ
// У 417 меньше частота поэтому меняем прескалер
#define US_TIM5_FREQ_MHZ 84 ///< Частота тиков таймера ШИМ (1-4 каналы)
#define ADC_TIM8_FREQ_MZH 168 ///< Частота тиков таймера АЦП
#define PWM_TIM1_FREQ_MHZ 168 ///< Частота тиков таймера ШИМ (1-4 каналы)
#define PWM_TIM3_FREQ_MHZ 84 ///< Частота тиков таймера ШИМ (5-6 каналы)
#define PWM_TIM8_FREQ_MHZ 168 ///< Частота тиков таймера ШИМ (5-6 каналы)
#define US_TIM5_FREQ_MHZ 84 ///< Частота тиков микросекундного таймера
#define ADC_TIM3_FREQ_MZH 84 ///< Частота тиков таймера АЦП
#define ANGLE_TIM2_FREQ_MHZ 84 ///< Частота тиков таймера отсчета угла открытия тиристоров
#define HAL_PWREx_EnableOverDrive() HAL_ERROR

View File

@@ -27,7 +27,7 @@
* @brief Список аварий УПП
*/
typedef enum {
UPP_Not_Init = 0, ///< УПП не инициализирован
UPP_Init = 0, ///< УПП не инициализирован
UPP_Ready = 1, ///< УПП в готовности
UPP_Work = 2, ///< УПП в работе, управляет тиристорами
UPP_Error = 3, ///< УПП в аварии
@@ -96,7 +96,7 @@ typedef struct {
/**
* @brief Структура параметров УПП от ПУИ
* @details Параметры по умолчанию приведены в @ref UPP_DEFAULT_PARAMS
* @details Параметры по умолчанию приведены в @ref UPP_PARAMS_DEFAULT
* @note Защиты №X приведены в @ref UPP_ErrorType_t
*/
typedef struct {
@@ -149,20 +149,26 @@ typedef struct {
* @brief Дефайны УПП которые используютяс исключительно внутри программы
* @{
*/
#define PM_SLOW_PERIOD_US (PM_ADC_PERIOD_US*PM_SLOW_PERIOD_CNT)
#define ANGLE_PERIOD_MS(_freq_) (((float)1/(_freq_*2))*1000)
/* Перерасчеты в тики */
#define PM_SLOW_PERIOD_CNT (PM_SLOW_PERIOD_US/PM_ADC_PERIOD_US) ///< Период обновления медленных расчетов тиках @ref PM_ADC_PERIOD_US
#define US_TO_SLOW_TICKS(_us_) ((_us_)/PM_SLOW_PERIOD_US)
#define MS_TO_SLOW_TICKS(_ms_) US_TO_SLOW_TICKS((_ms_)*1000)
#define PM_F_SLOW_PERIOD_CNT (MS_TO_SLOW_TICKS(PM_F_SLOW_PERIOD_MS)) ///< Период обновления частоты в тиках @ref PM_SLOW_PERIOD_CNT
/* Перерасчеты в тики */
#define ANGLE_PERIOD_MS(_freq_) (((float)1/(_freq_*2))*1000) ///< Период обновления частоты в тиках @ref PM_SLOW_PERIOD_CNT
/* Дефайны для "удобного" доступа к структурам */
#define PARAM_INTERNAL MB_INTERNAL.param
#define PARAM_PUI MB_DATA.HoldRegs.pui_params
#define ERR_PUI errors.pui.err
#define ERR_PRIVATE errors.prvt.f.err
#define ERR_PRIVATE_CNT errors.prvt.cnt
/* Enum'ы УПП */
/**
* @brief Состояния полуволны
*/