/** ****************************************************************************** * @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 /* 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*************/