update examples

This commit is contained in:
2026-02-26 17:54:12 +03:00
parent 7d40b019fb
commit dc733fc296
3 changed files with 13 additions and 17 deletions

View File

@@ -52,7 +52,7 @@
if(hmodbus->RS_STATUS == RS_OK) // Получен ответ без ошибок if(hmodbus->RS_STATUS == RS_OK) // Получен ответ без ошибок
{ {
for(int addr = MODBUS_MSG.Addr; addr < MODBUS_MSG.Addr + MODBUS_MSG.Qnt; addr++) for(int addr = modbus_msg->Addr; addr < modbus_msg->Addr + modbus_msg->Qnt; addr++)
{ {
// Запись регистров из ответа в массив // Запись регистров из ответа в массив
uint16_t value; uint16_t value;

View File

@@ -118,7 +118,7 @@ int MB_RespGet_RegisterValue(RS_MsgTypeDef *modbus_msg, uint16_t reg_addr, uint1
* } * }
* *
* // Пример: Получить состояние всех запрошенных coils * // Пример: Получить состояние всех запрошенных coils
* for(int addr = MODBUS_MSG.Addr; addr < MODBUS_MSG.Addr + MODBUS_MSG.Qnt; addr++) * for(int addr = modbus_msg->Addr; addr < modbus_msg->Addr + modbus_msg->Qnt; addr++)
* { * {
* int state; * int state;
* if(MB_RespGet_CoilState(modbus_msg, addr, &state)) * if(MB_RespGet_CoilState(modbus_msg, addr, &state))

View File

@@ -124,33 +124,29 @@ int main(void)
```c ```c
#include "modbus.h" #include "modbus.h"
// Инициализация Modbus
MODBUS_FirstInit(&hmodbus1, &mb_huart, &mb_htim, &SetTxDirectionFunc);
MODBUS_Config(&hmodbus1, 0, MODBUS_TIMEOUT, MODBUS_MODE_MASTER);
// Запрос на 1 ID, считать холдинг регистры с 0 адреса 10 штук // Запрос на 1 ID, считать холдинг регистры с 0 адреса 10 штук
// При получении ответа вызовется функция callback_func() // При получении ответа вызовется функция callback_func()
RS_MsgTypeDef msg = MB_REQUEST_READ_HOLDING_REGS(1, 0, 10); RS_MsgTypeDef read_hold_cmd = MB_REQUEST_READ_HOLDING_REGS(1, 0, 10);
MODBUS_MasterRequest(&hmodbus1, &msg, &callback_func);
// коллбек, вызовется при получении ответа от слейва // коллбек, вызовется при получении ответа от слейва
read_hold[10]; uint16_t read_hold[10];
void callback_func(RS_HandleTypeDef *hmodbus, RS_MsgTypeDef *modbus_msg) void callback_func(RS_HandleTypeDef *hmodbus, RS_MsgTypeDef *modbus_msg)
{ {
// MB_RespGet_... Чтобы достать нужные данные из ответа // MB_RespGet_... Чтобы достать нужные данные из ответа
if(hmodbus->RS_STATUS == RS_OK) // Получен ответ без ошибок if(hmodbus->RS_STATUS == RS_OK) // Получен ответ без ошибок
{ {
for(int addr = MODBUS_MSG.Addr; addr < MODBUS_MSG.Addr + MODBUS_MSG.Qnt; addr++) for(int addr = modbus_msg->Addr; addr < modbus_msg->Addr + modbus_msg->Qnt; addr++)
{ {
// Запись регистров из ответа в массив // Запись регистров из ответа в массив
uint16_t value; uint16_t value;
if(MB_RespGet_RegisterValue(&MODBUS_MSG, addr, &value)) if(MB_RespGet_RegisterValue(modbus_msg, addr, &value))
{ {
read_hold[i] = value; read_hold[i] = value;
} }
} }
// Или так
MB_RespGet_RegisterAll(modbus_msg, read_hold); // копирует все принятые регистр из modbus_msg в read_hold в количестве Qnt
} }
else // Ответ получен с ошибкой или не получен вовсе else // Ответ получен с ошибкой или не получен вовсе
{ {