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