Loading...
Searching...
No Matches
Modbus Registers Map
Modbus tools

Определение карты регистров и коилов More...

Collaboration diagram for Modbus Registers Map:

## Topics

| Registers structures
| Стуруктура регистров (входных и хранения)
| Coils Structure
| Структура коилов

## Classes

struct | MB_DataStructureTypeDef
| Структура со всеми регистрами и коилами модбас More...

## Detailed Description

Определение карты регистров и коилов

Файл содержит объявления структур данных, доступных через Modbus:

- Holding Registers (R/W) - регистры хранения
- Input Registers (R/O) - входные регистры
- Coils (R/W) - дискретные выходы

# Базовая настройка под устройство:

1. Настроить диапазоны адресов
   - R_INPUT_ADDR и R_INPUT_QNT для входных регистров
   - R_HOLDING_ADDR и R_HOLDING_QNT для регистров хр анения
   - C_COILS_ADDR и C_COILS_ADDR для коилов
2. Настроить структуры данных:
   - MB_DataInRegsTypeDef
   - MB_DataHoldRegsTypeDef
   - MB_DataCoilsTypeDef

# Расширенная настройка под устройство:

1. Добавить новый массив с нужными данными.
2. Добавить дефайны для определения его начального адреса и количества элементов

3. Добавить проверку адресов в MB_DefineRegistersAddress/MB_DefineCoilsAddress.

   Пример:

   #define R_USER_ADDR 555
   #define R_USER_QNT 16
   uint16_t user_regs[16];
   //...
   else if(MB_Check_Address_For_Arr(Addr, Qnt, R_USER_ADDR, R_USER_QNT) == ET_NO_ERRORS)
   {
   *pRegs = MB_Set_Register_Ptr(&user_regs, Addr-R_USER_ADDR); // ВАЖНО!
   // -R_USER_ADDR нужен чтобы взять адрес относительно начала массива
   }
   else
   {
   return ET_ILLEGAL_DATA_ADDRESS;
   }
   MB_Check_Address_For_Arr
   MB_ExceptionTypeDef MB_Check_Address_For_Arr(uint16_t Addr, uint16_t Qnt, uint16_t R_ARR_ADDR, uint16_t R_ARR_NUMB)
   Check is address valid for certain array.
   Definition __modbus_data.c:38
   MB_Set_Register_Ptr
   #define MB_Set_Register_Ptr(_parr_, _addr_)
   Macros to set pointer to register.
   Definition modbus_core.h:215
   ET_NO_ERRORS
   @ ET_NO_ERRORS
   no errors
   Definition modbus_core.h:78
   ET_ILLEGAL_DATA_ADDRESS
   @ ET_ILLEGAL_DATA_ADDRESS
   Адрес данных, указанный в запросе, недоступен
   Definition modbus_core.h:80