Полноценно запустилось в матлаб корректно. УПП может плавно открывать тиристоры пачкой импульсов
Начата работа над управлением УПП по командам
This commit is contained in:
@@ -16,7 +16,7 @@
|
||||
******************************************************************************/
|
||||
#ifndef __SPI_MEMORY_CONFIG_H_
|
||||
#define __SPI_MEMORY_CONFIG_H_
|
||||
#include "upp_config.h"
|
||||
#include "upp_defs.h"
|
||||
|
||||
/////////////////////////---USER SETTINGS---/////////////////////////
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
******************************************************************************/
|
||||
#ifndef _MODBUS_CONFIG_H_
|
||||
#define _MODBUS_CONFIG_H_
|
||||
#include "upp_config.h"
|
||||
#include "upp_defs.h"
|
||||
|
||||
// Общие параметры
|
||||
#define MODBUS_DEVICE_ID 1 ///< Адрес устройства в сети Modbus
|
||||
|
||||
@@ -22,6 +22,9 @@
|
||||
#include "modbus_inputregs.h"
|
||||
#include "modbus_devid.h"
|
||||
|
||||
/* DEFINE DATA FOR MODBUS */
|
||||
MB_DataStructureTypeDef MB_DATA = {0};; ///< Coils & Registers
|
||||
MB_DataInternalTypeDef MB_INTERNAL;
|
||||
|
||||
/**
|
||||
* @brief Check is address valid for certain array.
|
||||
@@ -78,6 +81,10 @@ MB_ExceptionTypeDef MB_DefineRegistersAddress(uint16_t **pRegs, uint16_t Addr, u
|
||||
{
|
||||
*pRegs = MB_Set_Register_Ptr(&MB_DATA.HoldRegs, Addr - R_HOLDING_ADDR); // указатель на выбранный по Addr регистр
|
||||
}
|
||||
else if(MB_Check_Address_For_Arr(Addr, Qnt, R_HOLDING_PRVT_PARAMS_ADR, R_HOLDING_PRVT_PARAMS_QNT) == ET_NO_ERRORS)
|
||||
{
|
||||
*pRegs = MB_Set_Register_Ptr(&MB_INTERNAL, Addr - R_HOLDING_PRVT_PARAMS_ADR); // указатель на выбранный по Addr регистр
|
||||
}
|
||||
// if address doesnt match any array - return illegal data address response
|
||||
else
|
||||
{
|
||||
|
||||
@@ -50,20 +50,24 @@
|
||||
|
||||
#ifndef _MODBUS_DATA_H_
|
||||
#define _MODBUS_DATA_H_
|
||||
|
||||
|
||||
#include "upp_defs.h"
|
||||
#include "upp_control.h"
|
||||
#include "stdint.h"
|
||||
|
||||
|
||||
|
||||
//--------------SIZES OF DATA---------------
|
||||
#define R_HOLDING_PRVT_PARAMS_ADR 555
|
||||
#define R_HOLDING_PRVT_PARAMS_QNT (sizeof(UPP_PrvtParams_t)/sizeof(uint16_t))
|
||||
|
||||
// DEFINES FOR INPUT REGISTERS ARRAYS
|
||||
#define R_INPUT_ADDR 0 ///< Начальный адрес входных регистров
|
||||
#define R_INPUT_QNT 16 ///< Количество входных регистров
|
||||
#define R_INPUT_QNT (sizeof(UPP_PUI_Values_t)/sizeof(uint16_t)) ///< Количество входных регистров
|
||||
|
||||
// DEFINES FOR HOLDING REGISTERS ARRAYS
|
||||
#define R_HOLDING_ADDR 0 ///< Начальный адрес регистров хранения
|
||||
#define R_HOLDING_QNT 16 ///< Количество регистров хранения
|
||||
#define R_HOLDING_QNT (sizeof(UPP_PUI_Params_t)/sizeof(uint16_t)) ///< Количество регистров хранения
|
||||
|
||||
// DEFINES FOR COIL ARRAYS
|
||||
#define C_COILS_ADDR 0 ///< Начальный адрес коилов
|
||||
@@ -89,7 +93,7 @@
|
||||
*/
|
||||
typedef struct //MB_DataInRegsTypeDef
|
||||
{
|
||||
uint16_t in[16];
|
||||
UPP_PUI_Values_t pui;
|
||||
}MB_DataInRegsTypeDef;
|
||||
|
||||
|
||||
@@ -98,7 +102,7 @@ typedef struct //MB_DataInRegsTypeDef
|
||||
*/
|
||||
typedef struct //MB_DataInRegsTypeDef
|
||||
{
|
||||
uint16_t out[16];
|
||||
UPP_PUI_Params_t pui_params;
|
||||
}MB_DataHoldRegsTypeDef;
|
||||
|
||||
|
||||
@@ -153,6 +157,13 @@ typedef struct // tester modbus data
|
||||
extern MB_DataStructureTypeDef MB_DATA;
|
||||
|
||||
|
||||
typedef struct
|
||||
{
|
||||
UPP_FuncCalls_t FuncCalls;
|
||||
UPP_PrvtParams_t param;
|
||||
}MB_DataInternalTypeDef;
|
||||
extern MB_DataInternalTypeDef MB_INTERNAL;
|
||||
|
||||
#endif //_MODBUS_DATA_H_
|
||||
|
||||
/////////////////////////////////////////////////////////////
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
*************************************************************************/
|
||||
#ifndef __MYLIBS_CONFIG_H_
|
||||
#define __MYLIBS_CONFIG_H_
|
||||
#include "upp_config.h"
|
||||
#include "upp_defs.h"
|
||||
|
||||
// user includes
|
||||
/**
|
||||
|
||||
@@ -27,39 +27,58 @@
|
||||
#define TEMP_1 0
|
||||
#define TEMP_2 1
|
||||
|
||||
/* Дефайны для базовых величин */
|
||||
#define PM_U_BASE 1216.0
|
||||
#define PM_I_BASE 53.0
|
||||
|
||||
/* Дефайны для настройки мониторинга питания */
|
||||
#define PM_ADC_PERIOD_MKS 10
|
||||
#define PM_ZERO_CROSS_HYSTERESIS_V 10
|
||||
#define PM_ZERO_CROSS_DEBOUNCE_10US 2.5*100 // (2.5 * 100 = 2.5 мс)
|
||||
|
||||
|
||||
|
||||
|
||||
/* Рассчитанные дефайны */
|
||||
#define PM_ADC_PERIOD (180*PM_ADC_PERIOD_MKS)-1
|
||||
|
||||
/* Общие для всего проекта структуры*/
|
||||
/**
|
||||
* @brief Состояния полуволны
|
||||
* @addtogroup UPP_DEFAULT_PARAMS Default params for external flash
|
||||
* @ingroup UPP_CONFIG
|
||||
* @brief Дефолтные параметры для внешней памяти. Они применятся по команде или по ошибке
|
||||
* @{
|
||||
*/
|
||||
typedef enum {
|
||||
UPP_WAVE_UNKNOWED = 0,
|
||||
UPP_WAVE_POSITIVE,
|
||||
UPP_WAVE_NEGATIVE
|
||||
} UPP_HalfWave_t;
|
||||
|
||||
/* Параметры ПУИ */
|
||||
#define PUI_Iref_PERCENT_DEFAULT 150
|
||||
#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_TiMax_US_DEFAULT 5000
|
||||
#define PUI_Tdelay_SECONDS_DEFAULT 30
|
||||
#define PUI_Interlace_EN_DEFAULT 5000
|
||||
|
||||
/* Параметры АЦП */
|
||||
#define ADC_U_MAX_V_DEFAULT 1216.0
|
||||
#define ADC_I_MAX_A_DEFAULT 53.0
|
||||
#define ADC_U_ZERO_DEFAULT 2048
|
||||
#define ADC_I_ZERO_DEFAULT 2048
|
||||
|
||||
/* Параметры определения перехода через ноль */
|
||||
#define ZERO_CROSS_HYSTERESIS_V_DEFAULT 10.0
|
||||
#define ZERO_CROSS_DEBOUNCE_10US_DEFAULT 2.5*100 // (2.5 * 100 = 2.5 мс)
|
||||
|
||||
/* Параметры ШИМ для тиристоров */
|
||||
#define PWM_THYR_FREQUENCY_HZ_DEFAULT 20000
|
||||
#define PWM_THYR_PULSE_NUMBER_DEFAULT 20
|
||||
|
||||
/** //UPP_DEFAULT_PARAMS
|
||||
* @}
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* @brief Названия Фаз
|
||||
* @addtogroup UPP_COMPILED_PARAMS Fixed params
|
||||
* @ingroup UPP_CONFIG
|
||||
* @brief Параметры устанавливаемые на этапе компиляции. Без перепрошивки их не поменять
|
||||
* @{
|
||||
*/
|
||||
typedef enum {
|
||||
UPP_PHASE_A = 0,
|
||||
UPP_PHASE_B = 1,
|
||||
UPP_PHASE_C = 2,
|
||||
UPP_PHASE_UNKNOWN = 3
|
||||
} UPP_Phase_t;
|
||||
#define PM_U_NOM_V 690
|
||||
#define PM_I_NOM_V 5
|
||||
#define PM_F_NOM_HZ 50
|
||||
|
||||
#define PM_ADC_PERIOD_MKS 10 ///< Период опроса АЦП в мкс
|
||||
/* Частоты таймеров в МГц*/
|
||||
#define ADC_TIM8_FREQ_MZH 180 ///< Частота тиков таймера АЦП
|
||||
#define PWM_TIM1_FREQ_MHZ 180 ///< Частота тиков таймера ШИМ (1-4 каналы)
|
||||
#define PWM_TIM3_FREQ_MHZ 90 ///< Частота тиков таймера ШИМ (5-6 каналы)
|
||||
#define ANGLE_TIM2_FREQ_MHZ 90 ///< Частота тиков таймера отсчета угла открытия тиристоров
|
||||
|
||||
#endif //_UPP_CONFIG_H_
|
||||
|
||||
178
UPP/Core/Configs/upp_defs.h
Normal file
178
UPP/Core/Configs/upp_defs.h
Normal file
@@ -0,0 +1,178 @@
|
||||
/**
|
||||
******************************************************************************
|
||||
* @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 {
|
||||
WM_Not_Init = 0, ///< УПП не инициализирован
|
||||
WM_Ready = 1, ///< УПП в готовности
|
||||
WM_Running = 2, ///< УПП в работе, управляет тиристорами
|
||||
WM_Error = 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_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)
|
||||
Err_OverFrequency = 22, ///< Частота сети выше допустимой
|
||||
Err_UnderFrequency = 23, ///< Частота сети ниже допустимой
|
||||
} 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_DEFAULT_PARAMS
|
||||
* @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 ANGLE_PERIOD_MS (((float)1/(PM_F_NOM_HZ*2))*1000)
|
||||
/**
|
||||
* @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
|
||||
* @}
|
||||
*/
|
||||
Reference in New Issue
Block a user