Обновить README.md

This commit is contained in:
2025-11-05 11:11:43 +03:00
parent ba2f0e9ac1
commit 4939999789

View File

@@ -39,7 +39,7 @@ git submodule add https://git.arktika.cyou/set506/STM32_Modbus path/to/Modbus
git submodule update --init --recursive git submodule update --init --recursive
``` ```
2. **Скопируйте файлы конфигурации** в отдельную папку в вашем проекте (вне субмодуля) и удалите `__`: 2. **Скопируйте файлы конфигурации** в отдельную папку в вашем проекте (вне субмодуля) и удалите `__` из имени файлов:
``` ```
ProjectRoot/ ProjectRoot/
@@ -67,14 +67,14 @@ ProjectRoot/
void USARTx_IRQHandler(void) void USARTx_IRQHandler(void)
{ {
RS_UART_Handler(&modbus1); RS_UART_Handler(&hmodbus1);
return; return;
HAL_UART_IRQHandler(&huart); HAL_UART_IRQHandler(&huart);
} }
void TIMx_IRQHandler(void) void TIMx_IRQHandler(void)
{ {
RS_TIM_Handler(&modbus1); RS_TIM_Handler(&hmodbus1);
return; return;
HAL_TIM_IRQHandler(&htim); HAL_TIM_IRQHandler(&htim);
} }
@@ -100,7 +100,7 @@ ProjectRoot/
// Инициализация Modbus // Инициализация Modbus
MODBUS_FirstInit(&hmodbus1, &mb_huart, &mb_htim); MODBUS_FirstInit(&hmodbus1, &mb_huart, &mb_htim);
MODBUS_Config(&hmodbus1, 1, 1000, MODBUS_MODE_SLAVE); MODBUS_Config(&hmodbus1, MODBUS_DEVICE_ID, MODBUS_TIMEOUT, MODBUS_MODE_SLAVE);
// Запуск приема Modbus // Запуск приема Modbus
MODBUS_SlaveStart(&hmodbus1, NULL); MODBUS_SlaveStart(&hmodbus1, NULL);
@@ -116,7 +116,22 @@ ProjectRoot/
```c ```c
#include "modbus.h" #include "modbus.h"
// Запрос на 1 ID, считать холдинг регистры с 0 адреса 10 штук
RS_MsgTypeDef read_hold_cmd = MB_MASTER_READ_HOLDING_REGS(1, 0, 10);
// коллбек, вызовется при получении ответа от слейва
read_hold[10];
void callback_func(RS_HandleTypeDef *hmodbus, RS_MsgTypeDef *modbus_msg)
{
// MB_RespGet_... Чтобы достать нужные данные из ответа
for(int addr = MODBUS_MSG.Addr; addr < MODBUS_MSG.Addr + MODBUS_MSG.Qnt; addr++)
{
uint16_t value;
if(MB_RespGet_RegisterValue(&MODBUS_MSG, addr, &value))
{
read_hold[i] = value;
}
}
}
int main(void) int main(void)
{ {
// Инициализация HAL // Инициализация HAL
@@ -128,16 +143,11 @@ ProjectRoot/
// Инициализация Modbus // Инициализация Modbus
MODBUS_FirstInit(&hmodbus1, &mb_huart, &mb_htim); MODBUS_FirstInit(&hmodbus1, &mb_huart, &mb_htim);
MODBUS_Config(&hmodbus1, 0, 1000, MODBUS_MODE_MASTER); MODBUS_Config(&hmodbus1, 0, MODBUS_TIMEOUT, MODBUS_MODE_MASTER);
// Запрос по Modbus
MODBUS_MasterRequest(&hmodbus1, &read_hold_cmd, &callback_func);
// Запуск приема Modbus
// Запрос на 1 ID, считать холдинг регистры с 0 адреса 10 штук
RS_MsgTypeDef msg = MB_MASTER_READ_HOLDING_REGS(1, 0, 10);
MODBUS_MasterRequest(&hmodbus1, &msg, &callback_func);
void callback_func(RS_HandleTypeDef *hmodbus, RS_MsgTypeDef *modbus_msg)
{
// MB_RespGet_... Чтобы достать нужные данные из ответа
}
} }
``` ```
3.5. Настройка карты данных 3.5. Настройка карты данных
@@ -198,11 +208,11 @@ ProjectRoot/
MB_DATA.HoldRegs.SetpointTemp = 2500; MB_DATA.HoldRegs.SetpointTemp = 2500;
// Управление coils // Управление coils
MB_Set_Coil_Local(&MB_DATA.Coils, 0); // Включить Relay1 MB_Coil_Set_Local(&MB_DATA.Coils, 0); // Включить Relay1
MB_Reset_Coil_Local(&MB_DATA.Coils, 1); // Выключить Relay2 MB_Coil_Reset_Local(&MB_DATA.Coils, 1); // Выключить Relay2
// Чтение coil // Чтение coil
if (MB_Read_Coil_Local(&MB_DATA.Coils, 2)) { if (MB_Coil_Read_Local(&MB_DATA.Coils, 2)) {
// Pump включен // Pump включен
} }
``` ```