/** ************************************************************************** * @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" #include "ds18b20_driver.h" //--------------DEFINES FOR REGISTERS--------------- // DEFINES FOR ARRAYS /** * @addtogroup MODBUS_DATA_RERISTERS_DEFINES * @ingroup MODBUS_DATA * @brief Defines for registers Структура дефайна адресов @verbatim Для массивов регистров: R__ADDR - модбас адресс первого регистра в массиве R__QNT - количество регистров в массиве @endverbatim * @{ */ //typedef struct //{ // uint16_t ROM[4]; // uint16_t Location; // uint16_t Resolution; // uint16_t Losted; //}MB_SensorResponseTypeDef; typedef struct { uint16_t Location; uint16_t ROM[4]; uint16_t Config; uint16_t Status; }MB_SensorParamsTypeDef; /** * @brief Регистры хранения */ typedef struct //MB_DataInRegsTypeDef { uint16_t SensTemperature[DS18B20_DEVICE_AMOUNT]; MB_SensorParamsTypeDef Response; uint16_t reserved; uint16_t AllROMs[DS18B20_DEVICE_AMOUNT][4]; }MB_DataInRegsTypeDef; /** * @brief Входные регистры */ typedef struct //MB_DataInRegsTypeDef { MB_SensorParamsTypeDef InitStruct; }MB_DataHoldRegsTypeDef; // DEFINES FOR INPUT REGISTERS ARRAYS #define R_TEMPERATURE_ADDR (0) #define R_TEMPERATURE_QNT (DS18B20_DEVICE_AMOUNT) #define R_SENS_PARAMS_ADDR (DS18B20_DEVICE_AMOUNT) #define R_SENS_PARAMS_QNT (sizeof(MB_SensorParamsTypeDef)/sizeof(uint16_t)) // DEFINES FOR HOLDING REGISTERS ARRAYS #define R_SENS_INIT_ADDR (0) #define R_SENS_INIT_QNT (sizeof(MB_SensorParamsTypeDef)/sizeof(uint16_t)) // DEFINES FOR REGISTERS LOCAL ADDRESSES //#define R_SET_ERROR(_te_num_) 0 /** 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) @endverbatim * @{ */ /** * @brief Коилы */ typedef struct //MB_DataCoilsTypeDef { /* reg 1 - control */ unsigned RunConvertions:1; unsigned ReadSensor:1; unsigned InitSensor:1; unsigned DeInitSensor:1; unsigned ScanSensors:1; unsigned reserved:11; /* reg 2 - settings */ unsigned ConvertionDone:1; unsigned LostedSensors:1; }MB_DataCoilsTypeDef; // DEFINES FOR COIL ARRAYS #define C_CONTROL_ADDR 0 #define C_CONTROL_QNT 5 #define C_FLAGS_ADDR 16 #define C_FLAGS_QNT 2 /** 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; typedef struct { unsigned length; char *name; }MB_DeviceObjectTypeDef; 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////////////////////