26#ifndef __MODBUS_CORE_H_
27#define __MODBUS_CORE_H_
31#include "__crc_algs.h"
45#define TransactionID_size 2
46#define ProtocolID_size 2
47#define PDULength_size 2
49#define Func_Code_SIZE 1
56#ifndef MODBUS_PROTOCOL_TCP
58#define INFO_SIZE_MAX (MbAddr_SIZE+Func_Code_SIZE+Addr_SIZE+Qnt_SIZE+ByteCnt_SIZE)
61#define INFO_SIZE_MAX (TransactionID_size+ProtocolID_size+PDULength_size+MbAddr_SIZE+Func_Code_SIZE+Addr_SIZE+Qnt_SIZE)
66#define RX_FIRST_PART_SIZE INFO_SIZE_MAX
69#define MSG_SIZE_MAX (INFO_SIZE_MAX + DATA_SIZE*2 + CRC_SIZE)
88#define FC_ERR_VALUES_START 0x80U
99#ifndef MODBUS_SWITCH_COMMAND_R_IN_REGS_AND_R_HOLD_REGS
136 MEI_DEVICE_IDENTIFICATIONS = 0x0E,
178#ifdef MODBUS_PROTOCOL_TCP
179 uint16_t TransactionID;
209#define MB_Set_Arr16_Ptr(_arr_) ((uint16_t*)(&(_arr_)))
215#define MB_Set_Register_Ptr(_parr_, _addr_) ((uint16_t *)(_parr_)+(_addr_))
232#define MB_Set_Coil_Reg_Ptr(_parr_, _coil_) ((uint16_t *)(_parr_)+((_coil_)/16))
251#define MB_Set_Coil_Mask(_coil_) (1 << ( _coil_ - (16*((_coil_)/16)) ))
259#define RegisterType_Holding 0
260#define RegisterType_Input 1
261#define RegisterType_Discrete 2
274#define Divide_Up(_val_, _div_) ((_val_ - 1) / _div_) + 1
284#define ByteSwap16(v) (((v&0xFF00) >> (8)) | ((v&0x00FF) << (8)))
Модуль для совместимости библиотеки MODBUS.
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_FunctonTypeDef
Enum for modbus func codes.
MB_ExceptionTypeDef
Enum for modbus exception codes.
ReadDevId
Enum for Read Device Id codes.
RS_MsgTypeDef MODBUS_MSG
Default Message Struct for Modbus.
#define FC_ERR_VALUES_START
from this value starts error func codes
MB_MEITypeDef
Enum for MEI func codes.
#define DATA_SIZE
maximum number of data: DWORD (NOT MESSAGE SIZE)
@ FC_ERR_R_DEVICE_INFO
Ошибка чтения информации об устройстве
@ FC_W_HOLD_REG
Запись одиночного регистра
@ FC_ERR_W_HOLD_REG
Ошибка записи одиночного регистра
@ FC_R_DEVICE_ID
Чтение информации об устройстве
@ FC_R_COILS
Чтение битовых ячеек
@ FC_R_DISC_IN
Чтение дискретных входов
@ FC_W_COILS
Запись нескольких битовых ячеек
@ FC_ERR_W_HOLD_REGS
Ошибка записи нескольких регистров
@ FC_ERR_R_DISC_IN
Ошибка чтения дискретных входов
@ FC_ERR_R_COILS
Ошибка чтения битовых ячеек
@ FC_R_IN_REGS
Чтение регистров хранения
@ FC_W_COIL
Запись битовой ячейки
@ FC_ERR_R_DIAGNOSTIC
Ошибка чтения диагностической информации устройства
@ FC_R_DIAGNOSTICS
Чтение диагностической информации устройства
@ FC_ERR_W_COIL
Ошибка записи битовой ячейки
@ FC_ERR_R_HOLD_REGS
Ошибка чтения входных регистров
@ FC_ERR_R_IN_REGS
Ошибка чтения регистров хранения
@ FC_R_HOLD_REGS
Чтение входных регистров
@ FC_ERR_W_COILS
Ошибка записи нескольких битовых ячеек
@ FC_W_HOLD_REGS
Запись нескольких регистров
@ ET_ILLEGAL_DATA_VALUE
Значение, содержащееся в поле данных запроса, является недопустимой величиной
@ ET_SLAVE_DEVICE_FAILURE
Невосстанавливаемая ошибка имела место, пока ведомое устройство пыталось выполнить затребованное дейс...
@ ET_ILLEGAL_FUNCTION
Принятый код функции не может быть обработан
@ ET_ILLEGAL_DATA_ADDRESS
Адрес данных, указанный в запросе, недоступен
@ RID_REGULAR_IDENTIFICATIONS
Regular Device Identifications.
@ RID_SPEDIFIC_IDENTIFICATIONS
Specific Device Identifications.
@ RID_BASIC_IDENTIFICATIONS
Basic Device Identifications.
@ RID_EXTENDED_IDENTIFICATIONS
Extended Device Identifications.
Конфигурационные параметры Modbus устройства
Определения структур данных Modbus устройства
Structure for device identifications message type.
uint8_t Conformity
Identification conformity level of the device and type of supported access MODBUS_DEVICE_CONFORMITY.
MB_MEITypeDef MEI_Type
MEI Type assigned number for Device Identifications Interface.
Structure for modbus messsage.
MB_FunctonTypeDef FuncCode
Modbus Function Code.
uint16_t Qnt
Quantity of modbus data.
uint8_t MbAddr
Modbus Slave Address.
MB_ExceptionTypeDef Except_Code
Exception Code for the command.
uint16_t MbCRC
Modbus CRC.
MB_DevIdMsgTypeDef DevId
Read Device Identifications Header struct.
uint8_t ByteCnt
Quantity of bytes of data in message to transmit/receive.
uint16_t MbData[DATA_SIZE]
Modbus Data.
uint16_t Addr
Modbus Address of data.