/**
|
******************************************************************************
|
* @file regmap.h
|
* @author AndyChen
|
* @version V1.0
|
* @date 2015-xx-xx
|
* @brief Modbus register address map
|
******************************************************************************
|
* @attention
|
*
|
******************************************************************************
|
*/
|
|
/* Define to prevent recursive inclusion --------------------------------------*/
|
|
#ifndef __REGMAP_H
|
|
#define __REGMAP_H
|
|
/* Includes -------------------------------------------------------------------*/
|
|
#include <stm32f10x.h>
|
|
/* Exported_Macros ------------------------------------------------------------*/
|
|
typedef uint16_t uint16;
|
typedef uint32_t uint32;
|
|
/* Exported_Types -------------------------------------------------------------*/
|
|
//2 byte aligned
|
#pragma pack(2)
|
|
/*-------------------------------É豸ÐòÁкÅ------------------------------------*/
|
|
|
/*-------------------------------Á÷Á¿¼Æ¼ÆÁ¿ÐÅÏ¢------------------------------------*/
|
|
|
|
/*²úÆ·ÐÅÏ¢*/
|
typedef struct
|
{
|
u16 serial_number[5]; /* 51 r */
|
u16 caliber_model; /* 56 r */
|
u16 xinao_serial_number[14]; /* 57 r */
|
u16 main_soft_serial_number[2]; /* 71 r */
|
u16 main_hard_serial_number[3]; /* 73 r */
|
|
} MODBUS_DEVICE_INFO_T;
|
|
|
|
|
/*ʵʱÊý¾Ý*/
|
typedef struct
|
{
|
u8 time[6]; /* 501 64bit integer r */
|
u32 workConTotalFlowzs; /* 504 r */
|
u16 workConTotalFlowxs;
|
|
u32 stdConTotalFlowzs; /* 507 r */
|
u16 stdConTotalFlowxs;
|
|
float workConInstantFlow; /* 510 r */
|
float stdConInstantFlow; /* 512 r */
|
|
float temperatureValue; /* 514 r */
|
float pressureValue; /* 516 r */
|
|
u32 workErrTotalFlowzs; /* 518 r */
|
u16 workErrTotalFlowxs;
|
|
u32 stdErrTotalFlowzs; /* 521 r */
|
u16 stdErrTotalFlowxs;
|
|
u32 reverseWorkConTotalFlowzs; /* 524 r */
|
u16 reverseWorkConTotalFlowxs;
|
|
u32 reverseStdConTotalFlowzs; /* 527 r */
|
u16 reverseStdConTotalFlowxs;
|
|
u32 reverseWorkErrTotalFlowzs; /* 530 r */
|
u16 reverseWorkErrTotalFlowxs;
|
|
u32 reverseStdErrTotalFlowzs; /* 533 r */
|
u16 reverseStdErrTotalFlowxs;
|
|
double calibration_work_cumulative_flow; /* 536 r */ // ¼ì¶¨¹¤¿öÀÛ»ýÁ¿
|
double calibration_standard_cumulative_flow; /* 540 r */ // ¼ì¶¨±ê¿öÀÛ»ýÁ¿
|
|
|
u16 statusWords[6]; /* 544 r */
|
|
float C_coe; //CϵÊý /* 550 r */
|
float K_coe; //KϵÊý /* 552 r */
|
|
float gas_get_factor; //ѹËõÒò×Ó /* 554 r */
|
|
|
float up_sound_timea; //ÉÏÉùµÀʱ¼ä /* 556 r */
|
float up_sound_timeb; //ÉÏÉùµÀʱ¼ä /* 558 r */
|
float down_sound_timea;//ÏÂÉùµÀʱ¼ä /* 560 r */
|
float down_sound_timeb;//ÏÂÉùµÀʱ¼ä /* 562 r */
|
float mid_sound_timea; //ÖÐÉùµÀʱ¼ä /* 564 r */
|
float mid_sound_timeb; //ÖÐÉùµÀʱ¼ä /* 566 r */
|
|
float up_sound_time_difference; //ÉÏÉùµÀʱ¼ä²î /* 568 r */
|
float down_sound_time_difference; //ÏÂÉùµÀʱ¼ä²î /* 570 r */
|
float mid_sound_time_difference; //ÖÐÉùµÀʱ¼ä²î /* 572 r */
|
|
u16 upstre; //ÉÏÉùµÀÐźÅÇ¿¶È /* 574 r */
|
u16 downstre; //ÏÂÉùµÀÐźÅÇ¿¶È /* 575 r */
|
u16 midstre; //ÖÐÉùµÀÐźÅÇ¿¶È /* 576 r */
|
|
u16 upgain; //ÉÏÉùµÀÔöÒæ /* 577 r */
|
u16 downgain; //ÏÂÉùµÀÔöÒæ /* 578 r */
|
u16 midgain; //ÖÐÉùµÀÔöÒæ /* 579 r */
|
|
u16 upsnra; //ÉÏÉùµÀÔëÉù /* 580 r */
|
u16 upsnrb; //ÉÏÉùµÀÔëÉù /* 581 r */
|
u16 downsnra; //ÏÂÉùµÀÔëÉù /* 582 r */
|
u16 downsnrb; //ÏÂÉùµÀÔëÉù /* 583 r */
|
u16 midsnra; //ÖÐÉùµÀÔëÉù /* 584 r */
|
u16 midsnrb; //ÖÐÉùµÀÔëÉù /* 585 r */
|
|
float up_vec; //ÉÏÉùµÀÉùËÙ /* 586 r */
|
float down_vec; //ÏÂÉùµÀÉùËÙ /* 588 r */
|
float mid_vec; //ÖÐÉùµÀÉùËÙ /* 590 r */
|
|
float up_working_instantaneous_flow; //ÉÏÉùµÀÁ÷ËÙ /* 592 r */
|
float down_working_instantaneous_flow;//ÏÂÉùµÀÁ÷ËÙ /* 594 r */
|
float mid_working_instantaneous_flow; //ÖÐÉùµÀÁ÷ËÙ /* 596 r */
|
|
float synthetic_sound_velocity; //ºÏ³ÉÉùËÙ¡£ /* 598 r */
|
float synthetic_flow_velocity; //ºÏ³ÉÁ÷ËÙ¡£ /* 600 r */
|
|
float ambient_temperature; //»·¾³ÎÂ¶È /* 602 r */
|
|
u16 meter_bat_voltage; //¼ÆÁ¿µç³Øµçѹ /* 604 r */
|
u16 meter_bat_percent; //¼ÆÁ¿µç³ØµçѹʣÓà°Ù·Ö±È /* 605 r */
|
|
u16 com_bat_voltage;//ͨÐÅµç³Øµçѹ /* 606 r */
|
u16 com_bat_percent;//ͨÐÅµç³ØµçѹʣÓà°Ù·Ö±È /* 607 r */
|
|
double residual_quantity; //Ê£ÓàÁ¿ /* 608 r */
|
u32 current_unit_price;//µ±Ç°µ¥¼Û /* 612 r */
|
|
u16 newstatusWords[6]; /* 614 r */
|
|
} MODBUS_REALTIME_DATA_T;
|
|
|
|
/*ÌṩÍⲿDTUµÄÐÒé*/
|
typedef struct //14¸öµØÖ·
|
{ /* Register Type R/W */
|
u16 serialnum[14]; /* 2001 32bit float r/w */
|
u16 device_status; /* 2015 */
|
double standard_error_accumul; /* 2016 */
|
double work_error_accumul; /*2020*/
|
float K_coef; /*2024*/
|
u8 flowmeterTime[6]; /*2026*/
|
float soundVec; /*2029*/
|
|
} flowMeterxinaoSerialnum_t;
|
|
|
|
/*ÌṩÍⲿDTUµÄÐÒé²ÎÊý*/
|
typedef struct //14¸öµØÖ·
|
{ /* Register Type R/W */
|
u32 workConTotalFlowzs; /* 3501 r/w */
|
u16 workConTotalFlowxs;
|
|
u32 stdConTotalFlowzs; /* 3504 r/w */
|
u16 stdConTotalFlowxs;
|
|
float workConInstantFlow; /* 3507 r/w */
|
float stdConInstantFlow; /* 3509 r/w */
|
|
float temperatureValue; /* 3511 r/w */
|
float pressureValue; /* 3513 r/w */
|
|
u32 reverseWorkConTotalFlowzs; /* 3515 r/w */
|
u16 reverseWorkConTotalFlowxs;
|
|
u32 reverseStdConTotalFlowzs; /* 3518 r/w */
|
u16 reverseStdConTotalFlowxs;
|
|
// u32 RestartsystemFlow;
|
|
} flowMeterDTUout_t;
|
|
|
|
|
|
|
#pragma pack()
|
|
/* Exported_Functions ---------------------------------------------------------*/
|
|
|
#endif
|
/******************* (C) COPYRIGHT 2015 AndyChen *******END OF FILE*************/
|