41 if(Addr >= R_ARR_ADDR)
44 if ((Addr - R_ARR_ADDR) + Qnt > R_ARR_NUMB)
74 if(RegisterType == RegisterType_Holding)
87 else if(RegisterType == RegisterType_Input)
138 *start_shift = Addr % 16;
MB_ExceptionTypeDef MB_DefineRegistersAddress(uint16_t **pRegs, uint16_t Addr, uint16_t Qnt, uint8_t RegisterType)
Define Address Origin for Input/Holding Registers.
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.
MB_ExceptionTypeDef MB_DefineCoilsAddress(uint16_t **pCoils, uint16_t Addr, uint16_t Qnt, uint16_t *start_shift, uint8_t WriteFlag)
Define Address Origin for coils.
MB_ExceptionTypeDef
Enum for modbus exception codes.
#define MB_Set_Register_Ptr(_parr_, _addr_)
Macros to set pointer to register.
#define MB_Set_Coil_Reg_Ptr(_parr_, _coil_)
Макрос для установки указателя на регистр, содержащий запрашиваемый коил
#define DATA_SIZE
maximum number of data: DWORD (NOT MESSAGE SIZE)
@ ET_ILLEGAL_DATA_VALUE
Значение, содержащееся в поле данных запроса, является недопустимой величиной
@ ET_ILLEGAL_FUNCTION
Принятый код функции не может быть обработан
@ ET_ILLEGAL_DATA_ADDRESS
Адрес данных, указанный в запросе, недоступен
Ядро Modbus протокола - определения и структуры
#define R_INPUT_ADDR
Начальный адрес входных регистров
#define C_COILS_QNT
Количество регистров коилов
#define C_COILS_ADDR
Начальный адрес коилов
#define R_HOLDING_ADDR
Начальный адрес регистров хранения
#define R_INPUT_QNT
Количество входных регистров
#define R_HOLDING_QNT
Количество регистров хранения
Идентификаторы устройства Modbus.
Работа с регистрами хранения Modbus.