/*
 * File:   __GP30W_GP30_APP_H
 * Author:
 *
 * Created on：2015-5-18
 */

#ifndef __UWater_GP22_APP_H
#define	__UWater_GP22_APP_H

#include "type.h"
#include "UWater_gp22_driver.h"
#include "UWater_TemperatureCalculate_app.h"

#include <string.h>
 
/*--------------------------------- Variable Define ------------------------------------*/
/*************************宏定义****************************/
#define REAL_XTAL_CLOCK   4000000 //用于计算精确1US定时器的理论时钟频率
#define TEST_ALARMA_RTCC_US  (FACTOR_1*1000000) //鉴定状态计算流量的时间间隔
#define CALCULATED_COEFFICIENT     (STM32_SYSCLK/REAL_XTAL_CLOCK)
#define ALARMA_STOP_CHECK_TICKS    ((TEST_ALARMA_RTCC_US + 100000)*CALCULATED_COEFFICIENT) //防护的精确时间间隔


/*************************表计RAM区复位宏定义****************************/
#define GP30_COPY_RESET_TEST_FLAG 0x5A6B7C8D //软件复位前的表计处于检定状态
#define GP30_COPY_RESET_NORMAL_FLAG 0x8D7C6B5A //软件复位前的表计处于非检定状态
#define MCU_RESET_JUDGE_FLAG  0x3A4B5C6D //是否为软件复位的标志

/*************************时间差0流量校准标志宏定义****************************/
#define DIFTOF_CALIBRATION_FLAG 0xA1B2C3D4E5F6A7B8 //启用零流量校准标志字
//#define DIFTOF_HIGH_TEMP_CALIBRATION_VALUE 0x189//启用校准的情况下，高温时间差根据测试结果多减去1500ps
//#define DIFTOF_HIGH_TEMP_CALIBRATION_VALUE_FLOAT (float)0.006 //高温校准时，时间差提高1500ps（0.006=1.5ns/250），抵消温度大于35度时减少的1500ps
//#define DIFTOF_HIGH_TEMP_START_FLOW_COMPENSATE 0x106//启用校准的情况下，30度以上始动流量提高1000ps（0x106=262=1*65536/250）
//#define DIFTOF_LOW_TEMP_START_FLOW_COMPENSATE  0xB7//启用校准的情况下，30度及30度以下始动流量提高700ps（0xB8=184=0.7*65536/250）
#define DIFTOF_CALIBRATION_CNT 41400//每天累计23小时走水，则认为需要自校准41400=3600*23/2
#define DIFTOF_CALIBRATION_MIN (float)-0.04//10ns/250=0.04
#define DIFTOF_CALIBRATION_MAX (float)0.04
/************************表计开关阀判断参数****************************/
#define FLOAT_15NS              (float)0.06//15ns时间差对应的滤波时的float类型数值=15/250
#define FLOAT_2NS              (float)0.04//10ns时间差对应的滤波时的float类型数值=10/250
#define TOF_UP_AM                 150//up振幅平均阈值
#define TOF_DOWN_AM               150//down振幅平均阈值

#define UP_AM_MAX   600
#define DOWN_AM_MAX   600


#if  DN15_BRASS_40KPA_GP30_32768  ||  WDFS_DN15_BRASS_40KPA_GP30_32768                         //条件编译
#define FRAME_FIRST_POWER_FLG   0x16  
#define FRAME_CALIBER           0x15    
#define FM_METER_TYPE       	0x04			//表计类型DN15 40Kpa 04
#define GP30_APP_DNX        0X15

#elif   LLGS_DN15_BRASS_40KPA_GP30_32768 || LLGS_WDFS_DN15_BRASS_40KPA_GP30_32768
#define FRAME_FIRST_POWER_FLG   0x16 //修改  
#define FRAME_CALIBER           0x15 
#define FM_METER_TYPE       	0x10			//表计类型BM_DN15 63Kpa 16
#define GP30_APP_DNX        0X15

#elif   ROUND_LLGS_DN15_BRASS_40KPA_GP30_32768 || ROUND_LLGS_WDFS_DN15_BRASS_40KPA_GP30_32768 || Buxiugang_LLGS_WDFS_DN15_BXG_40KPA_GP30_32768 || Plastic_LLGS_WDFS_DN15_PALSTIC_40KPA_GP30_32768
#define FRAME_FIRST_POWER_FLG   0x16  
#define FRAME_CALIBER           0x15 
#define FM_METER_TYPE       	0x1A			//圆壳表  26
#define GP30_APP_DNX        0X15

#elif   ROUND_LLGS_XFZ_DN15_BRASS_40KPA_GP30_32768
#define FRAME_FIRST_POWER_FLG   0x16  
#define FRAME_CALIBER           0x15 
#define FM_METER_TYPE       	0x1A			//圆壳表  28
#define GP30_APP_DNX        0X15

//20211204
#elif   PF_DN15_BRASS_63KPA_GP30_32768 
#define FRAME_FIRST_POWER_FLG   0x16   
#define FRAME_CALIBER           0x15 
#define FM_METER_TYPE       	0x13			//表计类型  19
#define GP30_APP_DNX        0X15

#elif   BM_DN15_BRASS_63KPA_GP30_32768
#define FRAME_FIRST_POWER_FLG   0x16  
#define FRAME_CALIBER           0x15 
#define FM_METER_TYPE       	0x01			//表计类型BM_DN15 63Kpa 01
#define GP30_APP_DNX        0X15

#elif   MID_DN15_BRASS_63KPA_GP30_32768
#define FRAME_FIRST_POWER_FLG   0x16  
#define FRAME_CALIBER           0x15 
#define FM_METER_TYPE       	0x07			//表计类型DN15 63Kpa 07
#define GP30_APP_DNX        0X15

#elif	EN_DN15_BRASS_63KPA_GP30_32768
#define FRAME_FIRST_POWER_FLG   0x16  
#define FRAME_CALIBER           0x15 
#define FM_METER_TYPE       	0x0E			//表计类型DN15 63Kpa 14
#define GP30_APP_DNX        0X15

#elif   DN20_BRASS_40KPA_GP30_32768 ||  WDFS_DN20_BRASS_40KPA_GP30_32768
#define FRAME_FIRST_POWER_FLG   0x20  
#define FRAME_CALIBER           0x20 
#define FM_METER_TYPE       	0x05			//表计类型DN20 40Kpa 05
#define GP30_APP_DNX        0X20

#elif   BM_DN20_BRASS_63KPA_GP30_32768
#define FRAME_FIRST_POWER_FLG   0x20  
#define FRAME_CALIBER           0x20 
#define FM_METER_TYPE       	0x02			//表计类型BM_DN20 40Kpa 02
#define GP30_APP_DNX        0X20

#elif   MID_DN20_BRASS_63KPA_GP30_32768
#define FRAME_FIRST_POWER_FLG   0x20  
#define FRAME_CALIBER           0x20 
#define FM_METER_TYPE       	0x08			//表计类型DN20 63Kpa 08
#define GP30_APP_DNX        0X20

#elif   EN_DN20_BRASS_63KPA_GP30_32768
#define FRAME_FIRST_POWER_FLG   0x20  
#define FRAME_CALIBER           0x20 
#define FM_METER_TYPE       	0x0F			//表计类型BM_DN20 40Kpa 0F
#define GP30_APP_DNX        0X20

#elif   LLGS_DN20_BRASS_40KPA_GP30_32768 || LLGS_WDFS_DN20_BRASS_40KPA_GP30_32768
#define FRAME_FIRST_POWER_FLG   0x20  
#define FRAME_CALIBER           0x20 
#define FM_METER_TYPE       	0x11			//表计类型LLGS_DN20 40Kpa 17
#define GP30_APP_DNX        0X20

#elif   ROUND_LLGS_DN20_BRASS_40KPA_GP30_32768 || ROUND_LLGS_WDFS_DN20_BRASS_40KPA_GP30_32768 || Buxiugang_LLGS_WDFS_DN20_BXG_40KPA_GP30_32768
#define FRAME_FIRST_POWER_FLG   0x20  
#define FRAME_CALIBER           0x20 
#define FM_METER_TYPE       	0x1B			//圆壳表  27
#define GP30_APP_DNX        0X20

#elif ROUND_LLGS_XFZ_DN20_BRASS_40KPA_GP30_32768
#define FRAME_FIRST_POWER_FLG   0x20  
#define FRAME_CALIBER           0x20 
#define FM_METER_TYPE       	0x1D			//圆壳表  29
#define GP30_APP_DNX        0X20

//20211205
#elif   PF_DN20_BRASS_63KPA_GP30_32768
#define FRAME_FIRST_POWER_FLG   0x20  
#define FRAME_CALIBER           0x14 
#define FM_METER_TYPE       	0x14			//表计类型PF_DN20_BRASS_63KPA_GP30_32768 20
#define GP30_APP_DNX        0X20

#elif DN25_BRASS_40KPA_GP30_32768
#define FRAME_FIRST_POWER_FLG   0x25  
#define FRAME_CALIBER           0x25 
#define FM_METER_TYPE       	0x09			//表计类型DN25 40Kpa 09
#define GP30_APP_DNX        0X25

#elif BM_DN25_BRASS_63KPA_GP30_32768
#define FRAME_FIRST_POWER_FLG   0x25  
#define FRAME_CALIBER           0x25 
#define FM_METER_TYPE       	0x03			//表计类型DN25 63Kpa 03
#define GP30_APP_DNX        0X25

#elif MID_DN25_BRASS_63KPA_GP30_32768
#define FRAME_FIRST_POWER_FLG   0x25  
#define FRAME_CALIBER           0x25 
#define FM_METER_TYPE       	0x06			//表计类型DN25 63Kpa 06
#define GP30_APP_DNX        0X25

#elif LLGS_DN25_BRASS_40KPA_GP30_32768
#define FRAME_FIRST_POWER_FLG   0x25  
#define FRAME_CALIBER           0x25 
#define FM_METER_TYPE       	0x12			//表计类型DN25 40Kpa 18
#define GP30_APP_DNX        0X25
//20211205
#elif PF_DN25_BRASS_63KPA_GP30_32768
#define FRAME_FIRST_POWER_FLG   0x25  
#define FRAME_CALIBER           0x25 
#define FM_METER_TYPE       	0x15			//表计类型DN25 40Kpa 21
#define GP30_APP_DNX        0X25

#elif   DN32_BRASS_63KPA_GP30_32768	
#define FRAME_FIRST_POWER_FLG   0x32  
#define FRAME_CALIBER           0x20 
#define FM_METER_TYPE       	0x16			//表计类型DN32 63Kpa 22
#define GP30_APP_DNX        0X32

#elif  BM_DN32_BRASS_63KPA_GP30_32768 
#define FRAME_FIRST_POWER_FLG   0x32  
#define FRAME_CALIBER           0x32 
#define FM_METER_TYPE       	0x0C			//表计类型DN32 63Kpa 0C
#define GP30_APP_DNX        0X32
//20211205
#elif  PF_DN32_BRASS_63KPA_GP30_32768 
#define FRAME_FIRST_POWER_FLG   0x32  
#define FRAME_CALIBER           0x20 
#define FM_METER_TYPE       	0x17			//表计类型DN32 63Kpa 23  //FM_METER_TYPE没改
#define GP30_APP_DNX        0X32  

#elif  DN40_BRASS_63KPA_GP30_32768	
#define FRAME_FIRST_POWER_FLG   0x40  
#define FRAME_CALIBER           0x28 
#define FM_METER_TYPE       	0x19			//表计类型DN40 63Kpa 25
#define GP30_APP_DNX           0X40
#elif BM_DN40_BRASS_63KPA_GP30_32768 
#define FRAME_FIRST_POWER_FLG   0x40  
#define FRAME_CALIBER           0x40 
#define FM_METER_TYPE       	0x0D			//表计类型DN40 63Kpa 0D
#define GP30_APP_DNX        0X40

//20211205
#elif PF_DN40_BRASS_63KPA_GP30_32768 
#define FRAME_FIRST_POWER_FLG   0x40  
#define FRAME_CALIBER           0x28 
#define FM_METER_TYPE       	0x18			//表计类型DN40 63Kpa 24  //FM_METER_TYPE没改
#define GP30_APP_DNX        0X40

#endif

#if		  DN15_BRASS_40KPA_GP30_32768 || WDFS_DN15_BRASS_40KPA_GP30_32768 || LLGS_DN15_BRASS_40KPA_GP30_32768 || LLGS_WDFS_DN15_BRASS_40KPA_GP30_32768
#define   DEFAULT_START_FLOW   0x00B7 //DN15铜40KPA时的使动流量数值  700ns
#define   FLOW_RATE_FILTER_COEFFICIENT  (float)0.2//瞬时流量滤波系数
#define   GP30_DIFTOF_FILTER_COEFFICIENT  (FLOW_RATE_FILTER_COEFFICIENT*(float)2)//活塞台子时间差滤波系数
#define   DIFTOF_COEFFICIENT  (float)0.185217176//  16L/h对应的时间差均值2.96347
#define   R400Q1              (float)6.25
#define   R400Q2              (float)10
#define   R250Q2              (float)16
#define   Q3_3_3              (float)825
#define   Q3_6_6              (float)1650
#define   MIN_FLOW_0_6              0x50000//最小流量的50%
#define   MAX_FLOW_1_02             0xC730000//过载流量的102%
#define   MIN_FLOW_0_3              0x30000//最小流量的30%
#define   LIMIT_FLOW_1_5Q4          4680//1.5倍的过载流量
#define   LIMIT_DIFTOF_FORWARD          0x00033333   //-200~-800ns时间差判断，时间差为正
#define   LIMIT_DIFTOF_REVERSE          0x8000CCCC   //-200~-800ns时间差判断，时间差为负
#define   SEGMENT_NUM_SMALL              9
#define   SEGMENT_NUM_MIDDLE             25//2021-0703
#define   SEGMENT_NUM_LARGE              85	
#define   SEGMENT_NUM_ERROR_MIDDLE       (SEGMENT_NUM_LARGE/2)   //（此处DN15的值用的同一条曲线，只为了兼容4段）误差曲线新增，为了适配4段的建模

#define   DXS_SEGMENT_NUM_LARGE          280 //多项式的基础模型分段值

#define   CALIBRATION_PROTECT_VALUE       ((float)0.9*R400Q2)	//防冻校准流速小于0.9倍Q1即不走数
#define   TOF_AM_VALUE                190
#define   TOF_UP_AM_0_8               (0.8*TOF_AM_VALUE)//up最大幅值0.8倍
#define   TOF_DOWN_AM_0_8             (0.8*TOF_AM_VALUE)//down最大幅值0.8倍
#define   Q1_0_8                 (float)8//0.8倍的R250的Q1数值

#define   TOF_UP_DATA                   (float)55909.72//20度下UP单程时间ns
#define   LEGENTH_SPEED_SOUND           (float)82872.617//声路长度=1482.257772*TOF_UP_DATA   单位um   
#define   LEGENTH_SPEED_SOUND_DAOSHU    (float)6.03335598778e-9//声路长度倒数
	
//理论模型
#define   REAL_SOUND_PATH_LENGTH              (float)59.8//(float)74.863   //L*cos  还是 D*cot—— D准确  ——————————————2021-2-1改为弦向尺寸    2021-7-21 ——15的59.8；20的59.95
#define   MEASYRING_TUBE_DIAMETER             (float)10.7   //15的10.7,  20的13.6
#define   FLOW_RATE_MULTIPLIER				  (float)8.361204e-9//(float)6.6788667e-9  //  流速计算常数=  1e-9/(2*(L有效))/0.001
#define   FLOW_MULTIPLIER				      (float)335.9905  //  流量计算常数=  (3.1416*D*D*1e-6/4 )*3600 *1000L/h   //面积 15:93.3307  20：146.631
    
//流量曲线的数量开关
//#define   SUBSECTION_NUM_THREE           1
#define   SUBSECTION_NUM_FOUR            1
//#define   SUBSECTION_NUM_FIVE            1

#elif ROUND_LLGS_DN15_BRASS_40KPA_GP30_32768 || ROUND_LLGS_WDFS_DN15_BRASS_40KPA_GP30_32768 
#define   DEFAULT_START_FLOW   0x00B7 //DN15铜40KPA时的使动流量数值  700ns
#define   FLOW_RATE_FILTER_COEFFICIENT  (float)0.2//瞬时流量滤波系数
#define   GP30_DIFTOF_FILTER_COEFFICIENT  (FLOW_RATE_FILTER_COEFFICIENT*(float)2)//活塞台子时间差滤波系数
#define   DIFTOF_COEFFICIENT  (float)0.185217176//  16L/h对应的时间差均值2.96347
#define   R400Q1              (float)6.25
#define   R400Q2              (float)10
#define   R250Q2              (float)16
#define   Q3_3_3              (float)825
#define   Q3_6_6              (float)1650
#define   MIN_FLOW_0_6              0x50000//最小流量的50%
#define   MAX_FLOW_1_02             0xC730000//过载流量的102%
#define   MIN_FLOW_0_3              0x30000//最小流量的30%
#define   LIMIT_FLOW_1_5Q4          4680//1.5倍的过载流量
#define   LIMIT_DIFTOF_FORWARD          0x00033333   //-200~-800ns时间差判断，时间差为正
#define   LIMIT_DIFTOF_REVERSE          0x8000CCCC   //-200~-800ns时间差判断，时间差为负
#define   SEGMENT_NUM_SMALL              15
#define   SEGMENT_NUM_MIDDLE             43
#define   SEGMENT_NUM_LARGE              230

#define   DXS_SEGMENT_NUM_LARGE          280 //多项式的基础模型分段值
 

#define   CALIBRATION_PROTECT_VALUE       ((float)0.9*R400Q2)	//防冻校准流速小于0.9倍Q1即不走数
#define   TOF_AM_VALUE                190
#define   TOF_UP_AM_0_8               (0.8*TOF_AM_VALUE)//up最大幅值0.8倍
#define   TOF_DOWN_AM_0_8             (0.8*TOF_AM_VALUE)//down最大幅值0.8倍
#define   Q1_0_8                 (float)8//0.8倍的R250的Q1数值

#define   TOF_UP_DATA                   (float)57442.78//20度下UP单程时间ns
#define   LEGENTH_SPEED_SOUND           (float)85145.007//声路长度=1482.257772*TOF_UP_DATA   单位um   
#define   LEGENTH_SPEED_SOUND_DAOSHU    (float)5.8723349381e-9//声路长度倒数
#define   TOF_UP_DOWN_DAOSHUHE_LOW          (float)0.035591  //1/up + 1/down   35度以下   
#define   TOF_UP_DOWN_DAOSHUHE_MIDDLE        (float)0.0359228//1/up + 1/down    35~45度
	
//理论模型
#define   REAL_SOUND_PATH_LENGTH              (float)62//
#define   MEASYRING_TUBE_DIAMETER             (float)11.5   //15的11.5,  20的12.5
#define   FLOW_RATE_MULTIPLIER				  (float)8.064516e-9 //  流速计算常数=  1e-9/(2*(L有效))/0.001
#define   FLOW_MULTIPLIER				      (float)373.92894 //  流量计算常数=  (3.1416*D*D*1e-6/4 )*3600 *1000L/h  15口径面积：103.86915  20口径面积：122.71875
    
//流量曲线的数量开关
//#define   SUBSECTION_NUM_THREE           1
#define   SUBSECTION_NUM_FOUR            1
//#define   SUBSECTION_NUM_FIVE            1

#elif  Plastic_LLGS_WDFS_DN15_PALSTIC_40KPA_GP30_32768
#define   DEFAULT_START_FLOW   0x00B7 //DN15铜40KPA时的使动流量数值  700ns
#define   FLOW_RATE_FILTER_COEFFICIENT  (float)0.2//瞬时流量滤波系数
#define   GP30_DIFTOF_FILTER_COEFFICIENT  (FLOW_RATE_FILTER_COEFFICIENT*(float)2)//活塞台子时间差滤波系数
#define   DIFTOF_COEFFICIENT  (float)0.163410708 //  16L/h对应的时间差均值2.677016788
#define   R400Q1              (float)6.25
#define   R400Q2              (float)10
#define   R250Q2              (float)16
#define   Q3_3_3              (float)825
#define   Q3_6_6              (float)1650
#define   MIN_FLOW_0_6              0x50000//最小流量的50%
#define   MAX_FLOW_1_02             0xC730000//过载流量的102%
#define   MIN_FLOW_0_3              0x30000//最小流量的30%
#define   LIMIT_FLOW_1_5Q4          4680//1.5倍的过载流量
#define   LIMIT_DIFTOF_FORWARD          0x00033333   //-200~-800ns时间差判断，时间差为正
#define   LIMIT_DIFTOF_REVERSE          0x8000CCCC   //-200~-800ns时间差判断，时间差为负
#define   SEGMENT_NUM_SMALL              13                // 校准点 6 10 16 80 2500
#define   SEGMENT_NUM_MIDDLE             26
#define   SEGMENT_NUM_LARGE              75

#define   DXS_SEGMENT_NUM_LARGE          280 //多项式的基础模型分段值

#define   CALIBRATION_PROTECT_VALUE       ((float)0.9*R400Q2)	//防冻校准流速小于0.9倍Q1即不走数
#define   TOF_AM_VALUE                240 //190
#define   TOF_UP_AM_0_8               (0.8*TOF_AM_VALUE)//up最大幅值0.8倍
#define   TOF_DOWN_AM_0_8             (0.8*TOF_AM_VALUE)//down最大幅值0.8倍
#define   Q1_0_8                 (float)8//0.8倍的R250的Q1数值

#define   TOF_UP_DATA                   (float)57442.78//20度下UP单程时间ns
#define   LEGENTH_SPEED_SOUND           (float)85145.007//声路长度=1482.257772*TOF_UP_DATA   单位um   
#define   LEGENTH_SPEED_SOUND_DAOSHU    (float)5.8723349381e-9//声路长度倒数
#define   TOF_UP_DOWN_DAOSHUHE_LOW          (float)0.035591  //1/up + 1/down   35度以下   
#define   TOF_UP_DOWN_DAOSHUHE_MIDDLE        (float)0.0359228//1/up + 1/down    35~45度
	
//理论模型
#define   REAL_SOUND_PATH_LENGTH              (float)60//
#define   MEASYRING_TUBE_DIAMETER             (float)11.7   //15的11.5,  20的12.5
#define   FLOW_RATE_MULTIPLIER				  (float)8.33333e-9 //  流速计算常数=  1e-9/(2*(L有效))/0.001
#define   FLOW_MULTIPLIER				      (float)387.04826 //  流量计算常数=  (3.1416*D*D*1e-6/4 )*3600 *1000L/h  15口径面积：103.86915  20口径面积：122.71875
    
//流量曲线的数量开关
//#define   SUBSECTION_NUM_THREE           1
#define   SUBSECTION_NUM_FOUR            1
//#define   SUBSECTION_NUM_FIVE            1

#elif Buxiugang_LLGS_WDFS_DN15_BXG_40KPA_GP30_32768
#define   DEFAULT_START_FLOW   0x00B7 //DN15铜40KPA时的使动流量数值  700ns
#define   FLOW_RATE_FILTER_COEFFICIENT  (float)0.2//瞬时流量滤波系数
#define   GP30_DIFTOF_FILTER_COEFFICIENT  (FLOW_RATE_FILTER_COEFFICIENT*(float)2)//活塞台子时间差滤波系数
#define   DIFTOF_COEFFICIENT  (float)0.189303125 //  16L/h对应的时间差均值3.101189931
#define   R400Q1              (float)6.25
#define   R400Q2              (float)10
#define   R250Q2              (float)16
#define   Q3_3_3              (float)825
#define   Q3_6_6              (float)1650
#define   MIN_FLOW_0_6              0x50000//最小流量的50%
#define   MAX_FLOW_1_02             0xC730000//过载流量的102%
#define   MIN_FLOW_0_3              0x30000//最小流量的30%
#define   LIMIT_FLOW_1_5Q4          4680//1.5倍的过载流量
#define   LIMIT_DIFTOF_FORWARD          0x00033333   //-200~-800ns时间差判断，时间差为正
#define   LIMIT_DIFTOF_REVERSE          0x8000CCCC   //-200~-800ns时间差判断，时间差为负
#define   SEGMENT_NUM_SMALL              13
#define   SEGMENT_NUM_MIDDLE             26
#define   SEGMENT_NUM_LARGE              75
#define   SEGMENT_NUM_ERROR_MIDDLE       35 // 13~80 的流量分为2段  13~40一段、26~80一段

#define   DXS_SEGMENT_NUM_LARGE          280 //多项式的基础模型分段值
 

#define   CALIBRATION_PROTECT_VALUE       ((float)0.9*R400Q2)	//防冻校准流速小于0.9倍Q1即不走数
#define   TOF_AM_VALUE                190
#define   TOF_UP_AM_0_8               (0.8*TOF_AM_VALUE)//up最大幅值0.8倍
#define   TOF_DOWN_AM_0_8             (0.8*TOF_AM_VALUE)//down最大幅值0.8倍
#define   Q1_0_8                 (float)8//0.8倍的R250的Q1数值

#define   TOF_UP_DATA                   (float)57442.78//20度下UP单程时间ns
#define   LEGENTH_SPEED_SOUND           (float)85145.007//声路长度=1482.257772*TOF_UP_DATA   单位um   
#define   LEGENTH_SPEED_SOUND_DAOSHU    (float)5.8723349381e-9//声路长度倒数
#define   TOF_UP_DOWN_DAOSHUHE_LOW          (float)0.035591  //1/up + 1/down   35度以下   
#define   TOF_UP_DOWN_DAOSHUHE_MIDDLE        (float)0.0359228//1/up + 1/down    35~45度
	
//理论模型
#define   REAL_SOUND_PATH_LENGTH              (float)62//
#define   MEASYRING_TUBE_DIAMETER             (float)11.1   //15的11.1,//不锈钢
#define   FLOW_RATE_MULTIPLIER				  (float)8.064516e-9 //  流速计算常数=  1e-9/(2*(L有效))/0.001
#define   FLOW_MULTIPLIER				      (float)348.36888 //  流量计算常数=  (3.1416*D*D*1(e-6)/4 )*3600 *1000L/h  15口径面积：103.86915  20口径面积：122.71875
    
//流量曲线的数量开关
//#define   SUBSECTION_NUM_THREE           1
#define   SUBSECTION_NUM_FOUR            1
//#define   SUBSECTION_NUM_FIVE            1

#elif ROUND_LLGS_XFZ_DN15_BRASS_40KPA_GP30_32768
#define   DEFAULT_START_FLOW   0x00B7 //DN15铜40KPA时的使动流量数值  700ns
#define   FLOW_RATE_FILTER_COEFFICIENT  (float)0.2//瞬时流量滤波系数
#define   GP30_DIFTOF_FILTER_COEFFICIENT  (FLOW_RATE_FILTER_COEFFICIENT*(float)2)//活塞台子时间差滤波系数
#define   DIFTOF_COEFFICIENT  (float)0.185217176//  16L/h对应的时间差均值2.96347
#define   R400Q1              (float)6.25
#define   R400Q2              (float)10
#define   R250Q2              (float)16
#define   Q3_3_3              (float)825
#define   Q3_6_6              (float)1650
#define   MIN_FLOW_0_6              0x50000//最小流量的50%
#define   MAX_FLOW_1_02             0xC730000//过载流量的102%
#define   MIN_FLOW_0_3              0x30000//最小流量的30%
#define   LIMIT_FLOW_1_5Q4          4680//1.5倍的过载流量
#define   LIMIT_DIFTOF_FORWARD          0x00033333   //-200~-800ns时间差判断，时间差为正
#define   LIMIT_DIFTOF_REVERSE          0x8000CCCC   //-200~-800ns时间差判断，时间差为负
#define   SEGMENT_NUM_SMALL              15                // 10 16 28 100 2500
#define   SEGMENT_NUM_MIDDLE             28
#define   SEGMENT_NUM_LARGE              93

#define   DXS_SEGMENT_NUM_LARGE          280 //多项式的基础模型分段值
 

#define   CALIBRATION_PROTECT_VALUE       ((float)0.9*R400Q2)	//防冻校准流速小于0.9倍Q1即不走数
#define   TOF_AM_VALUE                240 //190
#define   TOF_UP_AM_0_8               (0.8*TOF_AM_VALUE)//up最大幅值0.8倍
#define   TOF_DOWN_AM_0_8             (0.8*TOF_AM_VALUE)//down最大幅值0.8倍
#define   Q1_0_8                 (float)8//0.8倍的R250的Q1数值

#define   TOF_UP_DATA                   (float)57442.78//20度下UP单程时间ns
#define   LEGENTH_SPEED_SOUND           (float)85145.007//声路长度=1482.257772*TOF_UP_DATA   单位um   
#define   LEGENTH_SPEED_SOUND_DAOSHU    (float)5.8723349381e-9//声路长度倒数
#define   TOF_UP_DOWN_DAOSHUHE_LOW          (float)0.035591  //1/up + 1/down   35度以下   
#define   TOF_UP_DOWN_DAOSHUHE_MIDDLE        (float)0.0359228//1/up + 1/down    35~45度
	
//理论模型
#define   REAL_SOUND_PATH_LENGTH              (float)62//
#define   MEASYRING_TUBE_DIAMETER             (float)11.5   //15的11.5,  20的12.5
#define   FLOW_RATE_MULTIPLIER				  (float)8.064516e-9 //  流速计算常数=  1e-9/(2*(L有效))/0.001
#define   FLOW_MULTIPLIER				      (float)373.92894 //  流量计算常数=  (3.1416*D*D*1e-6/4 )*3600 *1000L/h  15口径面积：103.86915  20口径面积：122.71875
    
//流量曲线的数量开关
//#define   SUBSECTION_NUM_THREE           1
#define   SUBSECTION_NUM_FOUR            1
//#define   SUBSECTION_NUM_FIVE            1


#elif     MID_DN15_BRASS_63KPA_GP30_32768//长款换能器欧版DN15口径 2022-08-04
#define   DEFAULT_START_FLOW  0x00B7 //DN15铜63KPA时的使动流量数值 
#define   FLOW_RATE_FILTER_COEFFICIENT  (float)0.3//瞬时流量滤波系数
#define   GP30_DIFTOF_FILTER_COEFFICIENT  (FLOW_RATE_FILTER_COEFFICIENT*(float)2)//活塞台子时间差滤波系数
#define   DIFTOF_COEFFICIENT  (float)0.200274918// 
#define   R400Q1              (float)6.25
#define   R400Q2              (float)10
#define   R250Q2              (float)16
#define   Q3_3_3              (float)825
#define   Q3_6_6              (float)1650
#define   MIN_FLOW_0_6              0x50000//最小流量的50%
#define   MAX_FLOW_1_02             0xC730000//过载流量的102%
#define   MIN_FLOW_0_3              0x30000//最小流量的30%
#define   LIMIT_FLOW_1_5Q4          4680//1.5倍的过载流量
#define   LIMIT_DIFTOF_FORWARD          0x000347AE   //-220~820ns时间差判断，时间差为正
#define   LIMIT_DIFTOF_REVERSE          0x8000E147   //-220~-820ns时间差判断，时间差为负
#define   SEGMENT_NUM_SMALL              8
#define   SEGMENT_NUM_MIDDLE             25
#define   SEGMENT_NUM_LARGE              85
#define   SEGMENT_NUM_ERROR_MIDDLE       (SEGMENT_NUM_LARGE/2)   //（此处DN15的值用的同一条曲线，只为了兼容4段）误差曲线新增，为了适配4段的建模

#define   DXS_SEGMENT_NUM_LARGE          280 //多项式的基础模型分段值

#define   CALIBRATION_PROTECT_VALUE       ((float)0.9*R400Q1)	//防冻校准流速小于0.9倍Q1即不走数
	
//理论模型
#define   REAL_SOUND_PATH_LENGTH              (float)59.8//(float)74.863   //L*cos  还是 D*cot—— D准确  ——————————————2021-2-1改为弦向尺寸    2021-7-21 ——15的59.8；20的59.95
#define   MEASYRING_TUBE_DIAMETER             (float)10   
#define   FLOW_RATE_MULTIPLIER				  (float)8.361204e-9//(float)6.6788667e-9  //  流速计算常数=  1e-9/(2*(L有效))/0.001
#define   FLOW_MULTIPLIER				      (float)290.412  //  流量计算常数=  (3.1416*D*D*1e-6/4 )*3600 *1000L/h   //面积 PF 15:80.67  PF 20：134.95
	
//流量曲线的数量开关
//#define   SUBSECTION_NUM_THREE           1
#define   SUBSECTION_NUM_FOUR            1
//#define   SUBSECTION_NUM_FIVE            1

#elif	  EN_DN15_BRASS_63KPA_GP30_32768
#define   DEFAULT_START_FLOW  0x00B7 //DN15铜63KPA时的使动流量数值 
#define   FLOW_RATE_FILTER_COEFFICIENT  (float)0.3//瞬时流量滤波系数
#define   GP30_DIFTOF_FILTER_COEFFICIENT  (FLOW_RATE_FILTER_COEFFICIENT*(float)2)//活塞台子时间差滤波系数
#define   DIFTOF_COEFFICIENT  (float)0.200274918// 
#define   R400Q1              (float)6.25
#define   R400Q2              (float)10
#define   R250Q2              (float)16
#define   Q3_3_3              (float)825
#define   Q3_6_6              (float)1650
#define   MIN_FLOW_0_6              0x50000//最小流量的50%
#define   MAX_FLOW_1_02             0xC730000//过载流量的102%
#define   MIN_FLOW_0_3              0x30000//最小流量的30%
#define   LIMIT_FLOW_1_5Q4          4680//1.5倍的过载流量
#define   LIMIT_DIFTOF_FORWARD          0x000347AE   //-220~820ns时间差判断，时间差为正
#define   LIMIT_DIFTOF_REVERSE          0x8000E147   //-220~-820ns时间差判断，时间差为负
#define   SEGMENT_NUM_SMALL              8
#define   SEGMENT_NUM_MIDDLE             25
#define   SEGMENT_NUM_LARGE              77
#define   SEGMENT_NUM_ERROR_MIDDLE       (SEGMENT_NUM_LARGE/2)   //（此处DN15的值用的同一条曲线，只为了兼容4段）误差曲线新增，为了适配4段的建模

#define   DXS_SEGMENT_NUM_LARGE          280 //多项式的基础模型分段值

#define   CALIBRATION_PROTECT_VALUE       ((float)0.9*R400Q1)	//防冻校准流速小于0.9倍Q1即不走数
	
//理论模型
#define   REAL_SOUND_PATH_LENGTH              (float)59.8//(float)74.863   //L*cos  还是 D*cot—— D准确  ——————————————2021-2-1改为弦向尺寸    2021-7-21 ——15的59.8；20的59.95
#define   MEASYRING_TUBE_DIAMETER             (float)10   
#define   FLOW_RATE_MULTIPLIER				  (float)8.361204e-9//(float)6.6788667e-9  //  流速计算常数=  1e-9/(2*(L有效))/0.001
#define   FLOW_MULTIPLIER				      (float)290.412  //  流量计算常数=  (3.1416*D*D*1e-6/4 )*3600 *1000L/h   //面积 PF 15:80.67  PF 20：134.95
	
//流量曲线的数量开关
//#define   SUBSECTION_NUM_THREE           1
#define   SUBSECTION_NUM_FOUR            1
//#define   SUBSECTION_NUM_FIVE            1

#elif     BM_DN15_BRASS_63KPA_GP30_32768
#define   DEFAULT_START_FLOW  0x00B7 //DN15铜63KPA时的使动流量数值 700ps
#define   FLOW_RATE_FILTER_COEFFICIENT  (float)0.3//瞬时流量滤波系数
#define   GP30_DIFTOF_FILTER_COEFFICIENT  (FLOW_RATE_FILTER_COEFFICIENT*(float)2)//活塞台子时间差滤波系数
#define   DIFTOF_COEFFICIENT  (float)0.207551802 //16L/h对应的时间差均值 3.320828833
#define   R400Q1              (float)6.25
#define   R400Q2              (float)10
#define   R250Q2              (float)16
#define   Q3_3_3              (float)825
#define   Q3_6_6              (float)1650
#define   MIN_FLOW_0_6              0x50000//最小流量的50%
#define   MAX_FLOW_1_02             0xC730000//过载流量的102%
#define   MIN_FLOW_0_3              0x30000//最小流量的30%
#define   LIMIT_FLOW_1_5Q4          4680//1.5倍的过载流量
#define   LIMIT_DIFTOF_FORWARD          0x000347AE   //-220~820ns时间差判断，时间差为正
#define   LIMIT_DIFTOF_REVERSE          0x8000E147   //-220~-820ns时间差判断，时间差为负
#define   SEGMENT_NUM_SMALL              8
#define   SEGMENT_NUM_MIDDLE             25
#define   SEGMENT_NUM_LARGE              90

#define   DXS_SEGMENT_NUM_LARGE          280 //多项式的基础模型分段值

//流量曲线的数量开关
//#define   SUBSECTION_NUM_THREE           1
#define   SUBSECTION_NUM_FOUR            1
//#define   SUBSECTION_NUM_FIVE            1
#define   CALIBRATION_PROTECT_VALUE       ((float)0.9*R400Q1)	//防冻校准流速小于0.9倍Q1即不走数

//20211204
#elif	  PF_DN15_BRASS_63KPA_GP30_32768
#define   DEFAULT_START_FLOW  0x00B7 //DN15铜63KPA时的使动流量数值 
#define   FLOW_RATE_FILTER_COEFFICIENT  (float)0.3//瞬时流量滤波系数
#define   GP30_DIFTOF_FILTER_COEFFICIENT  (FLOW_RATE_FILTER_COEFFICIENT*(float)2)//活塞台子时间差滤波系数
#define   DIFTOF_COEFFICIENT  (float)0.200274918// 
#define   R400Q1              (float)6.25
#define   R400Q2              (float)10
#define   R250Q2              (float)16
#define   Q3_3_3              (float)825
#define   Q3_6_6              (float)1650
#define   MIN_FLOW_0_6              0x50000//最小流量的50%
#define   MAX_FLOW_1_02             0xC730000//过载流量的102%
#define   MIN_FLOW_0_3              0x30000//最小流量的30%
#define   LIMIT_FLOW_1_5Q4          4680//1.5倍的过载流量
#define   LIMIT_DIFTOF_FORWARD          0x000347AE   //-220~820ns时间差判断，时间差为正
#define   LIMIT_DIFTOF_REVERSE          0x8000E147   //-220~-820ns时间差判断，时间差为负
#define   SEGMENT_NUM_SMALL              8
#define   SEGMENT_NUM_MIDDLE             25
#define   SEGMENT_NUM_LARGE              85
#define   SEGMENT_NUM_ERROR_MIDDLE       (SEGMENT_NUM_LARGE/2)   //（此处DN15的值用的同一条曲线，只为了兼容4段）误差曲线新增，为了适配4段的建模

#define   DXS_SEGMENT_NUM_LARGE          280 //多项式的基础模型分段值

#define   CALIBRATION_PROTECT_VALUE       ((float)0.9*R400Q2)	//防冻校准流速小于0.9倍Q1即不走数
#define FLOAT_BETWEEN_DATA_DIF_MAX    (float)3.8//950ns时间差对应的滤波时的float类型数值=850/250	  临界状态切换门限值
#define FLOAT_SWITCH_STATE_THRESHOLD    (float)3.4//850ns时间差对应的滤波时的float类型数值=850/250	  临界状态切换门限值
#define FLOAT_BETWEEN_DATA_DIF        	(float)2.2//550ns时间差对应的滤波时的float类型数值=550/250	  相邻俩个数据之间的差值
#define FLOAT_LAST_DATA_MAX_THRESHOULD     	(float)1.4//350ns时间差对应的滤波时的float类型数值=350/250	  上一个数据的门限判定上限值    关于门限判定，程序中判定的是负数，所以-350是上限
#define FLOAT_LAST_DATA_MIN_THRESHOULD      (float)1.84//460ns时间差对应的滤波时的float类型数值=460/250	  上一个数据的门限判定门限值    关于门限判定，程序中判定的是负数，所以-460是下限
#define FLOAT_SWITCH_STATE_CURRENT_THRESHOLD        (float)0.64//160ns时间差对应的滤波时的float类型数值=160/250	  临界状态当前数据的门限值
	
//理论模型
#define   REAL_SOUND_PATH_LENGTH              (float)59.8//(float)74.863   //L*cos  还是 D*cot—— D准确  ——————————————2021-2-1改为弦向尺寸    2021-7-21 ——15的59.8；20的59.95
#define   MEASYRING_TUBE_DIAMETER             (float)10   
#define   FLOW_RATE_MULTIPLIER				  (float)8.361204e-9//(float)6.6788667e-9  //  流速计算常数=  1e-9/(2*(L有效))/0.001
#define   FLOW_MULTIPLIER				      (float)290.412  //  流量计算常数=  (3.1416*D*D*1e-6/4 )*3600 *1000L/h   //面积 PF 15:80.67  PF 20：134.95
	
//流量曲线的数量开关
//#define   SUBSECTION_NUM_THREE           1
#define   SUBSECTION_NUM_FOUR            1
//#define   SUBSECTION_NUM_FIVE            1


#elif     DN20_BRASS_40KPA_GP30_32768 || WDFS_DN20_BRASS_40KPA_GP30_32768 
#define   DEFAULT_START_FLOW  0x00D1 //DN20铜40KPA时的使动流量数值
#define   FLOW_RATE_FILTER_COEFFICIENT  (float)0.2//瞬时流量滤波系数
#define   GP30_DIFTOF_FILTER_COEFFICIENT  (FLOW_RATE_FILTER_COEFFICIENT*(float)2)//活塞台子时间差滤波系数
#define   DIFTOF_COEFFICIENT  (float)0.129817327// 25L/h对应的时间差均值3.245433172
#define   R400Q1              (float)10
#define   R400Q2              (float)16
#define   R250Q2              (float)25
#define   Q3_3_3              (float)1320
#define   Q3_6_6              (float)2640
#define   MIN_FLOW_0_6              0x80000//最小流量的50%
#define   MAX_FLOW_1_02             0x14050000//过载流量的102%
#define   MIN_FLOW_0_3              0x40000//最小流量的25%
#define   LIMIT_FLOW_1_5Q4          7500//1.5倍的过载流量
#define   LIMIT_DIFTOF_FORWARD          0x00033333   //-200~-800ns时间差判断，时间差为正
#define   LIMIT_DIFTOF_REVERSE          0x8000CCCC   //-200~-800ns时间差判断，时间差为负
#define   SEGMENT_NUM_SMALL              14
#define   SEGMENT_NUM_MIDDLE             34
#define   SEGMENT_NUM_LARGE              155

#define   DXS_SEGMENT_NUM_LARGE          280 //多项式的基础模型分段值

//流量曲线的数量开关
//#define   SUBSECTION_NUM_THREE           1
#define   SUBSECTION_NUM_FOUR            1
//#define   SUBSECTION_NUM_FIVE            1

#define   CALIBRATION_PROTECT_VALUE       ((float)0.9*R400Q2)	//防冻校准流速小于0.9倍Q1即不走数
#define   TOF_AM_VALUE                190
#define   TOF_UP_AM_0_8               (0.8*TOF_AM_VALUE)//up最大幅值0.8倍
#define   TOF_DOWN_AM_0_8             (0.8*TOF_AM_VALUE)//down最大幅值0.8倍
#define   Q1_0_8                 (float)12.8//0.8倍的R250的Q1数值

#define   TOF_UP_DATA                   (float)57881.92//20度下UP单程时间ns
#define   LEGENTH_SPEED_SOUND           (float)85795.925778//声路长度=1482.257772*TOF_UP_DATA   单位um   
#define   LEGENTH_SPEED_SOUND_DAOSHU    (float)5.8277825603528e-9//声路长度倒数
    
#elif     LLGS_DN20_BRASS_40KPA_GP30_32768 || LLGS_WDFS_DN20_BRASS_40KPA_GP30_32768
#define   DEFAULT_START_FLOW  0x00D1 //DN20铜40KPA时的使动流量数值
#define   FLOW_RATE_FILTER_COEFFICIENT  (float)0.2//瞬时流量滤波系数
#define   GP30_DIFTOF_FILTER_COEFFICIENT  (FLOW_RATE_FILTER_COEFFICIENT*(float)2)//活塞台子时间差滤波系数
#define   DIFTOF_COEFFICIENT  (float)0.129817327// 25L/h对应的时间差均值3.245433172
#define   R400Q1              (float)10
#define   R400Q2              (float)16
#define   R250Q2              (float)25
#define   Q3_3_3              (float)1320
#define   Q3_6_6              (float)2640
#define   MIN_FLOW_0_6              0x80000//最小流量的50%
#define   MAX_FLOW_1_02             0x14050000//过载流量的102%
#define   MIN_FLOW_0_3              0x40000//最小流量的25%
#define   LIMIT_FLOW_1_5Q4          7500//1.5倍的过载流量
#define   LIMIT_DIFTOF_FORWARD          0x00033333   //-200~-800ns时间差判断，时间差为正
#define   LIMIT_DIFTOF_REVERSE          0x8000CCCC   //-200~-800ns时间差判断，时间差为负
#define   SEGMENT_NUM_SMALL              16
#define   SEGMENT_NUM_MIDDLE             25
#define   SEGMENT_NUM_LARGE              155
#define   SEGMENT_NUM_ERROR_MIDDLE       43   //误差曲线新增，为了适配4段的建模

#define   DXS_SEGMENT_NUM_LARGE          280 //多项式的基础模型分段值


//理论模型
#define   REAL_SOUND_PATH_LENGTH              (float)59.95//(float)74.863   //L*cos  还是 D*cot—— D准确  ——————————————2021-2-1改为弦向尺寸    2021-7-21 ——15的59.8；20的59.95
#define   MEASYRING_TUBE_DIAMETER             (float)13.6   //15的10.7,  20的13.6
#define   FLOW_RATE_MULTIPLIER				  (float)8.3402836e-9//(float)6.6788667e-9  //  流速计算常数=  1e-9/(2*(L有效))/0.001
#define   FLOW_MULTIPLIER				      (float)527.8716  //  流量计算常数=  (3.1416*D*D*1e-6/4 )*3600 *1000L/h   //面积 15:93.3307  20：146.631

//流量曲线的数量开关
//#define   SUBSECTION_NUM_THREE           1
#define   SUBSECTION_NUM_FOUR            1
//#define   SUBSECTION_NUM_FIVE            1

#define   CALIBRATION_PROTECT_VALUE       ((float)0.9*R400Q2)	//防冻校准流速小于0.9倍Q1即不走数
#define   TOF_AM_VALUE                190
#define   TOF_UP_AM_0_8               (0.8*TOF_AM_VALUE)//up最大幅值0.8倍
#define   TOF_DOWN_AM_0_8             (0.8*TOF_AM_VALUE)//down最大幅值0.8倍
#define   Q1_0_8                 (float)12.8//0.8倍的R250的Q1数值

#define   TOF_UP_DATA                   (float)57881.92//20度下UP单程时间ns
#define   LEGENTH_SPEED_SOUND           (float)85795.925778//声路长度=1482.257772*TOF_UP_DATA   单位um   
#define   LEGENTH_SPEED_SOUND_DAOSHU    (float)5.8277825603528e-9//声路长度倒数

#elif ROUND_LLGS_DN20_BRASS_40KPA_GP30_32768 || ROUND_LLGS_WDFS_DN20_BRASS_40KPA_GP30_32768 
#define   DEFAULT_START_FLOW  0x00D1 //DN20铜40KPA时的使动流量数值
#define   FLOW_RATE_FILTER_COEFFICIENT  (float)0.2//瞬时流量滤波系数
#define   GP30_DIFTOF_FILTER_COEFFICIENT  (FLOW_RATE_FILTER_COEFFICIENT*(float)2)//活塞台子时间差滤波系数
#define   DIFTOF_COEFFICIENT  (float)0.129817327// 25L/h对应的时间差均值3.245433172
#define   R400Q1              (float)10
#define   R400Q2              (float)16
#define   R250Q2              (float)25
#define   Q3_3_3              (float)1320
#define   Q3_6_6              (float)2640
#define   MIN_FLOW_0_6              0x80000//最小流量的50%
#define   MAX_FLOW_1_02             0x14050000//过载流量的102%
#define   MIN_FLOW_0_3              0x40000//最小流量的25%
#define   LIMIT_FLOW_1_5Q4          7500//1.5倍的过载流量
#define   LIMIT_DIFTOF_FORWARD          0x00033333   //-200~-800ns时间差判断，时间差为正
#define   LIMIT_DIFTOF_REVERSE          0x8000CCCC   //-200~-800ns时间差判断，时间差为负
#define   SEGMENT_NUM_SMALL              15
#define   SEGMENT_NUM_MIDDLE             35
#define   SEGMENT_NUM_LARGE              190



#define   DXS_SEGMENT_NUM_LARGE          280 //多项式的基础模型分段值

#define   CALIBRATION_PROTECT_VALUE       ((float)0.9*R400Q2)	//防冻校准流速小于0.9倍Q1即不走数
#define   TOF_AM_VALUE                190
#define   TOF_UP_AM_0_8               (0.8*TOF_AM_VALUE)//up最大幅值0.8倍
#define   TOF_DOWN_AM_0_8             (0.8*TOF_AM_VALUE)//down最大幅值0.8倍
#define   Q1_0_8                 (float)12.8//0.8倍的R250的Q1数值
    
#define   TOF_UP_DATA                   (float)60160.65//20度下UP单程时间ns
#define   LEGENTH_SPEED_SOUND           (float)89173.591031//声路长度=1482.257772*TOF_UP_DATA   单位um   
#define   LEGENTH_SPEED_SOUND_DAOSHU    (float)5.6070412e-9//声路长度倒数
    
#define   TOF_UP_DOWN_DAOSHUHE_LOW           (float)0.03397054  //1/up + 1/down    35度以下
#define   TOF_UP_DOWN_DAOSHUHE_MIDDLE        (float)0.03428789 //1/up + 1/down    35~45度

//理论模型
#define   REAL_SOUND_PATH_LENGTH              (float)62////
#define   MEASYRING_TUBE_DIAMETER             (float)12.5   //15的11.5,  20的12.5
#define   FLOW_RATE_MULTIPLIER				  (float)8.064516e-9 //    流速计算常数=  1e-9/(2*(L有效))/0.001
#define   FLOW_MULTIPLIER				      (float)441.7875 //  流量计算常数=  (3.1416*D*D*1e-6/4 )*3600 *1000L/h    15口径面积：103.86915  20口径面积：122.71875
 
//流量曲线的数量开关
//#define   SUBSECTION_NUM_THREE           1
#define   SUBSECTION_NUM_FOUR            1
//#define   SUBSECTION_NUM_FIVE            1

#elif	 Buxiugang_LLGS_WDFS_DN20_BXG_40KPA_GP30_32768
#define   DEFAULT_START_FLOW  0x00B8 //DN20铜40KPA时的使动流量数值
#define   FLOW_RATE_FILTER_COEFFICIENT  (float)0.2//瞬时流量滤波系数
#define   GP30_DIFTOF_FILTER_COEFFICIENT  (FLOW_RATE_FILTER_COEFFICIENT*(float)2)//活塞台子时间差滤波系数
#define   DIFTOF_COEFFICIENT  (float)0.1131270// 25L/h对应的时间差均值2.8281742
#define   R400Q1              (float)10
#define   R400Q2              (float)16
#define   R250Q2              (float)25
#define   Q3_3_3              (float)1320
#define   Q3_6_6              (float)2640
#define   MIN_FLOW_0_6              0x80000//最小流量的50%
#define   MAX_FLOW_1_02             0x14050000//过载流量的102%
#define   MIN_FLOW_0_3              0x40000//最小流量的25%
#define   LIMIT_FLOW_1_5Q4          7500//1.5倍的过载流量
#define   LIMIT_DIFTOF_FORWARD          0x00033333   //-200~-800ns时间差判断，时间差为正
#define   LIMIT_DIFTOF_REVERSE          0x8000CCCC   //-200~-800ns时间差判断，时间差为负
#define   SEGMENT_NUM_SMALL              15
#define   SEGMENT_NUM_MIDDLE             33
#define   SEGMENT_NUM_LARGE              130
#define   SEGMENT_NUM_ERROR_MIDDLE       47   //误差曲线新增，为了适配4段的建模

#define   DXS_SEGMENT_NUM_LARGE          170 //多项式的基础模型分段值

#define   CALIBRATION_PROTECT_VALUE       ((float)0.9*R400Q2)	//防冻校准流速小于0.9倍Q1即不走数
#define   TOF_AM_VALUE                190
#define   TOF_UP_AM_0_8               (0.8*TOF_AM_VALUE)//up最大幅值0.8倍
#define   TOF_DOWN_AM_0_8             (0.8*TOF_AM_VALUE)//down最大幅值0.8倍
#define   Q1_0_8                 (float)12.8//0.8倍的R250的Q1数值
    
#define   TOF_UP_DATA                   (float)60160.65//20度下UP单程时间ns
#define   LEGENTH_SPEED_SOUND           (float)89173.591031//声路长度=1482.257772*TOF_UP_DATA   单位um   
#define   LEGENTH_SPEED_SOUND_DAOSHU    (float)5.6070412e-9//声路长度倒数
    
#define   TOF_UP_DOWN_DAOSHUHE_LOW           (float)0.03397054  //1/up + 1/down    35度以下
#define   TOF_UP_DOWN_DAOSHUHE_MIDDLE        (float)0.03428789 //1/up + 1/down    35~45度

//理论模型
#define   REAL_SOUND_PATH_LENGTH              (float)62////
#define   MEASYRING_TUBE_DIAMETER             (float)14   //15的11.5,  20的12.5
#define   FLOW_RATE_MULTIPLIER				  (float)8.06452E-09 //    流速计算常数=  1e-9/(2*(L有效))/0.001
#define   FLOW_MULTIPLIER				      (float)554.17824 //  流量计算常数=  (3.1416*D*D*1e-6/4 )*3600 *1000L/h    15口径面积：103.86915  20口径面积：122.71875
 
//流量曲线的数量开关
//#define   SUBSECTION_NUM_THREE           1
#define   SUBSECTION_NUM_FOUR            1
//#define   SUBSECTION_NUM_FIVE            1

#elif     ROUND_LLGS_XFZ_DN20_BRASS_40KPA_GP30_32768
#define   DEFAULT_START_FLOW  0x00D1 //DN20铜40KPA时的使动流量数值
#define   FLOW_RATE_FILTER_COEFFICIENT  (float)0.2//瞬时流量滤波系数
#define   GP30_DIFTOF_FILTER_COEFFICIENT  (FLOW_RATE_FILTER_COEFFICIENT*(float)2)//活塞台子时间差滤波系数
#define   DIFTOF_COEFFICIENT  (float)0.129817327// 25L/h对应的时间差均值3.245433172
#define   R400Q1              (float)10
#define   R400Q2              (float)16
#define   R250Q2              (float)25
#define   Q3_3_3              (float)1320
#define   Q3_6_6              (float)2640
#define   MIN_FLOW_0_6              0x80000//最小流量的50%
#define   MAX_FLOW_1_02             0x14050000//过载流量的102%
#define   MIN_FLOW_0_3              0x40000//最小流量的25%
#define   LIMIT_FLOW_1_5Q4          7500//1.5倍的过载流量
#define   LIMIT_DIFTOF_FORWARD          0x00033333   //-200~-800ns时间差判断，时间差为正
#define   LIMIT_DIFTOF_REVERSE          0x8000CCCC   //-200~-800ns时间差判断，时间差为负
#define   SEGMENT_NUM_SMALL              15      //10 16 25 150 4000校准点
#define   SEGMENT_NUM_MIDDLE             38
#define   SEGMENT_NUM_LARGE              136

#define   DXS_SEGMENT_NUM_LARGE          280 //多项式的基础模型分段值

#define   CALIBRATION_PROTECT_VALUE       ((float)0.9*R400Q2)	//防冻校准流速小于0.9倍Q1即不走数
#define   TOF_AM_VALUE                190
#define   TOF_UP_AM_0_8               (0.8*TOF_AM_VALUE)//up最大幅值0.8倍
#define   TOF_DOWN_AM_0_8             (0.8*TOF_AM_VALUE)//down最大幅值0.8倍
#define   Q1_0_8                 (float)12.8//0.8倍的R250的Q1数值
    
#define   TOF_UP_DATA                   (float)60160.65//20度下UP单程时间ns
#define   LEGENTH_SPEED_SOUND           (float)89173.591031//声路长度=1482.257772*TOF_UP_DATA   单位um   
#define   LEGENTH_SPEED_SOUND_DAOSHU    (float)5.6070412e-9//声路长度倒数
    
#define   TOF_UP_DOWN_DAOSHUHE_LOW           (float)0.03397054  //1/up + 1/down    35度以下
#define   TOF_UP_DOWN_DAOSHUHE_MIDDLE        (float)0.03428789 //1/up + 1/down    35~45度

//理论模型
#define   REAL_SOUND_PATH_LENGTH              (float)62////
#define   MEASYRING_TUBE_DIAMETER             (float)12.5   //15的11.5,  20的12.5
#define   FLOW_RATE_MULTIPLIER				  (float)8.064516e-9 //    流速计算常数=  1e-9/(2*(L有效))/0.001
#define   FLOW_MULTIPLIER				      (float)441.7875 //  流量计算常数=  (3.1416*D*D*1e-6/4 )*3600 *1000L/h    15口径面积：103.86915  20口径面积：122.71875
 
//流量曲线的数量开关
//#define   SUBSECTION_NUM_THREE           1
#define   SUBSECTION_NUM_FOUR            1
//#define   SUBSECTION_NUM_FIVE            1

#elif     MID_DN20_BRASS_63KPA_GP30_32768
#define   DEFAULT_START_FLOW   0x00B7 //DN20铜63KPA时的使动流量数值 
#define   FLOW_RATE_FILTER_COEFFICIENT  (float)0.3//瞬时流量滤波系数
#define   GP30_DIFTOF_FILTER_COEFFICIENT  (FLOW_RATE_FILTER_COEFFICIENT*(float)2)//活塞台子时间差滤波系数
#define   DIFTOF_COEFFICIENT  (float)0.119770896// 
#define   R400Q1              (float)10
#define   R400Q2              (float)16
#define   R250Q2              (float)25
#define   Q3_3_3              (float)1320
#define   Q3_6_6              (float)2640
#define   MIN_FLOW_0_6              0x80000//最小流量的50%
#define   MAX_FLOW_1_02             0x14050000//过载流量的102%
#define   MIN_FLOW_0_3              0x40000//最小流量的25%
#define   LIMIT_FLOW_1_5Q4          7500//1.5倍的过载流量
#define   LIMIT_DIFTOF_FORWARD          0x000347AE   //-220~820ns时间差判断，时间差为正
#define   LIMIT_DIFTOF_REVERSE          0x8000E147   //-220~-820ns时间差判断，时间差为负
#define   SEGMENT_NUM_SMALL              16
#define   SEGMENT_NUM_MIDDLE             23// 之前是40 修改0816
#define   SEGMENT_NUM_LARGE              155
#define   SEGMENT_NUM_ERROR_MIDDLE       43   //误差曲线新增，为了适配4段的建模

#define   DXS_SEGMENT_NUM_LARGE          280 //多项式的基础模型分段值

//理论模型----------------需要修改下面的参数！！！--------------------------------------------------------------------------------------
#define   REAL_SOUND_PATH_LENGTH              (float)59.95//(float)74.863   //L*cos  还是 D*cot—— D准确  ——————————————2021-2-1改为弦向尺寸    2021-7-21 ——15的59.8；20的59.95
#define   MEASYRING_TUBE_DIAMETER             (float)13.6   //15的10.7,  20的13.6
#define   FLOW_RATE_MULTIPLIER				  (float)8.3402836e-9//(float)6.6788667e-9  //  流速计算常数=  1e-9/(2*(L有效))/0.001
#define   FLOW_MULTIPLIER				      (float)485.82  //  流量计算常数=  (3.1416*D*D*1e-6/4 )*3600 *1000L/h   //面积 PF 15:80.67  PF 20：134.95

#define   CALIBRATION_PROTECT_VALUE       ((float)0.9*R400Q1)	//防冻校准流速小于0.9倍Q1即不走数

//流量曲线的数量开关
//#define   SUBSECTION_NUM_THREE           1
#define   SUBSECTION_NUM_FOUR            1
//#define   SUBSECTION_NUM_FIVE            1
    
#elif     EN_DN20_BRASS_63KPA_GP30_32768
#define   DEFAULT_START_FLOW   0x00B7 //DN20铜63KPA时的使动流量数值 
#define   FLOW_RATE_FILTER_COEFFICIENT  (float)0.3//瞬时流量滤波系数
#define   GP30_DIFTOF_FILTER_COEFFICIENT  ((float)FLOW_RATE_FILTER_COEFFICIENT*2)//活塞台子时间差滤波系数	
#define   DIFTOF_COEFFICIENT  (float)0.119770896// 
#define   R400Q1              (float)10
#define   R400Q2              (float)16
#define   R250Q2              (float)25
#define   Q3_3_3              (float)1320
#define   Q3_6_6              (float)2640
#define   MIN_FLOW_0_6              0x80000//最小流量的50%
#define   MAX_FLOW_1_02             0x14050000//过载流量的102%
#define   MIN_FLOW_0_3              0x40000//最小流量的25%
#define   LIMIT_FLOW_1_5Q4          7500//1.5倍的过载流量
#define   LIMIT_DIFTOF_FORWARD          0x000347AE   //-220~820ns时间差判断，时间差为正
#define   LIMIT_DIFTOF_REVERSE          0x8000E147   //-220~-820ns时间差判断，时间差为负
#define   SEGMENT_NUM_SMALL              16
#define   SEGMENT_NUM_MIDDLE             38// 之前是40 修改0816
#define   SEGMENT_NUM_LARGE              128
#define   SEGMENT_NUM_ERROR_MIDDLE       43   //误差曲线新增，为了适配4段的建模

#define   DXS_SEGMENT_NUM_LARGE          280 //多项式的基础模型分段值

//理论模型----------------需要修改下面的参数！！！--------------------------------------------------------------------------------------
#define   REAL_SOUND_PATH_LENGTH              (float)59.95//(float)74.863   //L*cos  还是 D*cot—— D准确  ——————————————2021-2-1改为弦向尺寸    2021-7-21 ——15的59.8；20的59.95
#define   MEASYRING_TUBE_DIAMETER             (float)13.6   //15的10.7,  20的13.6
#define   FLOW_RATE_MULTIPLIER				  (float)8.3402836e-9//(float)6.6788667e-9  //  流速计算常数=  1e-9/(2*(L有效))/0.001
#define   FLOW_MULTIPLIER				      (float)485.82  //  流量计算常数=  (3.1416*D*D*1e-6/4 )*3600 *1000L/h   //面积 PF 15:80.67  PF 20：134.95

#define   CALIBRATION_PROTECT_VALUE       ((float)0.9*R400Q1)	//防冻校准流速小于0.9倍Q1即不走数

//流量曲线的数量开关
//#define   SUBSECTION_NUM_THREE           1
#define   SUBSECTION_NUM_FOUR            1
//#define   SUBSECTION_NUM_FIVE            1


#elif     BM_DN20_BRASS_63KPA_GP30_32768
#define   DEFAULT_START_FLOW   0x00B7 //DN20铜63KPA时的使动流量数值 700ps
#define   FLOW_RATE_FILTER_COEFFICIENT  (float)0.3//瞬时流量滤波系数
#define   GP30_DIFTOF_FILTER_COEFFICIENT  (FLOW_RATE_FILTER_COEFFICIENT*(float)2)//活塞台子时间差滤波系数
#define   DIFTOF_COEFFICIENT  (float)0.114827154
#define   R400Q1              (float)10
#define   R400Q2              (float)16
#define   R250Q2              (float)25
#define   Q3_3_3              (float)1320
#define   Q3_6_6              (float)2640
#define   MIN_FLOW_0_6              0x80000//最小流量的50%
#define   MAX_FLOW_1_02             0x14050000//过载流量的102%
#define   MIN_FLOW_0_3              0x40000//最小流量的25%
#define   LIMIT_FLOW_1_5Q4          7500//1.5倍的过载流量
#define   LIMIT_DIFTOF_FORWARD          0x000347AE   //-220~820ns时间差判断，时间差为正
#define   LIMIT_DIFTOF_REVERSE          0x8000E147   //-220~-820ns时间差判断，时间差为负
#define   SEGMENT_NUM_SMALL              14
#define   SEGMENT_NUM_MIDDLE             40
#define   SEGMENT_NUM_LARGE              160

#define   DXS_SEGMENT_NUM_LARGE          280 //多项式的基础模型分段值
//流量曲线的数量开关
//#define   SUBSECTION_NUM_THREE           1
#define   SUBSECTION_NUM_FOUR            1
//#define   SUBSECTION_NUM_FIVE            1
#define   CALIBRATION_PROTECT_VALUE       ((float)0.9*R400Q1)	//防冻校准流速小于0.9倍Q1即不走数

//20211205
#elif     PF_DN20_BRASS_63KPA_GP30_32768
#define   DEFAULT_START_FLOW   0x00B7 //DN20铜63KPA时的使动流量数值 
#define   FLOW_RATE_FILTER_COEFFICIENT  (float)0.3//瞬时流量滤波系数
#define   GP30_DIFTOF_FILTER_COEFFICIENT  (FLOW_RATE_FILTER_COEFFICIENT*(float)2)//活塞台子时间差滤波系数
#define   DIFTOF_COEFFICIENT  (float)0.119770896// 
#define   R400Q1              (float)10
#define   R400Q2              (float)16
#define   R250Q2              (float)25
#define   Q3_3_3              (float)1320
#define   Q3_6_6              (float)2640
#define   MIN_FLOW_0_6              0x80000//最小流量的50%
#define   MAX_FLOW_1_02             0x14050000//过载流量的102%
#define   MIN_FLOW_0_3              0x40000//最小流量的25%
#define   LIMIT_FLOW_1_5Q4          7500//1.5倍的过载流量
#define   LIMIT_DIFTOF_FORWARD          0x000347AE   //-220~820ns时间差判断，时间差为正
#define   LIMIT_DIFTOF_REVERSE          0x8000E147   //-220~-820ns时间差判断，时间差为负
#define   SEGMENT_NUM_SMALL              16
#define   SEGMENT_NUM_MIDDLE             23// 之前是40 修改0816
#define   SEGMENT_NUM_LARGE              155
#define   SEGMENT_NUM_ERROR_MIDDLE       43   //误差曲线新增，为了适配4段的建模

#define   DXS_SEGMENT_NUM_LARGE          280 //多项式的基础模型分段值

//理论模型----------------需要修改下面的参数！！！--------------------------------------------------------------------------------------
#define   REAL_SOUND_PATH_LENGTH              (float)59.95//(float)74.863   //L*cos  还是 D*cot—— D准确  ——————————————2021-2-1改为弦向尺寸    2021-7-21 ——15的59.8；20的59.95
#define   MEASYRING_TUBE_DIAMETER             (float)13.6   //15的10.7,  20的13.6
#define   FLOW_RATE_MULTIPLIER				  (float)8.3402836e-9//(float)6.6788667e-9  //  流速计算常数=  1e-9/(2*(L有效))/0.001
#define   FLOW_MULTIPLIER				      (float)485.82  //  流量计算常数=  (3.1416*D*D*1e-6/4 )*3600 *1000L/h   //面积 PF 15:80.67  PF 20：134.95

#define   CALIBRATION_PROTECT_VALUE       ((float)0.9*R400Q1)	//防冻校准流速小于0.9倍Q1即不走数
#define FLOAT_BETWEEN_DATA_DIF_MAX    (float)3.8//950ns时间差对应的滤波时的float类型数值=850/250	  临界状态切换门限值
#define FLOAT_SWITCH_STATE_THRESHOLD    (float)3.4//850ns时间差对应的滤波时的float类型数值=850/250	  临界状态切换门限值
#define FLOAT_BETWEEN_DATA_DIF        	(float)2.2//550ns时间差对应的滤波时的float类型数值=550/250	  相邻俩个数据之间的差值
#define FLOAT_LAST_DATA_MAX_THRESHOULD     	(float)1.4//350ns时间差对应的滤波时的float类型数值=350/250	  上一个数据的门限判定上限值    关于门限判定，程序中判定的是负数，所以-350是上限
#define FLOAT_LAST_DATA_MIN_THRESHOULD      (float)1.84//460ns时间差对应的滤波时的float类型数值=460/250	  上一个数据的门限判定门限值    关于门限判定，程序中判定的是负数，所以-460是下限
#define FLOAT_SWITCH_STATE_CURRENT_THRESHOLD        (float)0.64//160ns时间差对应的滤波时的float类型数值=160/250	  临界状态当前数据的门限值

//流量曲线的数量开关
//#define   SUBSECTION_NUM_THREE           1
#define   SUBSECTION_NUM_FOUR            1
//#define   SUBSECTION_NUM_FIVE            1

#elif     BM_DN25_BRASS_63KPA_GP30_32768  
#define   DEFAULT_START_FLOW   0xEC //DN25铜63KPA时的使动流量数值 900ps 
#define   FLOW_RATE_FILTER_COEFFICIENT  (float)0.3//瞬时流量滤波系数
#define   GP30_DIFTOF_FILTER_COEFFICIENT  (FLOW_RATE_FILTER_COEFFICIENT*(float)2)//活塞台子时间差滤波系数
#define   DIFTOF_COEFFICIENT  (float)0.123358832 //25L/h对应的始动数值 
#define   R400Q1              (float)16
#define   R400Q2              (float)25
#define   R250Q2              (float)40
#define   Q3_3_3              (float)2079
#define   Q3_6_6              (float)4158
#define   MIN_FLOW_0_6              0xF0000//最小流量的50%
#define   MAX_FLOW_1_02             0x1F600000//过载流量的102%
#define   MIN_FLOW_0_3              0x60000//最小流量的25%
#define   LIMIT_FLOW_1_5Q4          11700//1.5倍的过载流量
#define   LIMIT_DIFTOF_FORWARD          0x00039999   //-100~900ns时间差判断，时间差为正
#define   LIMIT_DIFTOF_REVERSE          0x80006666   //-100~900ns时间差判断，时间差为负
#define   SEGMENT_NUM_SMALL              22
#define   SEGMENT_NUM_MIDDLE             60
#define   SEGMENT_NUM_LARGE              320

#define   DXS_SEGMENT_NUM_LARGE          280 //多项式的基础模型分段值
//流量曲线的数量开关
//#define   SUBSECTION_NUM_THREE           1
#define   SUBSECTION_NUM_FOUR            1
//#define   SUBSECTION_NUM_FIVE            1
#define   CALIBRATION_PROTECT_VALUE       ((float)0.9*R400Q1)	//防冻校准流速小于0.9倍Q1即不走数

#elif     DN25_BRASS_40KPA_GP30_32768 || LLGS_DN25_BRASS_40KPA_GP30_32768
#define   DEFAULT_START_FLOW   0xEC //DN25铜63KPA时的使动流量数值 900ps 
#define   FLOW_RATE_FILTER_COEFFICIENT  (float)0.3//瞬时流量滤波系数
#define   GP30_DIFTOF_FILTER_COEFFICIENT  (FLOW_RATE_FILTER_COEFFICIENT*(float)2)//活塞台子时间差滤波系数
#define   DIFTOF_COEFFICIENT  (float)0.123358832 //25L/h对应的始动数值 
#define   R400Q1              (float)16
#define   R400Q2              (float)25
#define   R250Q2              (float)40
#define   Q3_3_3              (float)2079
#define   Q3_6_6              (float)4158
#define   MIN_FLOW_0_6              0xF0000//最小流量的50%
#define   MAX_FLOW_1_02             0x1F600000//过载流量的102%
#define   MIN_FLOW_0_3              0x60000//最小流量的25%
#define   LIMIT_FLOW_1_5Q4          11700//1.5倍的过载流量
#define   LIMIT_DIFTOF_FORWARD          0x000347AE   //-220~820ns时间差判断，时间差为正
#define   LIMIT_DIFTOF_REVERSE          0x8000E147   //-220~-820ns时间差判断，时间差为负
#define   SEGMENT_NUM_SMALL              35
#define   SEGMENT_NUM_MIDDLE             50
#define   SEGMENT_NUM_LARGE              320

#define   DXS_SEGMENT_NUM_LARGE          280 //多项式的基础模型分段值


/*需要修改下面的参数！！！20211105*/
#define   SEGMENT_NUM_ERROR_MIDDLE          60

#define   CALIBRATION_PROTECT_VALUE       ((float)0.9*R400Q2)	//防冻校准流速小于0.9倍Q1即不走数
#define   TOF_AM_VALUE                160//2022-09-17
#define   TOF_UP_AM_0_8               (0.8*TOF_AM_VALUE)//up最大幅值0.8倍
#define   TOF_DOWN_AM_0_8             (0.8*TOF_AM_VALUE)//down最大幅值0.8倍
#define   Q1_0_8                      (float)20//0.8倍的R250的Q1数值

//理论模型----------------需要修改下面的参数！！！--------------------------------------------------------------------------------------
#define   REAL_SOUND_PATH_LENGTH              (float)85//(float)74.863   //L*cos  还是 D*cot—— D准确  ——————————————2021-2-1改为弦向尺寸    2021-7-21 ——15的59.8；20的59.95
#define   MEASYRING_TUBE_DIAMETER             (float)17   //15的10.7,  20的13.6
#define   FLOW_RATE_MULTIPLIER				  (float)5.8823529e-9//(float)6.6788667e-9  //  流速计算常数=  1e-9/(2*(L有效))/0.001
#define   FLOW_MULTIPLIER				      (float)826.7796  //  流量计算常数=  (3.1416*D*D*1e-6/4 )*3600 *1000L/h   //面积 15:93.3307  20：146.631  25 229.661mm2

//流量曲线的数量开关
//#define   SUBSECTION_NUM_THREE           1
#define   SUBSECTION_NUM_FOUR            1
//#define   SUBSECTION_NUM_FIVE            1

#elif     MID_DN25_BRASS_63KPA_GP30_32768  
#define   DEFAULT_START_FLOW   0x106 //DN25铜63KPA时的使动流量数值 
#define   FLOW_RATE_FILTER_COEFFICIENT  (float)0.3//瞬时流量滤波系数
#define   GP30_DIFTOF_FILTER_COEFFICIENT  (FLOW_RATE_FILTER_COEFFICIENT*(float)2)//活塞台子时间差滤波系数
#define   DIFTOF_COEFFICIENT  (float)0.125176377 //40L/h对应的时间差均值4.862376622 
#define   R400Q1              (float)16
#define   R400Q2              (float)25
#define   R250Q2              (float)40
#define   Q3_3_3              (float)2079
#define   Q3_6_6              (float)4158
#define   MIN_FLOW_0_6              0xF0000//最小流量的50%
#define   MAX_FLOW_1_02             0x1F600000//过载流量的102%
#define   MIN_FLOW_0_3              0x60000//最小流量的25%
#define   LIMIT_FLOW_1_5Q4          11700//1.5倍的过载流量
#define   LIMIT_DIFTOF_FORWARD          0x00039999   //-100~900ns时间差判断，时间差为正
#define   LIMIT_DIFTOF_REVERSE          0x80006666   //-100~900ns时间差判断，时间差为负
#define   SEGMENT_NUM_SMALL              23////////???
#define   SEGMENT_NUM_MIDDLE             45////////???
#define   SEGMENT_NUM_LARGE              530

#define   DXS_SEGMENT_NUM_LARGE          280 //多项式的基础模型分段值
//流量曲线的数量开关
//#define   SUBSECTION_NUM_THREE           1
#define   SUBSECTION_NUM_FOUR            1
//#define   SUBSECTION_NUM_FIVE            1
#define   CALIBRATION_PROTECT_VALUE       ((float)0.9*R400Q1)	//防冻校准流速小于0.9倍Q1即不走数

//20211205
#elif     PF_DN25_BRASS_63KPA_GP30_32768  
#define   DEFAULT_START_FLOW   0xEC //DN25铜63KPA时的使动流量数值 900ps 
#define   FLOW_RATE_FILTER_COEFFICIENT  (float)0.3//瞬时流量滤波系数
#define   GP30_DIFTOF_FILTER_COEFFICIENT  (FLOW_RATE_FILTER_COEFFICIENT*(float)2)//活塞台子时间差滤波系数
#define   DIFTOF_COEFFICIENT  (float)0.123358832 //25L/h对应的始动数值 
#define   R400Q1              (float)16
#define   R400Q2              (float)25
#define   R250Q2              (float)40
#define   Q3_3_3              (float)2079
#define   Q3_6_6              (float)4158
#define   MIN_FLOW_0_6              0xF0000//最小流量的50%
#define   MAX_FLOW_1_02             0x1F600000//过载流量的102%
#define   MIN_FLOW_0_3              0x60000//最小流量的25%
#define   LIMIT_FLOW_1_5Q4          11700//1.5倍的过载流量
#define   LIMIT_DIFTOF_FORWARD          0x000347AE   //-220~820ns时间差判断，时间差为正
#define   LIMIT_DIFTOF_REVERSE          0x8000E147   //-220~-820ns时间差判断，时间差为负
#define   SEGMENT_NUM_SMALL              35
#define   SEGMENT_NUM_MIDDLE             50
#define   SEGMENT_NUM_LARGE              320

#define   DXS_SEGMENT_NUM_LARGE          280 //多项式的基础模型分段值

/*需要修改下面的参数！！！20211105*/
#define   SEGMENT_NUM_ERROR_MIDDLE          60////

//理论模型----------------------------需要修改参数！！！！-------
#define   REAL_SOUND_PATH_LENGTH              (float)85//(float)74.863   //L*cos  还是 D*cot—— D准确  ——————————————2021-2-1改为弦向尺寸    2021-7-21 ——15的59.8；20的59.95
#define   MEASYRING_TUBE_DIAMETER             (float)17   //15的10.7,  20的13.6
#define   FLOW_RATE_MULTIPLIER				  (float)5.8823529e-9//(float)6.6788667e-9  //  流速计算常数=  1e-9/(2*(L有效))/0.001
#define   FLOW_MULTIPLIER				      (float)826.7796  //  流量计算常数=  (3.1416*D*D*1e-6/4 )*3600 *1000L/h   //面积 15:93.3307  20：146.631  25 229.661mm2

#define   CALIBRATION_PROTECT_VALUE       ((float)0.9*R400Q1)	//防冻校准流速小于0.9倍Q1即不走数
#define FLOAT_BETWEEN_DATA_DIF_MAX    (float)3.8//950ns时间差对应的滤波时的float类型数值=850/250	  临界状态切换门限值
#define FLOAT_SWITCH_STATE_THRESHOLD    (float)3.4//850ns时间差对应的滤波时的float类型数值=850/250	  临界状态切换门限值
#define FLOAT_BETWEEN_DATA_DIF        	(float)2.2//550ns时间差对应的滤波时的float类型数值=550/250	  相邻俩个数据之间的差值
#define FLOAT_LAST_DATA_MAX_THRESHOULD     	(float)1.4//350ns时间差对应的滤波时的float类型数值=350/250	  上一个数据的门限判定上限值    关于门限判定，程序中判定的是负数，所以-350是上限
#define FLOAT_LAST_DATA_MIN_THRESHOULD      (float)1.84//460ns时间差对应的滤波时的float类型数值=460/250	  上一个数据的门限判定门限值    关于门限判定，程序中判定的是负数，所以-460是下限
#define FLOAT_SWITCH_STATE_CURRENT_THRESHOLD        (float)0.64//160ns时间差对应的滤波时的float类型数值=160/250	  临界状态当前数据的门限值
//流量曲线的数量开关
//#define   SUBSECTION_NUM_THREE           1
#define   SUBSECTION_NUM_FOUR            1
//#define   SUBSECTION_NUM_FIVE            1

#elif     DN32_BRASS_63KPA_GP30_32768
#define   DEFAULT_START_FLOW   0x0106 
#define   DIFTOF_COEFFICIENT  (float)0.081530677//40L/h对应的时间差均值
#define   R400Q1              (float)25
#define   R400Q2              (float)40
#define   R250Q2              (float)64
#define   Q3_3_3              (float)3300
#define   Q3_6_6              (float)6600
#define   MIN_FLOW_0_6              0x140000//最小流量的50%
#define   MAX_FLOW_1_02             0x31CE0000//过载流量的102%
#define   MIN_FLOW_0_3              0xA0000//最小流量的25%
#define   LIMIT_FLOW_1_5Q4          18750//1.5倍的过载流量
#define   LIMIT_DIFTOF_FORWARD          0x0003AE14   //-80~920ns时间差判断，时间差为正     2022-08-09更新
#define   LIMIT_DIFTOF_REVERSE          0x800051EB   //-80~920ns时间差判断，时间差为负
#define   SEGMENT_NUM_SMALL              50
#define   SEGMENT_NUM_MIDDLE             120
#define   SEGMENT_NUM_LARGE              520

/*需要修改下面的参数！！！20211105*/
#define   SEGMENT_NUM_ERROR_MIDDLE       130   //这个值

#define   DXS_SEGMENT_NUM_LARGE          280 //多项式的基础模型分段值

//理论模型----------------------------需要修改参数！！！！-------
#define   REAL_SOUND_PATH_LENGTH              (float)85//(float)74.863   //L*cos  还是 D*cot—— D准确  ——————————————2021-2-1改为弦向尺寸    2021-7-21 ——15的59.8；20的59.95
#define   MEASYRING_TUBE_DIAMETER             (float)21   //15的10.7,  20的13.6
#define   FLOW_RATE_MULTIPLIER				  (float)5.8823529e-9//(float)6.6788667e-9  //  流速计算常数=  1e-9/(2*(L有效))/0.001
#define   FLOW_MULTIPLIER				      (float)1252.1376  //  流量计算常数=  (3.1416*D*D*1e-6/4 )*3600 *1000L/h   //面积 15:93.3307  20：146.631

#define   CALIBRATION_PROTECT_VALUE       ((float)0.9*R400Q1)	//防冻校准流速小于0.9倍Q1即不走数
#define   TOF_AM_VALUE                190
#define   TOF_UP_AM_0_8               (0.8*TOF_AM_VALUE)//up最大幅值0.8倍
#define   TOF_DOWN_AM_0_8             (0.8*TOF_AM_VALUE)//down最大幅值0.8倍
#define   Q1_0_8                 (float)20//0.8倍的R400的Q1数值
	
//流量曲线的数量开关
//#define   SUBSECTION_NUM_THREE           1
#define   SUBSECTION_NUM_FOUR            1
//#define   SUBSECTION_NUM_FIVE            1

#elif     BM_DN32_BRASS_63KPA_GP30_32768 
#define   DEFAULT_START_FLOW   0x0106 
#define   DIFTOF_COEFFICIENT  (float)0.081530677//40L/h对应的时间差均值
#define   R400Q1              (float)25
#define   R400Q2              (float)40
#define   R250Q2              (float)64
#define   Q3_3_3              (float)3300
#define   Q3_6_6              (float)6600
#define   MIN_FLOW_0_6              0x140000//最小流量的50%
#define   MAX_FLOW_1_02             0x31CE0000//过载流量的102%
#define   MIN_FLOW_0_3              0xA0000//最小流量的25%
#define   LIMIT_FLOW_1_5Q4          18750//1.5倍的过载流量
#define   LIMIT_DIFTOF_FORWARD          0x00039999   //-100~900ns时间差判断，时间差为正
#define   LIMIT_DIFTOF_REVERSE          0x80006666   //-100~900ns时间差判断，时间差为负
#define   SEGMENT_NUM_SMALL              55//分段多包一下测试点
#define   SEGMENT_NUM_MIDDLE             80//分段多包一下测试点
#define   SEGMENT_NUM_LARGE              520

#define   DXS_SEGMENT_NUM_LARGE          280 //多项式的基础模型分段值

#define   CALIBRATION_PROTECT_VALUE       ((float)0.9*R400Q1)	//防冻校准流速小于0.9倍Q1即不走数
#define   TOF_AM_VALUE                190
#define   TOF_UP_AM_0_8               (0.8*TOF_AM_VALUE)//up最大幅值0.8倍
#define   TOF_DOWN_AM_0_8             (0.8*TOF_AM_VALUE)//down最大幅值0.8倍
#define   Q1_0_8                 (float)20//0.8倍的R400的Q1数值
	
//流量曲线的数量开关
//#define   SUBSECTION_NUM_THREE           1
#define   SUBSECTION_NUM_FOUR            1
//#define   SUBSECTION_NUM_FIVE            1

//20211205
#elif     PF_DN32_BRASS_63KPA_GP30_32768 	
#define   DEFAULT_START_FLOW   0x106 
#define   DIFTOF_COEFFICIENT  (float)0.081530677//40L/h对应的时间差均值
#define   R400Q1              (float)25
#define   R400Q2              (float)40
#define   R250Q2              (float)64
#define   Q3_3_3              (float)3300
#define   Q3_6_6              (float)6600
#define   MIN_FLOW_0_6              0x140000//最小流量的50%
#define   MAX_FLOW_1_02             0x31CE0000//过载流量的102%
#define   MIN_FLOW_0_3              0xA0000//最小流量的25%
#define   LIMIT_FLOW_1_5Q4          18750//1.5倍的过载流量
#define   LIMIT_DIFTOF_FORWARD          0x000347AE   //-220~820ns时间差判断，时间差为正
#define   LIMIT_DIFTOF_REVERSE          0x8000E147   //-220~-820ns时间差判断，时间差为负
#define   SEGMENT_NUM_SMALL              50
#define   SEGMENT_NUM_MIDDLE             75
#define   SEGMENT_NUM_LARGE              520

#define   DXS_SEGMENT_NUM_LARGE          280 //多项式的基础模型分段值

/*需要修改下面的参数！！！20211105*/
#define   SEGMENT_NUM_ERROR_MIDDLE       120   //误差曲线新增，为了适配4段的建模

//理论模型----------------------------需要修改参数！！！！-------
#define   REAL_SOUND_PATH_LENGTH              (float)85//(float)74.863   //L*cos  还是 D*cot—— D准确  ——————————————2021-2-1改为弦向尺寸    2021-7-21 ——15的59.8；20的59.95
#define   MEASYRING_TUBE_DIAMETER             (float)21   //15的10.7,  20的13.6
#define   FLOW_RATE_MULTIPLIER				  (float)5.8823529e-9//(float)6.6788667e-9  //  流速计算常数=  1e-9/(2*(L有效))/0.001
#define   FLOW_MULTIPLIER				      (float)1252.1376  //  流量计算常数=  (3.1416*D*D*1e-6/4 )*3600 *1000L/h   //面积 15:93.3307  20：146.631

#define   CALIBRATION_PROTECT_VALUE       ((float)0.9*R400Q1)	//防冻校准流速小于0.9倍Q1即不走数
#define FLOAT_BETWEEN_DATA_DIF_MAX    (float)3.8//950ns时间差对应的滤波时的float类型数值=850/250	  临界状态切换门限值
#define FLOAT_SWITCH_STATE_THRESHOLD    (float)3.4//850ns时间差对应的滤波时的float类型数值=850/250	  临界状态切换门限值
#define FLOAT_BETWEEN_DATA_DIF        	(float)2.2//550ns时间差对应的滤波时的float类型数值=550/250	  相邻俩个数据之间的差值
#define FLOAT_LAST_DATA_MAX_THRESHOULD     	(float)1.4//350ns时间差对应的滤波时的float类型数值=350/250	  上一个数据的门限判定上限值    关于门限判定，程序中判定的是负数，所以-350是上限
#define FLOAT_LAST_DATA_MIN_THRESHOULD      (float)1.84//460ns时间差对应的滤波时的float类型数值=460/250	  上一个数据的门限判定门限值    关于门限判定，程序中判定的是负数，所以-460是下限
#define FLOAT_SWITCH_STATE_CURRENT_THRESHOLD        (float)0.64//160ns时间差对应的滤波时的float类型数值=160/250	  临界状态当前数据的门限值

//流量曲线的数量开关
//#define   SUBSECTION_NUM_THREE           1
#define   SUBSECTION_NUM_FOUR            1
//#define   SUBSECTION_NUM_FIVE            1

#elif     DN40_BRASS_63KPA_GP30_32768
#define   DEFAULT_START_FLOW   0x00D2   //800ps
#define   DIFTOF_COEFFICIENT  (float)0.042673614 //64 L/h对应的时间差均值
#define   R400Q1              (float)40
#define   R400Q2              (float)64
#define   R250Q2              (float)102
#define   Q3_3_3              (float)5280
#define   Q3_6_6              (float)10560
#define   MIN_FLOW_0_6              0x200000//最小流量的50%
#define   MAX_FLOW_1_02             0x4FB00000//过载流量的102%
#define   MIN_FLOW_0_3              0x100000//最小流量的25%
#define   LIMIT_FLOW_1_5Q4          30000//1.5倍的过载流量
#define   LIMIT_DIFTOF_FORWARD          0x0003AE14   //-80~920ns时间差判断，时间差为正
#define   LIMIT_DIFTOF_REVERSE          0x800051EB   //-80~920ns时间差判断，时间差为负
#define   SEGMENT_NUM_SMALL              76
#define   SEGMENT_NUM_MIDDLE             530//
#define   SEGMENT_NUM_LARGE              2700

#define   DXS_SEGMENT_NUM_LARGE          280 //多项式的基础模型分段值

/*需要修改下面的参数！！！20211105*/
#define   SEGMENT_NUM_ERROR_MIDDLE       550   ////这个值没有意义

//理论模型----------------------------需要修改参数！！！！-------
#define   REAL_SOUND_PATH_LENGTH              (float)85//(float)74.863   //L*cos  还是 D*cot—— D准确  ——————————————2021-2-1改为弦向尺寸    2021-7-21 ——15的59.8；20的59.95
#define   MEASYRING_TUBE_DIAMETER             (float)26   //15的10.7,  20的13.6
#define   FLOW_RATE_MULTIPLIER				  (float)5.8823529e-9//(float)6.6788667e-9  //  流速计算常数=  1e-9/(2*(L有效))/0.001
#define   FLOW_MULTIPLIER				      (float)1935.0432  //  流量计算常数=  (3.1416*D*D*1e-6/4 )*3600 *1000L/h   //面积 15:93.3307  20：146.631


#define   CALIBRATION_PROTECT_VALUE      ((float)0.9*R400Q1)		//防冻校准流速小于0.9倍Q1即不走数
#define   TOF_AM_VALUE                250
#define   TOF_UP_AM_0_8               (0.8*TOF_AM_VALUE)//up最大幅值0.8倍
#define   TOF_DOWN_AM_0_8             (0.8*TOF_AM_VALUE)//down最大幅值0.8倍
#define   Q1_0_8                 (float)32//0.8倍的R400的Q1数值

//流量曲线的数量开关
//#define   SUBSECTION_NUM_THREE           1
#define   SUBSECTION_NUM_FOUR            1
//#define   SUBSECTION_NUM_FIVE            1

#elif     BM_DN40_BRASS_63KPA_GP30_32768 
#define   DEFAULT_START_FLOW   0x00D2   //800ps
#define   DIFTOF_COEFFICIENT  (float)0.042673614 //64 L/h对应的时间差均值
#define   R400Q1              (float)40
#define   R400Q2              (float)64
#define   R250Q2              (float)102
#define   Q3_3_3              (float)5280
#define   Q3_6_6              (float)10560
#define   MIN_FLOW_0_6              0x200000//最小流量的50%
#define   MAX_FLOW_1_02             0x4FB00000//过载流量的102%
#define   MIN_FLOW_0_3              0x100000//最小流量的25%
#define   LIMIT_FLOW_1_5Q4          30000//1.5倍的过载流量
#define   LIMIT_DIFTOF_FORWARD          0x00039999   //-100~900ns时间差判断，时间差为正
#define   LIMIT_DIFTOF_REVERSE          0x80006666   //-100~900ns时间差判断，时间差为负
#define   SEGMENT_NUM_SMALL              80
#define   SEGMENT_NUM_MIDDLE             120 //100计算的最大值是107，将102的点也包进去
#define   SEGMENT_NUM_LARGE              2600

#define   DXS_SEGMENT_NUM_LARGE          280 //多项式的基础模型分段值


#define   CALIBRATION_PROTECT_VALUE       ((float)0.9*R400Q1)	//防冻校准流速小于0.9倍Q1即不走数
#define   TOF_AM_VALUE                250
#define   TOF_UP_AM_0_8               (0.8*TOF_AM_VALUE)//up最大幅值0.8倍
#define   TOF_DOWN_AM_0_8             (0.8*TOF_AM_VALUE)//down最大幅值0.8倍
#define   Q1_0_8                 (float)32//0.8倍的R400的Q1数值

//流量曲线的数量开关
//#define   SUBSECTION_NUM_THREE           1
#define   SUBSECTION_NUM_FOUR            1
//#define   SUBSECTION_NUM_FIVE            1

//20211205
#elif     PF_DN40_BRASS_63KPA_GP30_32768 
#define   DEFAULT_START_FLOW   0xD2   //800ps
#define   DIFTOF_COEFFICIENT  (float)0.042673614 //64 L/h对应的时间差均值
#define   R400Q1              (float)40
#define   R400Q2              (float)64
#define   R250Q2              (float)102
#define   Q3_3_3              (float)5280
#define   Q3_6_6              (float)10560
#define   MIN_FLOW_0_6              0x200000//最小流量的50%
#define   MAX_FLOW_1_02             0x4FB00000//过载流量的102%
#define   MIN_FLOW_0_3              0x100000//最小流量的25%
#define   LIMIT_FLOW_1_5Q4          30000//1.5倍的过载流量
#define   LIMIT_DIFTOF_FORWARD          0x000347AE   //-220~820ns时间差判断，时间差为正
#define   LIMIT_DIFTOF_REVERSE          0x8000E147   //-220~-820ns时间差判断，时间差为负
#define   SEGMENT_NUM_SMALL              76
#define   SEGMENT_NUM_MIDDLE             530//
#define   SEGMENT_NUM_LARGE              2700

#define   DXS_SEGMENT_NUM_LARGE          280 //多项式的基础模型分段值

/*需要修改下面的参数！！！20211105*/
#define   SEGMENT_NUM_ERROR_MIDDLE       550   ////这个值没有意义

//理论模型----------------------------需要修改参数！！！！-------
#define   REAL_SOUND_PATH_LENGTH              (float)85//(float)74.863   //L*cos  还是 D*cot—— D准确  ——————————————2021-2-1改为弦向尺寸    2021-7-21 ——15的59.8；20的59.95
#define   MEASYRING_TUBE_DIAMETER             (float)26   //15的10.7,  20的13.6
#define   FLOW_RATE_MULTIPLIER				  (float)5.8823529e-9//(float)6.6788667e-9  //  流速计算常数=  1e-9/(2*(L有效))/0.001
#define   FLOW_MULTIPLIER				      (float)1935.0432  //  流量计算常数=  (3.1416*D*D*1e-6/4 )*3600 *1000L/h   //面积 15:93.3307  20：146.631

#define   CALIBRATION_PROTECT_VALUE       ((float)0.9*R400Q1)	//防冻校准流速小于0.9倍Q1即不走数
#define FLOAT_BETWEEN_DATA_DIF_MAX     (float)3.8//950ns时间差对应的滤波时的float类型数值=850/250	  临界状态切换门限值
#define FLOAT_SWITCH_STATE_THRESHOLD    (float)3.4//850ns时间差对应的滤波时的float类型数值=850/250	  临界状态切换门限值
#define FLOAT_BETWEEN_DATA_DIF        	(float)2.2//550ns时间差对应的滤波时的float类型数值=550/250	  相邻俩个数据之间的差值
#define FLOAT_LAST_DATA_MAX_THRESHOULD     	(float)1.4//350ns时间差对应的滤波时的float类型数值=350/250	  上一个数据的门限判定上限值    关于门限判定，程序中判定的是负数，所以-350是上限
#define FLOAT_LAST_DATA_MIN_THRESHOULD      (float)1.84//460ns时间差对应的滤波时的float类型数值=460/250	  上一个数据的门限判定门限值    关于门限判定，程序中判定的是负数，所以-460是下限
#define FLOAT_SWITCH_STATE_CURRENT_THRESHOLD        (float)0.64//160ns时间差对应的滤波时的float类型数值=160/250	  临界状态当前数据的门限值
//流量曲线的数量开关
//#define   SUBSECTION_NUM_THREE           1
#define   SUBSECTION_NUM_FOUR            1
//#define   SUBSECTION_NUM_FIVE            1

#endif

#define   MIN_START_FLOW      0x1A   //100ps  对应的Gp30格式的数据 0.1/250*65536
#define   MAX_START_FLOW      0x189  //1500ps  对应的Gp30格式的数据 1.5/250*65536

#define   MIN_FLOW_TO_PS      0x64   //100ps  对应的十六进制
#define   MAX_FLOW_TO_PS      0x05DC  //1500ps  对应的十六进制

//#define RESET_LIMIT_DATE               200 //复位保留限定值（DN15 250 ,DN20 400,  DN25 500, DN32 1000, DN40 1200）
//主要工作: 采样，滤波
/*************************宏定义****************************/
#define  GP22_APP_S0                   0
#define  GP22_APP_S1                   1
#define  GP22_APP_S2                   2
#define  GP22_APP_S3                   3
#define  GP22_APP_S10                  4

//采样启动
#define   GP22_APP_FLOW                     01   //GP22只启动流量。
#define   GP22_APP_FLOW_TEMP                10   //GP22启动流量+温度。
//滤波时间差的正负号标志
#define   GP22_APP_DIFTOF_POST                01   //滤波时间差为正
#define   GP22_APP_DIFTOF_NEGT                10   //滤波时间差为负

//采样频率
#define   GP22_SAMPLE_2HZ                  1   //2Hz
#define   GP22_SAMPLE_1HZ                  2   //1Hz
#define   GP22_SAMPLE_0_5HZ                4   //0.5Hz
//检定状态下，累积量计算系数
#define   FACTOR_0_5                  0.5   
#define   FACTOR_1                  	1   
#define   FACTOR_2                 		2   
// 0流量时间差（绝对值）、1顺流单程时间、2逆流单程时间 4带正负号的顺流逆流时间差
#define   GP22_APP_FLOW_DIFFER              0   //流量时间差（绝对值）
#define   GP22_APP_UP_TOF                   1   //顺流单程时间
#define   GP22_APP_DOWN_TOF                 2   //逆流单程时间
#define   GP22_APP_STAND_DIFFER             3   //缺省
#define   GP22_APP_FLOW_DIFFER_SIGN         4   //带正负号的顺流逆流时间差


//接口查询输入参数
#define GP30_APP_INS_FLOW                   1//瞬时流量
#define GP30_APP_TOTAL_FLOW                 2//累计流量
#define GP30_APP_TOTAL_FLOW_REVERSE         3//累计逆向流量

#define GP30_APP_TOF          4//单程时间up
#define GP30_APP_RATIO_UP     5//脉冲宽度比up
#define GP30_APP_PEAK_UP      6//峰值up

#define GP30_APP_DOWN         7//单程时间down
#define GP30_APP_RATIO_DOWN   8//脉冲宽度比DOWN
#define GP30_APP_PEAK_DOWN    9//峰值DOWN

#define GP30_APP_DIFF         10//时间差
#define GP30_APP_INS_FLOW_LCD         12//检定状态下瞬时流量显示







//#define GP30_APP_TOTAL_FLOW_REVERSE   13//逆向累计流量

#define GP30_APP_TEMP         14//温度  

//规约传递的MSG
#define   GP30_APP_STILL_WATER_FRAME        4   //查询静水时间差 参数
#define   GP30_APP_CLEAR_DATA_FRAME         1   //清GP30 实时数据

//常数
//#define   GP30_APP_QUEUE_SIZE       12
//#define   GP30_APP_START_FLOW_FILTER  	0xD1                                   //DN15、DN20整表：900、700ps（3.77L、5 L）——模组的800、600（3.3L、4.2）
//#define GP22_APP_START_FLOW_RESERVER  	0x80000000|GP30_APP_START_FLOW_FILTER  //反向始动流量DN15、DN20整表：900、700ps（3.77L、5 L）——模组的800、600（3.3L、4.2）
//#define   GP30_APP_START_FLOW_FILTER_FOR_FLOAT  (float)GP30_APP_START_FLOW_FILTER/(float)65536
#define    MAX_TEMP_NUM               10//用于温度滤波的BUFFER最大值
#define    MAX_TOF_BUCHANG_NUM        150//单程时间校准数据存储BUFFER----------这个数值需要实际活塞台子测试

#define    TOF_BUCHANG_IDLE                  0//单程时间补偿---空闲状态
#define    TOF_BUCHANG_START_SAMPLE          1//单程时间补偿---采样状态


#define    GP30_DIFTOF_FILTER_ENABLE_MAX_VALUE               0x1EB8//GP30时间差滤波算法启用的最大阈值，只有小于30ns的时间差才会启用新的滤波算法


#define    TOF_MAX_DIF_FOR_HUADONG    0x0000E147// 150ns对应的GP30格式数据   
#define    TOF_DIF_FOR_HUADONG        0x00023333// 550ns对应的GP30格式数据
#define    TOF_UP_FOR_FILTER_FLAG     1//UP单程时间滤波标志
#define    TOF_DOWN_FOR_FILTER_FLAG   0//DOwn单程时间滤波标志
#define    TOF_6_US                   1572864 //6us 对应的GP30格式数据

typedef union {
	u32 gp30_u32;
	float gp30_float;
} To_Float_GP30;

#define   GP30_APP_MAX_DATA         18   //GP30最大数据个数

typedef union {
    u32 gp30_u32;
    float gp30_float;
} To_Float;

typedef union {
    u64 gp30_u64;
    double gp30_double;
} To_Double;

typedef union {

	struct {
		u32 temp; //温度（GP30数据格式）
		To_Float_GP30 total_flow; //累计流量(float（iEEE754），非检定放大倍数100)
		To_Float_GP30 total_flow_reverse;//逆向累计流量
		u32 ins_flow; //瞬时流量（GP30数据格式）
		u32 TOF_up; //单程TOF_up均值（GP30数据格式）
		u32 ratio_up; //Pulse_Width_Ratio_Up（GP30数据格式）
		u32 peak_up; //换能器峰值（GP30数据格式）//换能器峰峰值_up
		u32 TOF_down; //单程TOF_down均值（GP30数据格式）
		u32 ratio_down; //Pulse_Width_Ratio_down（GP30数据格式）
		u32 peak_down; //换能器峰值（GP30数据格式）//换能器峰峰值_down
		u32 TOF_diff; //时间差（GP30数据格式）
        To_Float up_tof_dif; //UP端的比例差值
        To_Float down_tof_dif; //DOwn的比例差值
        u32 ins_flow_cnt;  //瞬时流量计算总次数，计算一次cnt加1次
        float ins_flow_sum;//瞬时流量计算总和，计算一次sum加1次
		float ins_flow_sum_temp;//瞬时流速累计临时值
		float ins_flow_max;//瞬时流速最大值
		float ins_flow_min;//瞬时流速最小值
		
	}s;
	u32 data[GP30_APP_MAX_DATA]; //当前数据
} GP30_SYS_Date;
	
	
typedef struct {
    u16 communication_err;
    u16 no_water;
    u16 low_flow;
    u16 out_temp;
    u16 low_high_flow;
    u16 reverse_flow;
	u16 tof_overrun;
	u16 low_amp;
	u16 gp30_err;
    u16 water_direction_reverse;//水流反向
} EVENT;

typedef struct {
    u8 communication_err;
    u8 no_water;
    u8 low_flow;
    u8 out_temp;
    u8 low_high_flow;
    u8 reverse_flow;
	u8 tof_overrun;
	u8 low_amp;
	u8 gp30_err;
    u8 water_direction;//水流反向
} EVENT_FLAG;

typedef union {

    struct {
        u8 time[6]; //年月日时
        To_Float total_flow; //累计流量
        u16 state; //状态字
    }s;
    u8 data[12];
} GP30_APP_EVENT_DATA;

typedef struct {
    u8 diftof_overrun_num;
	u8 tdc_overrun_num;  //无水
	u8 tof_overrun_num;
	u8 type_err_num;
	u8 GP30_sample_err_num;
} OVERRUN_NUM;

#define   GP30_APP_EVENT_SUM_NORMAL      20
#define   GP30_APP_EVENT_SUM_TEST        160

#define   GP30_communication_err       1
#define   GP30_no_water        2
#define   GP30_low_flow        4
#define   GP30_out_temp        5
#define   GP30_low_high_flow      6
#define   GP30_reverse_flow     7
#define	  GP30_TOF_overrun      8
#define	  GP30_low_amp			9
#define	  GP30_err			3
#define	  GP30_water_direction 10


#define   GP30_communication_err_DE       11
#define   GP30_no_water_DE        22
#define   GP30_low_flow_DE        44
#define   GP30_out_temp_DE        55
#define   GP30_low_high_flow_DE   66
#define   GP30_reverse_flow_DE   77
#define   GP30_TOF_overrun_DE     88
#define	  GP30_low_amp_DE			99
#define	  GP30_err_DE				33
#define	  GP30_water_direction_DE 23		


#define   GP30_clear_all       0xFF

//2017-12-4 13:25:56屏
//#define   GP30_APP_LOWPOW_ERR_ADDR       0x800
//#define   GP30_APP_TRANS_ERR_ADDR       0x900
//#define   GP30_APP_NO_WATER_ADDR        0xA00
//#define   GP30_APP_LOW_FLOW_ADDR        0xB00
//#define   GP30_APP_OUT_TEMP_ADDR        0xC00

#define   GP30_APP_LOWPOW_ERR_ADDR       0x800   //2015-6-4  改为连续存储事件
#define   GP30_APP_TRANS_ERR_ADDR       (GP30_APP_LOWPOW_ERR_ADDR + sizeof(GP30_APP_EVENT_DATA))
#define   GP30_APP_NO_WATER_ADDR        (GP30_APP_TRANS_ERR_ADDR + sizeof(GP30_APP_EVENT_DATA))
#define   GP30_APP_LOW_FLOW_ADDR        (GP30_APP_NO_WATER_ADDR + sizeof(GP30_APP_EVENT_DATA))
#define   GP30_APP_OUT_TEMP_ADDR        (GP30_APP_LOW_FLOW_ADDR + sizeof(GP30_APP_EVENT_DATA))


//事件发生时间年月日时分秒6 +事件发生时累积流量4 + 状态字2 =  12字节。每个事件最近发生的一条记录。
//换能器故障：0x900 - 0x9FF（GP30应用处理机）:1小时发生的次数超过90%作为有效记录
//管段无水：0xA00 - 0xAFF（GP30应用处理机）:1小时发生的次数超过90%作为有效记录
//超低流量报警：0xB00 - 0xBFF（GP30应用处理机）:1小时发生的次数超过90%作为有效记录
//水温超出温度等级范围：0xC00 - 0xCFF（GP30应用处理机）:1小时发生的次数超过90%作为有效记录


//GP30数据清零处理机
//主要工作: 处理上位机命令，将当前数据清零

#define   GP30_APP_CLEAR_DATA_S0                   0
#define   GP30_APP_CLEAR_DATA_S1                   1

#define   GP30_APP_DATA_ADDR                      EEP_GP30_BASE_ADDR     //数据备份的EE地址 0x100
#define   GP30_APP_DATA_TOTAL_FLOW_ADDR           (GP30_APP_DATA_ADDR +6)  //2017 02,更改复位不丢数
#define   GP30_APP_DATA_TOTAL_FLOW_ADDR_REVERSE   (GP30_APP_DATA_ADDR +10) //2017 02,更改复位不丢数
#define   GP30_APP_DATA_UP_TOF_DIF_ADDR           (GP30_APP_DATA_ADDR +14) //2021-03-22//
#define   GP30_APP_DATA_DOWN_TOF_DIF_ADDR         (GP30_APP_DATA_ADDR +18) //2021-03-22

#define	  DIFTOF_CALIBRATION_FLAG_ADDR			  0X150 //2021,04,增加换能器零流量校准标志，如果是0xA1B2C3D4E5F6A7B8表示校准过
#define	  DIFTOF_CALIBRATION_VALUE_ADDR			  (DIFTOF_CALIBRATION_FLAG_ADDR +8) //2021,04,增加换能器零流量校准值4字节
typedef union {

    struct {
        u8 flag[2]; //第一次上电标志
        u8 time[4]; //年月日时
        To_Float total_flow; //正向累计流量
		To_Float total_flow_reverse; //反向累计流量
        To_Float up_tof_dif; //UP端的比例差值
        To_Float down_tof_dif; //DOwn的比例差值
    }s;
    u8 data[22]; //当前数据
} GP30_APP_SAVE_DATA;
typedef union {

    struct {
        U8TOU64 diftof_calibration_flag; //时间差是否校准过的标志
        U8TOU32 diftof_calibration_value; //时间差校准值
    }s;
    u8 data[12]; 
} GP30_DIFTOF_CAL_DATA;

//当前数据备份处理机
//主要工作: 完成GP30当前累计数据备份存储

/*************************宏定义****************************/
#define   GP30_APP_SAVE_S0                   0
#define   GP30_APP_SAVE_S1                   1
#define   GP30_APP_SAVE_S2                   2
#define   GP30_APP_SAVE_S3                   3
#define   GP30_APP_SAVE_S4                   4
#define   GP30_APP_SAVE_S5                   5
#define   GP30_APP_SAVE_S6                   6

#define   SAMPLE_INTERVAL_1h                 3600   //数据备份周期
#define   FLOW_DETECT_5S               3   //流量检测


//GP22应用处理机上电初始化
//主要工作: GP22应用处理机上电初始化， EE数据读取 
//EEPROM区域： 0x80-0xB7
//第一次上电标志: 0x77 0x88

#define   GP30_APP_INIT_S0                   0
#define   GP30_APP_INIT_S1                   1
#define   GP30_APP_INIT_S2                   2
#define   GP30_APP_INIT_S3                   3
#define   GP30_APP_INIT_S4                   4
#define   GP30_APP_INIT_S5                   5
#define   GP30_APP_INIT_S6                   6
#define   GP30_APP_INIT_S7                   7
#define   GP30_APP_INIT_S8                   8

//GP22采样间隔处理机
#define   GP22_APP_SAMPLE_S0      0
#define   GP22_APP_SAMPLE_S1      1
#define   GP22_APP_SAMPLE_S2     2
#define   GP22_APP_SAMPLE_S3      3
#define   GP22_APP_SAMPLE_S4      4

//Send_Data主动上报处理机
#define		SEND_DATA_S0			0
#define		SEND_DATA_S1			1
#define		SEND_DATA_S2			2
#define		SEND_DATA_S3			3

//流量计算间隔切换处理机
#define		GP30_CONTROL_S0			0
#define		GP30_CONTROL_S1			1

#define   GP30_APP_FLOW_DETECT_S0                   0//流速检测状态机 2022-05-30
#define   GP30_APP_FLOW_DETECT_S1                   1
#define   GP30_APP_FLOW_DETECT_S2                   2
#define   GP30_APP_FLOW_DETECT_S3                   3


//位置20211213
//反向计量机制状态机
#define  MSASURE_STATE_OPEN         0
#define  MSASURE_STATE_SWITCH       1
#define  MSASURE_STATE_CLOSE        2
//#define   GP22_APP_SAMPLE_SIZE                        6   //GP22每采样GP22_APP_SAMPLE_SIZE 次进行一次温度采集,计算一次。
//#define   GP22_APP_QUEUE_SIZE                         12   //GP22流量滤波队列中元素个数


//#define   GP22_APP_DIFTOF_SIZE                        10   //GP22测量时间差元素个数
//#define   GP22_APP_DIFTOF_SIZE_2                      60   //第二个数组元素个数

#define   GP22_APP_QUEUE_SIZE                         16  //GP22流量滤波队列中元素个数
#define   GP22_APP_TEMP_INVERSE_DATA_SIZE               3  //GP22FHL模式下UP和DOWN单程时间队列中元素个数
#define   GP22_APP_TEMP_INVERSE_DATA_SIZE_FIVE              5  //GP22FHL模式下UP和DOWN单程时间队列中元素个数

#define   GP30_APP_FILTER_SIZE                        (GP22_APP_QUEUE_SIZE/4)  //检定状态下计算累计量滤波值
#define   GP30_APP_FILTER_MAX_MIN_SIZE                (GP30_APP_FILTER_SIZE/2)  //GP30检定状态下计算累计量滤波值,最大最小个数

#define   GP22_APP_DIFTOF_SIZE                        GP22_APP_QUEUE_SIZE   //GP22测量时间差元素个数


#if EN_SMALL_FILITER
#define   GP22_APP_DIFTOF_SIZE_2                      40   //第二个数组元素个数   16*40 = 640
#elif EN_LARGE_FILITER
#define   GP22_APP_DIFTOF_SIZE_2                      20   //第二个数组元素个数 
#define   GP22_APP_DIFTOF_SIZE_3                      30   //第三个数组元素个数   16*30 *20 = 9600 //10分钟超长滤波
#define   GP22_APP_DIFTOF_SUM                         600   //第三个滤波函数总数   30*20  //10分钟超长滤波
#endif 

#define   SAMPLE_FREQUENCY_NON_VERIFICATION                     8  //GP30非检定状态采样频率
#define   TOTAL_FLOW_COEFFICIENT_NON_VERIFICATION        		(GP22_APP_QUEUE_SIZE / SAMPLE_FREQUENCY_NON_VERIFICATION)  //非检定状态计算累计流量 用到的系数

#define   SAMPLE_FREQUENCY_VERIFICATION                      16  //GP30检定状态采样频率
#define   TOTAL_FLOW_COEFFICIENT_VERIFICATION          	 	 (GP22_APP_QUEUE_SIZE / SAMPLE_FREQUENCY_VERIFICATION)  //检定状态计算累计流量 用到的系数
#define   GP22_APP_EXCEED_START_FLOW_SUM                     3/*       修改原因：大流出现低振幅情况，写2个存在风险;GP22_APP_QUEUE_SIZE/8    //GP30_APP_FILTER_SIZE     低于始动流量的时间差次数，用于静水处理算法 2019-5-7*/
#define   GP22_APP_EXCEED_START_FLOW_SUM_VERIFICATION        (GP22_APP_QUEUE_SIZE/2)    //用于检定状态下GP30_APP_FILTER_SIZE     //低于始动流量的时间差次数，用于静水处理算法 2019-5-7
#define   GP22_APP_MAX_AM_BUFFER        					 (GP22_APP_QUEUE_SIZE/2)    //用于检定状态下GP30_APP_FILTER_SIZE     //低于始动流量的时间差次数，用于静水处理算法 2019-5-7
#define   GP22_MAX_BUFFERLENTH                         16  //GP30最大bufferlenth

#define   INS_FLOW_CAL_CNT_MAX                     1800//30分钟瞬时流量循环一次
//GP22数据存储防护处理机
#define   GP22_APP_MONITOR_S(X)      X
/*处理机设计
 *
while (!g_gp22_init_flag)
{
    GP22应用处理机上电初始化 处理机
    EE处理机
}*/

//接口使用
#define  SLEEP_TRUE                1
#define  SLEEP_FALSE               0

//接口使用
#define  GP30_APP_IDLE             1
#define  GP30_APP_BUSY             0
#define  GP30_APP_TEST             2


//常数

#define   GP22_APP_3P6          0x00039999   //3.6


#define   GP22_APP_TOTAL_FLOW_PARA_NOR          0x0000071C   //100/3600 非检定 放大100倍
#define   GP22_APP_TOTAL_FLOW_PARA_JIAN         0x0000071C   //100000/3600/1000 检定 放大100000倍

//#define   GP22_APP_TOTAL_FLOW_PARA_NOR          0x0000071C   //100/3600 非检定 放大100倍
//#define   GP22_APP_TOTAL_FLOW_PARA_JIAN         0x0000071C   //100000/3600 检定 放大100000倍    并把检定状态 ms转秒  /1000  同上了
#define   GP22_APP_1_3600                       0x0000471D    // 1000 /3600

#define   GP22_APP_TOTAL_HEAT_PARA_NOR          0x0000071C   //100/3600 非检定 放大100倍
#define   GP22_APP_TOTAL_HEAT_PARA_JIAN         0x00000012   //1000/3600 检定 放大1000倍    /1000 转化ms

extern GP30_DIFTOF_CAL_DATA g_diftof_cal_data;//校准的时间差和标志
/*---------------------------------- Function Declare -----------------------------------*/
void Gp30MachineApp(void);
void Gp30InitApp(void);
u32 Gp30CheckDataApp(u8 data_para);
u32 Gp30CheckTestDataApp(u8 data_para);
u8 Gp30IfSleepApp(void);
u8 Gp30InitDataApp(u32 total_flow, u32 negative_total_flow);
u8 Gp30CurInitDataApp(u32 cur_total_flow);
//void Gp30TestFlowInit(void);
void gp22CheckErrEventApp (u8 err_event);
u8 Gp30CheckBootloaderMsgApp(void);
u32 Gp30GetTestRamFlag(void);
void Meter_ResetCountAdd(u8 reason);
u16 Meter_GetResetCount(void);
u16 Gp30CheckErrDataApp(void);
void Gp30StartMeasureApp(u8 flag);
//u8 Gp30CheckSetWindowApp(void);
//void Gp30ClearSetWindowApp(void);
u32 FilterJunZhi(u32 *data, u8 data_len);

u8 Check_Start_STOP_Filter_Flag(void);//获取温度是否进行滤波处理标志
void Clear_Start_STOP_Filter_Flag(void);//清零温度是否进行滤波处理标志
float Check_Temperature_Parameter(void);//获取滤波温度
	
u32 FloatToGp30Data(float data);
float Gp30DataToFloat(u32 data);
u32 bcdToHex32(u32 value);
void Gp22AppSetGp22Err(void);
void FlowIntvalTimeLPTimer(void);
void RecordCalculativeIntvalTimeLPTimer(void);
void NormalResetCompensation(void);
void Gp30DiftofCalibration(void);
u8 CheckAutoCalibrationMsg(void);
u8 CheckTransducerErrorMsg(void);
u8 CheckDiftofCalibrationFlag(void);

float ModifyForVolumeTestbench(float temp_ins_flow_float);
float modify_flow( float ins_flow_temp_float);//根据流量计算当前流量
u8 GP30_Check_Data_UpdateMsg(void);
void GP30_Set_Data_UpdateMsg(void);
void GP30_Clear_Data_UpdateMsg(void);

void DiftofForTestbench(float temp_ins_flow_float);
//void VerificationResetCompensation(void);

//extern u16 g_test_start_sum ;
//extern u16 g_test_stop_sum ;

#endif	/* __UWater_GP30_APP_H */



