R1UWaterRS485/app/UWater_gp22_app.h

1771 lines
88 KiB
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
* File: __GP30W_GP30_APP_H
* Author:
*
* Created on2015-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 //高温校准时时间差提高1500ps0.006=1.5ns/250抵消温度大于35度时减少的1500ps
//#define DIFTOF_HIGH_TEMP_START_FLOW_COMPENSATE 0x106//启用校准的情况下30度以上始动流量提高1000ps0x106=262=1*65536/250
//#define DIFTOF_LOW_TEMP_START_FLOW_COMPENSATE 0xB7//启用校准的情况下30度及30度以下始动流量提高700ps0xB8=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.820的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 20146.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.820的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 20134.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.820的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 20134.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.820的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 20134.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.820的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 20146.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.820的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 20134.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.820的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 20134.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.820的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 20134.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.820的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 20146.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.820的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 20146.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.820的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 20146.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.820的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 20146.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.820的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 20146.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.820的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 20146.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、700ps3.77L、5 L——模组的800、6003.3L、4.2
//#define GP22_APP_START_FLOW_RESERVER 0x80000000|GP30_APP_START_FLOW_FILTER //反向始动流量DN15、DN20整表900、700ps3.77L、5 L——模组的800、6003.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; //累计流量(floatiEEE754非检定放大倍数100)
To_Float_GP30 total_flow_reverse;//逆向累计流量
u32 ins_flow; //瞬时流量GP30数据格式
u32 TOF_up; //单程TOF_up均值GP30数据格式
u32 ratio_up; //Pulse_Width_Ratio_UpGP30数据格式
u32 peak_up; //换能器峰值GP30数据格式//换能器峰峰值_up
u32 TOF_down; //单程TOF_down均值GP30数据格式
u32 ratio_down; //Pulse_Width_Ratio_downGP30数据格式
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 - 0x9FFGP30应用处理机:1小时发生的次数超过90%作为有效记录
//管段无水0xA00 - 0xAFFGP30应用处理机:1小时发生的次数超过90%作为有效记录
//超低流量报警0xB00 - 0xBFFGP30应用处理机:1小时发生的次数超过90%作为有效记录
//水温超出温度等级范围0xC00 - 0xCFFGP30应用处理机: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 */