216 lines
10 KiB
C
216 lines
10 KiB
C
/**
|
||
******************************************************************************
|
||
* @file upp_defs.h
|
||
* @brief Общие дефайны УПП
|
||
******************************************************************************
|
||
@addtogroup UPP_DEFS UPP defines
|
||
@ingroup UPP_MAIN
|
||
@brief Общие дефайны для всего проекта УПП
|
||
@{
|
||
******************************************************************************
|
||
* @details
|
||
******************************************************************************/
|
||
#ifndef _UPP_DEFS_H_
|
||
#define _UPP_DEFS_H_
|
||
#include "upp_config.h"
|
||
|
||
|
||
/**
|
||
* @addtogroup UPP_HIGHLEVEL Defines for high-level
|
||
* @ingroup UPP_DEFS
|
||
* @brief Дефайны УПП которые определяют коды ошибок и параметры для общения с верхним уровнем
|
||
* @{
|
||
*/
|
||
|
||
|
||
/**
|
||
* @brief Список аварий УПП
|
||
*/
|
||
typedef enum {
|
||
UPP_Init = 0, ///< УПП не инициализирован
|
||
UPP_Ready = 1, ///< УПП в готовности
|
||
UPP_Work = 2, ///< УПП в работе, управляет тиристорами
|
||
UPP_Error = 3, ///< УПП в аварии
|
||
// WM_Done = 3, ///< УПП закончил свою работу
|
||
} UPP_WorkModeType_t;
|
||
|
||
/**
|
||
* @brief Список аварий УПП
|
||
*/
|
||
typedef enum {
|
||
Err_None = 0, ///< Неисправность отсутствует
|
||
|
||
/* Програмные ошибки */
|
||
Err_Internal_1 = 1, ///< Внутренняя неисправность УПП 1
|
||
Err_Internal_2 = 2, ///< Внутренняя неисправность УПП 2
|
||
Err_Internal_3 = 3, ///< Внутренняя неисправность УПП 3
|
||
Err_Internal_4 = 4, ///< Внутренняя неисправность УПП 4
|
||
Err_Internal_5 = 5, ///< Внутренняя неисправность УПП 5
|
||
Err_Internal_6 = 6, ///< Внутренняя неисправность УПП 6
|
||
|
||
/* Ошибки по питанию */
|
||
Err_Power_Digit_5V = 7, ///< Неисправность цифрового источника питания (5 В)
|
||
Err_Power_24V = 8, ///< Неисправность источника питания 24 В
|
||
Err_Power_Analog_5V = 9, ///< Неисправность аналогового источника питания микроконтроллера (± 5 В)
|
||
Err_Power_SCI_5V = 10, ///< Неисправность источника питания последовательных интерфейсов микроконтроллера (5 В)
|
||
Err_Power_DIO_24V = 11, ///< Неисправность источника питания дискретных входов/выходов (24 В)
|
||
|
||
/* Ошибки по допустимым пределам Наряжений/Токов/Температуры */
|
||
Err_OverCurrent = 12, ///< Ток выше допустимого (см. Imax и TiMax в @ref UPP_PUI_Params_t)
|
||
Err_OverVoltage = 13, ///< Напряжение сети выше допустимого (см. Umах в @ref UPP_PUI_Params_t)
|
||
Err_OverTemperature = 14, ///< Температура выше допустимой (плюс 85 °C)
|
||
Err_UnderVoltage = 15, ///< Напряжение сети ниже допустимого (см. Umin в @ref UPP_PUI_Params_t)
|
||
Err_OverFrequency = 22, ///< Частота сети выше допустимой
|
||
Err_UnderFrequency = 23, ///< Частота сети ниже допустимой
|
||
|
||
/* Ошибки по обрывам фаз */
|
||
Err_LossPhaseAll = 16, ///< Обрыв трёх фаз (см. Imin в @ref UPP_PUI_Params_t)
|
||
Err_LossPhaseA = 17, ///< Обрыв фазы A (см. Imin в @ref UPP_PUI_Params_t)
|
||
Err_LossPhaseB = 18, ///< Обрыв фазы B (см. Imin в @ref UPP_PUI_Params_t)
|
||
Err_LossPhaseC = 19, ///< Обрыв фазы C (см. Imin в @ref UPP_PUI_Params_t)
|
||
|
||
/* Другие ошибки */
|
||
Err_LongStart = 20, ///< Затянутый пуск (ток не спадает за установленное время) (см. Tdelay в @ref UPP_PUI_Params_t)
|
||
Err_Interlace = 21, ///< Неправильный порядок чередования фаз (см. Interlace в @ref UPP_PUI_Params_t)
|
||
} UPP_ErrorType_t;
|
||
|
||
|
||
/**
|
||
* @brief Структура данных от УПП передаваемых в ПУИ
|
||
*/
|
||
typedef struct {
|
||
uint16_t Error; /** @brief Текущая авария
|
||
@details В случае срабатывания защиты */
|
||
|
||
uint16_t WorkMode; /** @brief Режим работы
|
||
@details «Готовность» или «Работа» */
|
||
|
||
uint16_t Voltage; /** @brief Напряжение на входе УПП, Вольты */
|
||
|
||
uint16_t Current; /** @brief Ток на входе УПП, Амперы */
|
||
|
||
uint16_t Frequency; /** @brief Частота напряжения на входе УПП */
|
||
|
||
uint16_t Temperature; /** @brief Температура радиатора тиристоров, Градусы Цельсия */
|
||
} UPP_PUI_Values_t;
|
||
|
||
/**
|
||
* @brief Структура параметров УПП от ПУИ
|
||
* @details Параметры по умолчанию приведены в @ref UPP_PARAMS_DEFAULT
|
||
* @note Защиты №X приведены в @ref UPP_ErrorType_t
|
||
*/
|
||
typedef struct {
|
||
uint16_t Iref; /** @brief Уставка ограничения тока УПП
|
||
@details В диапазоне от 100 % до 500 % от Iн = 5 А
|
||
По умолчанию – @ref PUI_Iref_PERCENT_DEFAULT */
|
||
|
||
uint16_t Tnt; /** @brief Уставка времени нарастания заданного тока
|
||
@details В диапазоне от 50 до 5000 мс.
|
||
По умолчанию – @ref PUI_Tnt_MS_DEFAULT */
|
||
|
||
uint16_t Umin; /** @brief Уставка защиты №15 от понижения напряжения входной сети
|
||
@details В диапазоне от 5% до 99 % от Uн = 690 В.
|
||
По умолчанию – @ref PUI_Umin_PERCENT_DEFAULT */
|
||
|
||
uint16_t Umax; /** @brief Уставка защиты №13 от повышения напряжения входной сети
|
||
@details В диапазоне от 100% до 120 % от Uн = 690 В.
|
||
По умолчанию – @ref PUI_Umax_PERCENT_DEFAULT */
|
||
|
||
uint16_t Imax; /** @brief Уставка защиты №12 по току
|
||
@details В диапазоне от 5 % до 99 % от 50 А.
|
||
По умолчанию – @ref PUI_Imax_PERCENT_DEFAULT */
|
||
|
||
uint16_t Imin; /** @brief Уставка защит № 16 – №19 от обрыва фаз(ы)
|
||
@details В диапазоне от 0 % до 40 % от Iн = 5 А. При задании нуля эти защиты отключаются.
|
||
По умолчанию – @ref PUI_Imin_PERCENT_DEFAULT */
|
||
|
||
uint16_t TiMax; /** @brief Выдержка времени на срабатывание защиты № 12 по току
|
||
@details В диапазоне от 500 до 10000 мкс.
|
||
По умолчанию – @ref PUI_TiMax_US_DEFAULT */
|
||
|
||
uint16_t Tdelay; /** @brief Выдержка времени защиты № 20 от затянутого пуска
|
||
@details В диапазоне от 5 до 60 с.
|
||
По умолчанию – @ref PUI_Tdelay_SECONDS_DEFAULT */
|
||
|
||
uint16_t Interlace; /** @brief Разрешение защиты № 21 от обратного порядка чередования фаз;
|
||
@details 0 – нет защиты, 1 – есть защита.
|
||
По умолчанию – @ref PUI_Interlace_EN_DEFAULT */
|
||
} UPP_PUI_Params_t;
|
||
|
||
|
||
/** //UPP_HIGHLEVEL
|
||
* @}
|
||
*/
|
||
|
||
|
||
/**
|
||
* @addtogroup UPP_INTERNAL_DEFS Defines for internal use
|
||
* @ingroup UPP_DEFS
|
||
* @brief Дефайны УПП которые используютяс исключительно внутри программы
|
||
* @{
|
||
*/
|
||
|
||
// Проверка корректности структуры
|
||
#define assert_upp(_struct_) check_null_ptr_2(_struct_, (_struct_)->f.Initialized)
|
||
|
||
|
||
/* Дефайны для индексов */
|
||
/* Линейные напряжения */
|
||
#define U_AB 0
|
||
#define U_CA 1
|
||
#define U_BC 2
|
||
/* Токи фаз */
|
||
#define I_C 0
|
||
#define I_A 1
|
||
#define I_B 2
|
||
/* Температуры */
|
||
#define TEMP_1 0
|
||
#define TEMP_2 1
|
||
|
||
/* Перерасчеты в тики */
|
||
#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 SQRT2 1.4142135
|
||
|
||
/* Дефайны для "удобного" доступа к структурам */
|
||
#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 Состояния полуволны
|
||
*/
|
||
typedef enum {
|
||
UPP_WAVE_UNKNOWED = 0,
|
||
UPP_WAVE_POSITIVE,
|
||
UPP_WAVE_NEGATIVE
|
||
} UPP_HalfWave_t;
|
||
|
||
/**
|
||
* @brief Названия Фаз
|
||
*/
|
||
typedef enum {
|
||
UPP_PHASE_A = 0,
|
||
UPP_PHASE_B = 1,
|
||
UPP_PHASE_C = 2,
|
||
UPP_PHASE_UNKNOWN = 3
|
||
} UPP_Phase_t;
|
||
|
||
/** //UPP_INTERNAL_DEFS
|
||
* @}
|
||
*/
|
||
#endif //_UPP_DEFS_H_
|
||
|
||
|
||
/** //UPP_DEFS
|
||
* @}
|
||
*/
|