commit
This commit is contained in:
@@ -63,8 +63,16 @@
|
||||
* @endverbatim
|
||||
*
|
||||
******************************************************************************/
|
||||
//#pragma pack(push, pack_modbus, 1)
|
||||
|
||||
|
||||
|
||||
|
||||
//#pragma pack(pop, pack_modbus)
|
||||
|
||||
#include "modbus_data.h"
|
||||
#include "rs_message.h"
|
||||
|
||||
uint32_t dbg_temp, dbg_temp2, dbg_temp3; // for debug
|
||||
/* MODBUS HANDLES */
|
||||
extern UART_HandleTypeDef rs_huart;
|
||||
|
||||
@@ -11,10 +11,32 @@
|
||||
*
|
||||
*************************************************************************/
|
||||
|
||||
|
||||
|
||||
|
||||
#ifndef _MODBUS_DATA_H_
|
||||
#define _MODBUS_DATA_H_
|
||||
|
||||
|
||||
|
||||
// DEFINES FOR INPUT REGISTERS ARRAYS
|
||||
#define R_INPUT_ADDR 0
|
||||
#define R_INPUT_QNT 2000
|
||||
|
||||
// DEFINES FOR HOLDING REGISTERS ARRAYS
|
||||
#define R_HOLDING_ADDR 0
|
||||
#define R_HOLDING_QNT 2000
|
||||
|
||||
// DEFINES FOR COIL ARRAYS
|
||||
#define C_CONTROL_ADDR 0
|
||||
#define C_CONTROL_QNT 1000
|
||||
|
||||
|
||||
|
||||
#include "stdint.h"
|
||||
#include "ds18b20_driver.h"
|
||||
#include "PROJ_setup.h"
|
||||
|
||||
|
||||
//--------------DEFINES FOR REGISTERS---------------
|
||||
// DEFINES FOR ARRAYS
|
||||
/**
|
||||
@@ -41,19 +63,36 @@
|
||||
/**
|
||||
* @brief Регистры хранения
|
||||
*/
|
||||
|
||||
|
||||
#define MAX_SENSE 30
|
||||
|
||||
typedef struct //MB_DataInRegsTypeDef
|
||||
{
|
||||
uint16_t sens_Temp[MAX_SENSE];
|
||||
uint16_t UzptPLUS;
|
||||
uint16_t UzptMINUS;
|
||||
uint16_t UzptPLUS_MIN;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @brief Определить размер структуры в регистрах модбас (16-бит слова)
|
||||
*/
|
||||
#define mb_sizeof(_struct_) (sizeof(_struct_)/sizeof(uint16_t))
|
||||
/**
|
||||
* @brief Определить количество резервных байт для выравнивания
|
||||
* @details Выравнивает так, чтобы количество регистров в _struct_ и reserved равнялось _align_.
|
||||
*
|
||||
*/
|
||||
#define mb_fill_rsv(_align_, _struct_) ((_align_ > mb_sizeof(_struct_)) ? (_align_ - mb_sizeof(_struct_)) : 0)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
typedef __PACKED_STRUCT//MB_DataInRegsTypeDef
|
||||
{
|
||||
|
||||
uint16_t sens_Temp[MAX_SENSE];
|
||||
|
||||
uint16_t reserve[mb_fill_rsv(1000, uint16_t[MAX_SENSE])];
|
||||
|
||||
DS18B20_Drv_t ID;
|
||||
uint16_t reserve1[mb_fill_rsv(200, DS18B20_Drv_t)];
|
||||
uint16_t num_Tsens;
|
||||
|
||||
|
||||
}MB_DataInRegsTypeDef;
|
||||
|
||||
@@ -61,20 +100,16 @@ typedef struct //MB_DataInRegsTypeDef
|
||||
/**
|
||||
* @brief Входные регистры
|
||||
*/
|
||||
typedef struct //MB_DataInRegsTypeDef
|
||||
typedef __PACKED_STRUCT //MB_DataInRegsTypeDef
|
||||
{
|
||||
uint16_t set_Temp[MAX_SENSE];
|
||||
uint16_t set_Temp[MAX_SENSE];
|
||||
uint16_t reserve[mb_fill_rsv(100, uint16_t[MAX_SENSE])];
|
||||
uint16_t set_hyst[MAX_SENSE];
|
||||
uint16_t reserve1[mb_fill_rsv(100, uint16_t[MAX_SENSE])];
|
||||
}MB_DataHoldRegsTypeDef;
|
||||
|
||||
|
||||
// DEFINES FOR INPUT REGISTERS ARRAYS
|
||||
#define R_INPUT_ADDR 0
|
||||
#define R_INPUT_QNT 40
|
||||
|
||||
// DEFINES FOR HOLDING REGISTERS ARRAYS
|
||||
#define R_HOLDING_ADDR 0
|
||||
#define R_HOLDING_QNT 40
|
||||
|
||||
|
||||
/** MODBUS_DATA_RERISTERS_DEFINES
|
||||
@@ -110,8 +145,9 @@ typedef struct //MB_DataInRegsTypeDef
|
||||
* @details Желательно с помощью reserved делать стркутуру кратной 16-битам
|
||||
*/
|
||||
typedef union
|
||||
{
|
||||
struct __packed {
|
||||
{
|
||||
__PACKED_STRUCT
|
||||
{
|
||||
unsigned state_val_01:1;
|
||||
unsigned state_val_02:1;
|
||||
unsigned state_val_03:1;
|
||||
@@ -133,19 +169,92 @@ typedef union
|
||||
|
||||
|
||||
}word;
|
||||
typedef struct //MB_DataCoilsTypeDef
|
||||
typedef union
|
||||
{
|
||||
__PACKED_STRUCT
|
||||
{
|
||||
unsigned Temp1_relay_isOn :1;
|
||||
unsigned Temp2_relay_isOn :1;
|
||||
unsigned Temp3_relay_isOn :1;
|
||||
unsigned Temp4_relay_isOn :1;
|
||||
unsigned Temp5_relay_isOn :1;
|
||||
unsigned Temp6_relay_isOn :1;
|
||||
unsigned Temp7_relay_isOn :1;
|
||||
unsigned Temp8_relay_isOn :1;
|
||||
unsigned Temp9_relay_isOn :1;
|
||||
unsigned Temp10_relay_isOn :1;
|
||||
unsigned Temp11_relay_isOn :1;
|
||||
unsigned Temp12_relay_isOn :1;
|
||||
unsigned Temp13_relay_isOn :1;
|
||||
unsigned Temp14_relay_isOn :1;
|
||||
unsigned Temp15_relay_isOn :1;
|
||||
unsigned Temp16_relay_isOn :1;
|
||||
|
||||
|
||||
} state_val_bit;
|
||||
uint16_t all;
|
||||
|
||||
|
||||
}RELAY_Struct;
|
||||
|
||||
typedef union
|
||||
{
|
||||
__PACKED_STRUCT
|
||||
{
|
||||
unsigned Temp1_isConnected :1;
|
||||
unsigned Temp2_isConnected :1;
|
||||
unsigned Temp3_isConnected :1;
|
||||
unsigned Temp4_isConnected :1;
|
||||
unsigned Temp5_isConnected :1;
|
||||
unsigned Temp6_isConnected :1;
|
||||
unsigned Temp7_isConnected :1;
|
||||
unsigned Temp8_isConnected :1;
|
||||
unsigned Temp9_isConnected :1;
|
||||
unsigned Temp10_isConnected :1;
|
||||
unsigned Temp11_isConnected :1;
|
||||
unsigned Temp12_isConnected :1;
|
||||
unsigned Temp13_isConnected :1;
|
||||
unsigned Temp14_isConnected :1;
|
||||
unsigned Temp15_isConnected :1;
|
||||
unsigned Temp16_isConnected :1;
|
||||
|
||||
} state_val_bit;
|
||||
uint16_t all;
|
||||
|
||||
|
||||
}STATUS_TSENS;
|
||||
|
||||
|
||||
typedef __PACKED_STRUCT
|
||||
{
|
||||
int temp ;
|
||||
unsigned Temp_relay_on :1;
|
||||
unsigned Temp_relay_off :1;
|
||||
unsigned is_connect:1;
|
||||
|
||||
}Temp_sens;
|
||||
extern Temp_sens temp_sens ;
|
||||
|
||||
typedef __PACKED_STRUCT
|
||||
{
|
||||
|
||||
|
||||
word coils[2];
|
||||
|
||||
word coils[3]; //32
|
||||
uint16_t reserve1[mb_fill_rsv(128/16, word[3])];
|
||||
STATUS_TSENS status_tSens[MAX_SENSE/16]; //32
|
||||
uint16_t reserve2[mb_fill_rsv(128/16, STATUS_TSENS[MAX_SENSE/16])];
|
||||
RELAY_Struct relay_struct[MAX_SENSE/16*2];//16 2 реле на 1 датчик
|
||||
uint16_t reserve3[mb_fill_rsv(128/16, RELAY_Struct[MAX_SENSE/16*2])];
|
||||
|
||||
unsigned init_param:1;
|
||||
unsigned reserved:15;
|
||||
unsigned init_Tsens:1;
|
||||
unsigned Save_Param_to_Flash:1;
|
||||
unsigned reserved2:14;
|
||||
|
||||
}MB_DataCoilsTypeDef;
|
||||
|
||||
// DEFINES FOR COIL ARRAYS
|
||||
#define C_CONTROL_ADDR 0
|
||||
#define C_CONTROL_QNT 100
|
||||
|
||||
|
||||
/** MODBUS_DATA_COILS_DEFINES
|
||||
* @}
|
||||
|
||||
Reference in New Issue
Block a user