/** ************************************************************************** * @file modbus_data.h * @brief Заголовочный файл с описанием даты MODBUS. * @details Данный файл необходимо подключается в rs_message.h. После rs_message.h * подключается к основному проекту. * * @defgroup MODBUS_DATA * @ingroup MODBUS * @brief Modbus data description * *************************************************************************/ #ifndef _MODBUS_DATA_H_ #define _MODBUS_DATA_H_ #include "stdint.h" //--------------DEFINES FOR REGISTERS--------------- // DEFINES FOR ARRAYS /** * @addtogroup MODBUS_DATA_RERISTERS_DEFINES * @ingroup MODBUS_DATA * @brief Defines for registers Структура дефайна адресов @verbatim Для массивов регистров: R__ADDR - модбас адресс первого регистра в массиве R__QNT - количество регистров в массиве При добавлении новых массивов регистров, необходимо их добавить в функцию MB_DefineRegistersAddress if(MB_Check_Address_For_Arr(Addr, Qnt, R__ADDR, R__QNT) == NO_ERRORS) { *pRegs = MB_Set_Register_Ptr(&, Addr); // начало регистров хранения/входных } @endverbatim * @{ */ /** * @brief Регистры хранения */ typedef struct //MB_DataInRegsTypeDef { uint16_t RESERVED; }MB_DataInRegsTypeDef; /** * @brief Входные регистры */ typedef struct //MB_DataInRegsTypeDef { // Адрес: uint16_t CAN_BITRATE_KBPS; // 0 uint16_t CAN_PERIOD; // 1 uint16_t CAN_ID_HI; // 2 uint16_t CAN_ID_LO; // 3 uint16_t CAN_DLC; // 4 uint16_t reserved[12]; // ... uint16_t CAN_DATA_0; // 16 uint16_t CAN_DATA_1; // 17 uint16_t CAN_DATA_2; // 18 uint16_t CAN_DATA_3; // 19 uint16_t CAN_DATA_4; // 20 uint16_t CAN_DATA_5; // 21 uint16_t CAN_DATA_6; // 22 uint16_t CAN_DATA_7; // 23 }MB_DataHoldRegsTypeDef; // DEFINES FOR INPUT REGISTERS ARRAYS #define R_INPUT_ADDR 0 #define R_INPUT_QNT 1 // DEFINES FOR HOLDING REGISTERS ARRAYS #define R_HOLDING_ADDR 0 #define R_HOLDING_QNT 23 /** MODBUS_DATA_RERISTERS_DEFINES * @} */ //----------------DEFINES FOR COILS----------------- /** * @addtogroup MODBUS_DATA_COILS_DEFINES * @ingroup MODBUS_DATA * @brief Defines for coils @verbatim Структура дефайна Для массивов коилов: C__ADDR - модбас адресс первого коила в массиве C__QNT - количество коилов в массиве (минимум 16) При добавлении новых массивов коилов, необходимо их добавить в функцию MB_DefineCoilsAddress if(MB_Check_Address_For_Arr(Addr, Qnt, C__ADDR, C__QNT) == NO_ERRORS) { *pCoils = MB_Set_Coil_Reg_Ptr(&, Addr); } @endverbatim * @{ */ /** * @brief Коилы * @details Желательно с помощью reserved делать стркутуру кратной 16-битам */ typedef struct //MB_DataCoilsTypeDef { // Адрес: unsigned START_POLLING:1; // 0 unsigned START_SINGLE_FRAME:1; // 1 unsigned HEADER_IDE:1; // 2 unsigned HEADER_RTR:1; // 3 unsigned reserved:13; // ... unsigned FLIP_SRS:1; // 16 unsigned FLIP_IDE:1; // 17 unsigned FLIP_RTR:1; // 18 unsigned FLIP_R1:1; // 19 unsigned FLIP_R0:1; // 20 unsigned FLIP_MSGID_BIT:1; // 21 unsigned FLIP_DATA_BIT:1; // 22 unsigned FLIP_CRC_BIT:1; // 23 unsigned DISABLE_STUFF_BITS:1; // 24 }MB_DataCoilsTypeDef; // DEFINES FOR COIL ARRAYS #define C_CONTROL_ADDR 0 #define C_CONTROL_QNT 24 /** MODBUS_DATA_COILS_DEFINES * @} */ //-----------MODBUS DEVICE DATA SETTING------------- // MODBUS DATA STRUCTTURE /** * @brief Структура со всеми регистрами и коилами модбас * @ingroup MODBUS_DATA */ typedef struct // tester modbus data { MB_DataInRegsTypeDef InRegs; ///< Modbus input registers @ref MB_DataInRegsTypeDef MB_DataCoilsTypeDef Coils; ///< Modbus coils @ref MB_DataCoilsTypeDef MB_DataHoldRegsTypeDef HoldRegs; ///< Modbus holding registers @ref MB_DataHoldRegsTypeDef }MB_DataStructureTypeDef; extern MB_DataStructureTypeDef MB_DATA; /** * @brief Структура для объекта Modbus * @ingroup MODBUS_DATA */ typedef struct { unsigned length; char *name; }MB_DeviceObjectTypeDef; /** * @brief Структура для объектов Modbus * @ingroup MODBUS_DATA */ typedef struct { MB_DeviceObjectTypeDef VendorName; MB_DeviceObjectTypeDef ProductCode; MB_DeviceObjectTypeDef Revision; MB_DeviceObjectTypeDef VendorUrl; MB_DeviceObjectTypeDef ProductName; MB_DeviceObjectTypeDef ModelName; MB_DeviceObjectTypeDef UserApplicationName; }MB_DeviceIdentificationTypeDef; void MB_DevoceInentificationInit(void); #endif //_MODBUS_DATA_H_ ///////////////////////////////////////////////////////////// ///////////////////////TEMP/OUTDATE/OTHER////////////////////