Чуть рефакторинга

This commit is contained in:
2026-01-24 15:30:19 +03:00
parent 8e75c38c90
commit 9f9af482cf
13 changed files with 445 additions and 398 deletions

View File

@@ -74,6 +74,51 @@ typedef enum {
Err_Interlace = 21, ///< Неправильный порядок чередования фаз (см. Interlace в @ref UPP_PUI_Params_t)
} UPP_ErrorType_t;
/**
* @brief Структура аварий УПП для ПУИ
*/
typedef struct
{
/* Програмные ошибки */
unsigned Internal_1:1; ///< Ошибка 1: Внутренняя неисправность УПП 1
unsigned Internal_2:1; ///< Ошибка 2: Внутренняя неисправность УПП 2
unsigned Internal_3:1; ///< Ошибка 3: Внутренняя неисправность УПП 3
unsigned Internal_4:1; ///< Ошибка 4: Внутренняя неисправность УПП 4
unsigned Internal_5:1; ///< Ошибка 5: Внутренняя неисправность УПП 5
unsigned Internal_6:1; ///< Ошибка 6: Внутренняя неисправность УПП 6
/* Ошибки по питанию */
unsigned Power_Digit_5V:1; ///< Ошибка 7: Неисправность цифрового источника питания (5 В)
unsigned Power_24V:1; ///< Ошибка 8: Неисправность источника питания 24 В
unsigned Power_Analog_5V:1; ///< Ошибка 9: Неисправность аналогового источника питания микроконтроллера (± 5 В)
unsigned Power_SCI_5V:1; ///< Ошибка 10: Неисправность источника питания последовательных интерфейсов микроконтроллера (5 В)
unsigned Power_DIO_24V:1; ///< Ошибка 11: Неисправность источника питания дискретных входов/выходов (24 В)
/* Ошибки по допустимым пределам Наряжений/Токов/Температуры */
unsigned OverCurrent:1; ///< Ошибка 12: Ток выше допустимого (см. Imax и TiMax в @ref UPP_PUI_Params_t)
unsigned OverVoltage:1; ///< Ошибка 13: Напряжение сети выше допустимого (см. Umах в @ref UPP_PUI_Params_t)
unsigned OverTemperature:1; ///< Ошибка 14: Температура выше допустимой (плюс 85 °C)
unsigned UnderVoltage:1; ///< Ошибка 15: Напряжение сети ниже допустимого (см. Umin в @ref UPP_PUI_Params_t)
/* Ошибки по обрывам фаз */
unsigned LossPhaseAll:1; ///< Ошибка 16: Обрыв трёх фаз (см. Imin в @ref UPP_PUI_Params_t)
unsigned LossPhaseA:1; ///< Ошибка 17: Обрыв фазы A (см. Imin в @ref UPP_PUI_Params_t)
unsigned LossPhaseB:1; ///< Ошибка 18: Обрыв фазы B (см. Imin в @ref UPP_PUI_Params_t)
unsigned LossPhaseC:1; ///< Ошибка 19: Обрыв фазы C (см. Imin в @ref UPP_PUI_Params_t)
/* Другие ошибки */
unsigned LongStart:1; ///< Ошибка 20: Затянутый пуск (ток не спадает за установленное время) (см. Tdelay в @ref UPP_PUI_Params_t)
unsigned Interlace:1; ///< Ошибка 21: Неправильный порядок чередования фаз (см. Interlace в @ref UPP_PUI_Params_t)
unsigned OverFrequency:1; ///< Ошибка 22: Частота сети выше допустимой
unsigned UnderFrequency:1; ///< Ошибка 23: Частота сети ниже допустимой
}UPP_PUI_Error_t;
/**
* @brief Структура предупреждений УПП для ПУИ
*/
typedef struct
{
}UPP_PUI_Warnings_t;
/**
* @brief Структура данных от УПП передаваемых в ПУИ
@@ -85,13 +130,32 @@ typedef struct {
uint16_t WorkMode; /** @brief Адрес 1: Режим работы
@details «Готовность» или «Работа» */
uint16_t Voltage; /** @brief Адрес 2: Напряжение на входе УПП, Вольты */
uint16_t Uall; /** @brief Адрес 2: Среднее напряжение по трем фазам на входе УПП (RMS), Вольты */
uint16_t Uab; /** @brief Адрес 3: Напряжение фазы AB (RMS), Вольты */
uint16_t Ubc; /** @brief Адрес 4: Напряжение фазы BC (RMS), Вольты */
uint16_t Uca; /** @brief Адрес 5: Напряжение фазы CA (RMS), Вольты */
uint16_t Current; /** @brief Адрес 3: Ток на входе УПП, Амперы */
uint16_t Iall; /** @brief Адрес 6: Средний ток по трем фазам на входе УПП (RMS), Амперы */
uint16_t Ia; /** @brief Адрес 7: Ток фазы A (RMS), Амперы */
uint16_t Ib; /** @brief Адрес 8: Ток фазы B (RMS), Амперы */
uint16_t Ic; /** @brief Адрес 9: Ток фазы C (RMS), Амперы */
uint16_t Frequency; /** @brief Адрес 4: Частота напряжения на входе УПП */
uint16_t Fall; /** @brief Адрес 10: Средняя частота напряжений по трем фазам на входе УПП, Герцы */
uint16_t Fab; /** @brief Адрес 11: Частота напряжения фазы AB, Герцы */
uint16_t Fbc; /** @brief Адрес 12: Частота напряжения фазы BC, Герцы */
uint16_t Fca; /** @brief Адрес 13: Частота напряжения фазы CA, Герцы */
uint16_t Temperature; /** @brief Адрес 5: Температура радиатора тиристоров, Градусы Цельсия */
uint16_t Temperature1; /** @brief Адрес 14: Температура радиатора тиристоров, Градусы Цельсия */
uint16_t Temperature2; /** @brief Адрес 15: Температура радиатора тиристоров, Градусы Цельсия */
uint16_t reserved[10]; /** @brief Адрес 16-49: Зарезервированны*/
union
{
uint16_t all;
UPP_PUI_Warnings_t warn;
}Warnings; /** @brief Адрес 4: Частота напряжения на входе УПП */
} UPP_PUI_Values_t;
/**
@@ -180,11 +244,12 @@ typedef struct {
#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
//#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'ы УПП */
/**