103 lines
4.6 KiB
C
103 lines
4.6 KiB
C
/**
|
||
******************************************************************************
|
||
* @file upp_params.h
|
||
* @brief Модуль определябщий поведение УПП
|
||
******************************************************************************
|
||
* @details
|
||
******************************************************************************/
|
||
|
||
#ifndef _UPP_PARAMS_H
|
||
#define _UPP_PARAMS_H
|
||
#include "upp_defs.h"
|
||
|
||
#define to_float(_u16_, _coef_) ((float)_u16_/_coef_)
|
||
|
||
typedef struct
|
||
{
|
||
unsigned set_default_pui:1; ///< Выставить настройки ПУИ в дефолтные
|
||
unsigned set_default_internal:1;///< Выставить внутренние настройки в дефолтные
|
||
unsigned go:1; ///< Запустить УПП
|
||
unsigned stop:1; ///< Остановка УПП (авария)
|
||
|
||
|
||
unsigned reserved:11;
|
||
unsigned reset_mcu:1;
|
||
}UPP_FuncCalls_t;
|
||
|
||
|
||
typedef struct
|
||
{
|
||
uint16_t PhaseSequence; ///< Последовательность фаз todo
|
||
uint16_t PhaseNumber; ///< [Количество]
|
||
uint16_t U; ///< [В x 10]
|
||
uint16_t U_deviation_plus; ///< [Проценты x 100]
|
||
uint16_t U_deviation_minus; ///< [Проценты x 100]
|
||
uint16_t F; ///< [Гц x 100]
|
||
uint16_t F_deviation_plus; ///< [Проценты x 100]
|
||
uint16_t F_deviation_minus; ///< [Проценты x 100]
|
||
uint16_t I; ///< [Амперы x 10]
|
||
}UPP_ParamsNominal_t;
|
||
|
||
typedef struct
|
||
{
|
||
uint16_t TemperatureWarn; ///< Предупредительный порог температуры [Градусы x 100]
|
||
uint16_t TemperatureErr; ///< Аварийный порог температуры [Градусы x 100]
|
||
}UPP_ParamsSetpoints_t;
|
||
|
||
typedef struct
|
||
{
|
||
|
||
struct
|
||
{
|
||
uint16_t mean_alpha; ///< Коэф альфа для усредняющего эксп. фильтра [0..1 x 65535]
|
||
}pm;
|
||
|
||
UPP_ParamsNominal_t nominal;
|
||
UPP_ParamsSetpoints_t setpoints;
|
||
|
||
/* Параметры АЦП */
|
||
struct
|
||
{
|
||
uint16_t ADC_Max[4]; ///< Величина в единицах измерения при АЦП = 4095 [В или А x 10]
|
||
uint16_t ADC_Zero[4]; ///< Кванты АЦП когда на входе ноль
|
||
}adc;
|
||
|
||
/* Параметры ШИМ */
|
||
struct
|
||
{
|
||
uint16_t PhaseMask; ///< Битовяя маска на какие фазы подавать ШИМ: 0 бит - a, 1 бит - b, 2 бит - c
|
||
uint16_t Frequency; ///< Частота ШИМ для пачки импульсов на тиристоры [Герцы]
|
||
uint16_t PulseNumber; ///< Количесво импульсов в пачке [Количество]
|
||
}pwm;
|
||
|
||
/* Параметры Угла */
|
||
struct
|
||
{
|
||
uint16_t Hysteresis; ///< Гистерезис для определения перехода через ноль [Проценты x 100]
|
||
uint16_t DebouneCouner; ///< Защита от дребезга: через сколько тактов снова начать фиксировать переход через ноль [Количество]
|
||
}zc;
|
||
|
||
/* Параметры Угла */
|
||
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]
|
||
uint16_t PID_Ki; ///< Интегральный коэфициент ПИ регулятора угла [x 10000]
|
||
uint16_t PID_Kd; ///< Интегральный коэфициент ПИ регулятора угла [x 10000]
|
||
uint16_t PID_ExpAlpha; ///< Коэффициент сглаживающего фильтра задания регулятора [0..1 x 65535]
|
||
}angle;
|
||
|
||
|
||
|
||
}UPP_PrvtParams_t;
|
||
|
||
|
||
/* Контроль внутренних параметров УПП. */
|
||
void UPP_Params_ControlInternal(void);
|
||
/* Установка параметров на дефолтные значения */
|
||
void UPP_Params_SetDefault(int pui_default, int internal_default);
|
||
|
||
#endif //_UPP_PARAMS_H
|