#3 Настройки перенесены в модбас, все подтягивается оттуда

- В modbus коилах задается режим и выставляется флаг запустить тест. Запустить тест также можно по кнопке

- Добавлена функция для выставления дефолтных настроек TESTER_Set_Default_Settings: она выставляет все настройки в modbus по дефолту и еще некоторые не modbus настройки (порты и пины ключей, кнопок, светодиодов)

- Добавлена функция для обновления настроек тестера TESTER_UpdateSettings: она подтягивает все настроки из modbus в соответствующие структуры тестера. Вызывается каждый раз перед тестированием
This commit is contained in:
2024-12-19 17:25:03 +03:00
parent a5704ae4be
commit 24b6295935
14 changed files with 270 additions and 135 deletions

View File

@@ -262,13 +262,8 @@ MB_ExceptionTypeDef MB_DefineRegistersAddress(uint16_t **pRegs, uint16_t Addr, u
if(RegisterType == RegisterType_Holding)
{
// Устаки для напряжений ТЭ: предупреждения аварии
if(MB_Check_Address_For_Arr(Addr, Qnt, R_SETPOINTS_ADDR, R_SETPOINTS_QNT) == NO_ERRORS)
{
*pRegs = MB_Set_Register_Ptr(&MB_DATA.HoldRegs, Addr); // начало регистров хранения/входных
}
// Устаки для настройки МЗКТЭ: запрет опроса и настройки общения (MODBUS/UART)
else if(MB_Check_Address_For_Arr(Addr, Qnt, R_SETTINGS_ADDR, R_SETTINGS_QNT) == NO_ERRORS)
// Устаки для тестера
if(MB_Check_Address_For_Arr(Addr, Qnt, R_SETTINGS_ADDR, R_SETTINGS_QNT) == NO_ERRORS)
{
*pRegs = MB_Set_Register_Ptr(&MB_DATA.HoldRegs, Addr); // начало регистров хранения/входных
}
@@ -280,13 +275,8 @@ MB_ExceptionTypeDef MB_DefineRegistersAddress(uint16_t **pRegs, uint16_t Addr, u
}
else if(RegisterType == RegisterType_Input)
{
// Напряжения на ТЭ
if(MB_Check_Address_For_Arr(Addr, Qnt, R_TE_VOLTAGE_ADDR, R_TE_VOLTAGE_QNT) == NO_ERRORS)
{
*pRegs = MB_Set_Register_Ptr(&MB_DATA.InRegs, Addr); // начало регистров хранения/входных
}
// Статус регистр МЗКТЭ
else if(MB_Check_Address_For_Arr(Addr, Qnt, R_STATUS_REG_ADDR, R_STATUS_REG_QNT) == NO_ERRORS)
// Измеренные параметры диода
if(MB_Check_Address_For_Arr(Addr, Qnt, R_MEASURED_ADDR, R_MEASURED_QNT) == NO_ERRORS)
{
*pRegs = MB_Set_Register_Ptr(&MB_DATA.InRegs, Addr); // начало регистров хранения/входных
}
@@ -323,10 +313,14 @@ MB_ExceptionTypeDef MB_DefineCoilsAddress(uint16_t **pCoils, uint16_t Addr, uint
return ILLEGAL_DATA_VALUE; // return exception code
}
// peripheral control coils
if(MB_Check_Address_For_Arr(Addr, Qnt, C_TE_EXCLUDE_ADDR, C_TE_EXCLUDE_QNT) == NO_ERRORS)
// tester settings coils
if(MB_Check_Address_For_Arr(Addr, Qnt, C_SETTINGS_ADDR, C_SETTINGS_QNT) == NO_ERRORS)
{
*pCoils = MB_Set_Coil_Reg_Ptr(&MB_DATA.Coils, Addr-C_TE_EXCLUDE_ADDR);
*pCoils = MB_Set_Coil_Reg_Ptr(&MB_DATA.Coils, Addr);
}// tester control coils
else if(MB_Check_Address_For_Arr(Addr, Qnt, C_CONTROL_ADDR, C_CONTROL_QNT) == NO_ERRORS)
{
*pCoils = MB_Set_Coil_Reg_Ptr(&MB_DATA.Coils, Addr);
}
// if address doesnt match any array - return illegal data address response
else

View File

@@ -37,7 +37,8 @@
*/
typedef struct //MB_DataInRegsTypeDef
{
unsigned DUMMY;
uint16_t ForwardVoltage;
uint16_t PeakVoltage;
}MB_DataInRegsTypeDef;
@@ -46,23 +47,26 @@ typedef struct //MB_DataInRegsTypeDef
*/
typedef struct //MB_DataInRegsTypeDef
{
unsigned DUMMY;
uint16_t TimeForPositiveDC;
uint16_t TimeBeforeTest;
uint16_t TimeBeforePeak;
uint16_t TimeBeforeDisconnect;
uint16_t Adc_PulseWidth;
uint16_t Adc_PulseSign;
uint16_t Adc_CalibrValue;
uint16_t Adc_ZeroValue;
uint16_t Adc_U_Calibr;
}MB_DataHoldRegsTypeDef;
// DEFINES FOR INPUT REGISTERS ARRAYS
#define R_TE_VOLTAGE_ADDR 0
#define R_TE_VOLTAGE_QNT 85
#define R_STATUS_REG_ADDR 85
#define R_STATUS_REG_QNT 1
#define R_MEASURED_ADDR 0
#define R_MEASURED_QNT 1
// DEFINES FOR HOLDING REGISTERS ARRAYS
#define R_SETPOINTS_ADDR 0
#define R_SETPOINTS_QNT 170
#define R_SETTINGS_ADDR 170
#define R_SETTINGS_QNT 5
#define R_SETTINGS_ADDR 0
#define R_SETTINGS_QNT 4
// DEFINES FOR REGISTERS LOCAL ADDRESSES
@@ -95,12 +99,24 @@ typedef struct //MB_DataInRegsTypeDef
*/
typedef struct //MB_DataCoilsTypeDef
{
unsigned DUMMY;
/* reg 1 */
unsigned PositiveTest:1;
unsigned NegativeTest:1;
unsigned StartTest:1;
unsigned reserved:13;
/* reg 2 */
unsigned msTimeBeforeTest_enable:1;
unsigned msTimeBeforePeak_enable:1;
unsigned msTimeBeforeDisconnect_enable:1;
}MB_DataCoilsTypeDef;
// DEFINES FOR COIL ARRAYS
#define C_TE_EXCLUDE_ADDR 0
#define C_TE_EXCLUDE_QNT 85
#define C_CONTROL_ADDR 0
#define C_CONTROL_QNT 3
#define C_SETTINGS_ADDR 16
#define C_SETTINGS_QNT 3
/** MODBUS_DATA_COILS_DEFINES
* @}

View File

@@ -186,7 +186,7 @@ RS_StatusTypeDef RS_Init(RS_HandleTypeDef *hRS, UART_HandleTypeDef *huart, TIM_H
UART_Base_Init(suart);
hRS->huart = &suart->huart;
#else
RS_UART_Init();
// RS_UART_Init();
hRS->huart = huart;
#endif
@@ -206,7 +206,7 @@ RS_StatusTypeDef RS_Init(RS_HandleTypeDef *hRS, UART_HandleTypeDef *huart, TIM_H
hRS->htim = &stim->htim;
}
#else
RS_TIM_Init();
// RS_TIM_Init();
hRS->htim = htim;
#endif
@@ -250,8 +250,6 @@ HAL_StatusTypeDef RS_ReInit_UART(RS_HandleTypeDef *hRS, UART_HandleTypeDef *huar
UART_MspDeInit(&suart->huart);
RS_RES = UART_Base_Init(suart);
RS_RES = RS_UART_Init()
#else
// // check is settings are valid