Обновление примера + доработки мастера

This commit is contained in:
2025-11-04 22:42:03 +03:00
parent fbc424e507
commit 5c70316df7
7 changed files with 178 additions and 100 deletions

View File

@@ -56,7 +56,16 @@ void SystemClock_Config(void);
/* Private user code ---------------------------------------------------------*/
/* USER CODE BEGIN 0 */
int coil_to_toggle = 0;
int coil_state = 0;
int coil_real_state = 0;
void master_callback(RS_HandleTypeDef *hmodbus, RS_MsgTypeDef *msg)
{
if(MB_GetCoilState(msg, coil_to_toggle, &coil_real_state))
{
coil_state = coil_real_state;
}
}
/* USER CODE END 0 */
/**
@@ -94,7 +103,6 @@ int main(void)
MODBUS_FirstInit(&hmodbus1, &huart1, &htim3);
#ifdef MODBUS_MODE_MASTER
MODBUS_Config(&hmodbus1, 0, MODBUS_TIMEOUT, MODBUS_MODE_MASTER);
MODBUS_MSG = MB_REQUEST_READ_COILS(1, 0, 10);
#else
MODBUS_Config(&hmodbus1, MODBUS_DEVICE_ID, MODBUS_TIMEOUT, MODBUS_MODE_SLAVE);
MODBUS_SlaveStart(&hmodbus1, NULL);
@@ -105,6 +113,14 @@ int main(void)
/* USER CODE BEGIN WHILE */
while (1)
{
#ifdef MODBUS_MODE_MASTER
HAL_Delay(1000);
MODBUS_MSG = MB_REQUEST_READ_COILS(1, 0, 5);
MODBUS_MasterRequest(&hmodbus1, &MODBUS_MSG, &master_callback);
HAL_Delay(1000);
MODBUS_MSG = MB_REQUEST_WRITE_SINGLE_COIL(1, coil_to_toggle, !coil_state);
MODBUS_MasterRequest(&hmodbus1, &MODBUS_MSG, &master_callback);
#endif
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */