This commit is contained in:
2026-03-20 21:16:58 +08:00
parent 286ff98b8e
commit 90c3d919df
248 changed files with 94554 additions and 0 deletions

317
user/Protocol/ModbusTest.h Executable file
View File

@@ -0,0 +1,317 @@
#ifndef __InternalModbus_h__
#define __InternalModbus_h__
#define INT_METER_8000 0x8000
#define INT_METER_8200 0x8200
#define INT_METER_8300 0x8300
#define INT_METER_8400 0x8400
#define INT_METER_9000 0x9000
#define INT_METER_A000 0xA000
#define INT_METER_D000 0xD000
#define INT_METER_E000 0xE000
#define INT_METER_F000 0xF000
#define INT_MASK 0xFF00
/******************************************************************************/
#define INT_METER_INFO_MAX 0x80FF
#define INT_METER_PARA_MAX 0x82FF
#define INT_METER_CODE_MAX 0x83FF
#define INT_METER_SYS_MAX 0x84FF
#define INT_METER_85FF 0x85FF
#define INT_METER_86FF 0x86FF
//#define INT_CURVE_MAX INT_METER_85FF
//#define INT_ATYPE_CURVE_MAX INT_METER_86FF
/******************************************************************************/
// for factory control
#define INT_PARAMETER_PROTOCOL 0x8000
// Fixed Address for product series
#define INT_SERIES_BASE 0x8000 // [Enable Read And Write]
#define INT_TIME_BASE 0x8006 // [Enable Read And Write]
//-----------------------------------------------------------------------------
// first curve(for temp correct)
// 40*3+1=241
#define INT_CURVE_NUM 0x8009
#define INT_CURVE (INT_CURVE_NUM+1)
#define INT_CURVE_WIDTH 3 // not address
#define INT_CURVE_DATA_WIDTH (INT_CURVE_WIDTH*2)
#define INT_CURVE_BASE INT_CURVE // [Enable Read And Write]
#define INT_CURVE_NODE1 INT_CURVE_BASE
#define INT_CURVE_NODE2 (INT_CURVE_NODE1+3)
#define INT_CURVE_NODE3 (INT_CURVE_NODE2+3)
#define INT_CURVE_NODE4 (INT_CURVE_NODE3+3)
#define INT_CURVE_NODE5 (INT_CURVE_NODE4+3)
#define INT_CURVE_NODE6 (INT_CURVE_NODE5+3)
#define INT_CURVE_NODE7 (INT_CURVE_NODE6+3)
#define INT_CURVE_NODE8 (INT_CURVE_NODE7+3)
#define INT_CURVE_NODE9 (INT_CURVE_NODE8+3)
#define INT_CURVE_NODE10 (INT_CURVE_NODE9+3)
#define INT_CURVE_NODE11 (INT_CURVE_NODE10+3)
#define INT_CURVE_NODE12 (INT_CURVE_NODE11+3)
#define INT_CURVE_NODE13 (INT_CURVE_NODE12+3)
#define INT_CURVE_NODE14 (INT_CURVE_NODE13+3)
#define INT_CURVE_NODE15 (INT_CURVE_NODE14+3)
#define INT_CURVE_NODE16 (INT_CURVE_NODE15+3)
#define INT_CURVE_NODE17 (INT_CURVE_NODE16+3)
#define INT_CURVE_NODE18 (INT_CURVE_NODE17+3)
#define INT_CURVE_NODE19 (INT_CURVE_NODE18+3)
#define INT_CURVE_NODE20 (INT_CURVE_NODE19+3)
#define INT_CURVE_NODE21 (INT_CURVE_NODE20+3)
#define INT_CURVE_NODE22 (INT_CURVE_NODE21+3)
#define INT_CURVE_NODE23 (INT_CURVE_NODE22+3)
#define INT_CURVE_NODE24 (INT_CURVE_NODE23+3)
#define INT_CURVE_NODE25 (INT_CURVE_NODE24+3)
#define INT_CURVE_NODE26 (INT_CURVE_NODE25+3)
#define INT_CURVE_NODE27 (INT_CURVE_NODE26+3)
#define INT_CURVE_NODE28 (INT_CURVE_NODE27+3)
#define INT_CURVE_NODE29 (INT_CURVE_NODE28+3)
#define INT_CURVE_NODE30 (INT_CURVE_NODE29+3)
#define INT_CURVE_NODE31 (INT_CURVE_NODE30+3)
#define INT_CURVE_NODE32 (INT_CURVE_NODE31+3)
#define INT_CURVE_NODE33 (INT_CURVE_NODE32+3)
#define INT_CURVE_NODE34 (INT_CURVE_NODE33+3)
#define INT_CURVE_NODE35 (INT_CURVE_NODE34+3)
#define INT_CURVE_NODE36 (INT_CURVE_NODE35+3)
#define INT_CURVE_NODE37 (INT_CURVE_NODE36+3)
#define INT_CURVE_NODE38 (INT_CURVE_NODE37+3)
#define INT_CURVE_NODE39 (INT_CURVE_NODE38+3)
#define INT_CURVE_NODE40 (INT_CURVE_NODE39+3)
#define INT_CURVE_MAX (INT_CURVE_NODE1 + CURVE_DATA_MAX*3)
/*******************************************************************************/
/* Parameter and command */
// fixed Read Address
#define INT_KEY_ID 0x8200 // Fixed Address write parameter ID Key 0x9600 [Disable Read]
#define INT_KEY_ID_L 0x8201
#define INT_CURVE_TYPE 0x8202 // select curve type
#define INT_CALIB_FAC 0x820A // 2Byte [Disable Write]
#define INT_CALIB_DEPTH 0x820B // 2Byte [Disable Write]
#define INT_CALIB_WIDTH 0x820C // 2Byte [Disable Write]
// Variable Address
#define INT_CONTROL 0x820D // mode control:9d 45, 9D 00, 55 [Disable Read]
#define INT_CLEAR_RECORD 0x820E // clear data record: [Disable Read]
// parameter Address
#define INT_PROTOCOL 0x8210 // MODBUS Slaver Addr
#define INT_SLAVER_ADDR 0x8211 // MODBUS Slaver Addr
#define INT_METER_FACTOR 0x8212
#define INT_GDCF 0x8213
#define INT_MAX_FLOW 0x8214
#define INT_MAX_FLOW_L 0x8215
#define INT_OFFSET_GAS 0x8216
#define INT_OFFSET_AIR 0x8217
#define INT_SAMPLE_PERIOD 0x8218
#define INT_HISTORY_PERIOD 0x8219
#define INT_PULSE_UNIT 0x821A
#define INT_MAX_LOOP_FR 0x821B
#define INT_MAX_LOOP_FR_L 0x821C
#define INT_SENSOR_SN 0x821D // 0x821D/0x821E/0x821F
#define INT_SENSOR_SN2 0x821E
#define INT_SENSOR_SN3 0x821F
#define INT_TOTAL_ACC 0x8220 // 0x8220-0x8225
#define INT_TOTAL_ACC2 0x8221
#define INT_TOTAL_ACC3 0x8222
#define INT_TOTAL_ACC4 0x8223
#define INT_TOTAL_ACC5 0x8224
#define INT_TOTAL_ACC6 0x8225
#define INT_CALIB_TA 0x8226 // 0x8226
#define INT_OFFSET_A 0x8227
#define INT_FR_SWITCH_POINT 0x8228
#define INT_ATYPE_INDEX_GAIN 0x8229
#define INT_GDCF_ATYPE 0x822A
#define INT_GDCF_CTYPE 0x822B
#define INT_CALIB_PIPE 0x822C
#define INT_WORK_PIPE 0x822D
#define INT_WORK_UNIT 0x822E
#define INT_DIS_LANGUAGE 0x822F
#define INT_ACC_OUT_BIT 0x8230
#define INT_REVERSE_SCALE 0x8231
#define INT_VHH_HIGH 0x8232
#define INT_VHH_ROOM 0x8233
#define INT_VHH_LOW 0x8234
#define INT_NRH_HIGH 0x8235 // for compute TGas
#define INT_NRH_ROOM 0x8236 // for compute TGas
#define INT_NRH_LOW 0x8237
#define INT_NRR_HIGH 0x8238
#define INT_NRR_ROOM 0x8239
#define INT_NRR_LOW 0x823A
#define INT_GCF_A 0x823B
#define INT_GCF_A_L 0x823C
#define INT_GCF_B 0x823D
#define INT_GCF_C 0x823E
#define INT_GCF_C_L 0x823F
#define INT_RR_GAINRES 0x8240
#define INT_VRH_HIGH 0x8241 //
#define INT_VRH_ROOM 0x8242 //
#define INT_VRH_LOW 0x8243
#define INT_ZERO_SUPPRESSION 0x8244
#define INT_STATIC_LOW_TA 0x8245
#define INT_STATIC_HIGH_TA 0x8246
#define INT_PULSE_COUNTER 0x8247 // byte = 4
#define INT_PULSE_COUNTER_L 0x8248
#define INT_ATYPE_RC 0x8249 //
#define INT_ATYPE_WIPER 0x824A //
#define INT_CTYPE_WIPER 0x824B //
#define INT_CTYPE_ADC 0x824C //
#define INT_OFFSET_HIGH 0x824D //
#define INT_OFFSET_LOW 0x824E //
#define INT_TRH_HIGH 0x824F // for compute RH Tempreture
#define INT_TRH_LOW 0x8250 // for compute RH Tempreture
#define INT_MEMS_RATIO 0x8251 //
#define INT_SYS_LCD 0x8252 //
#define INT_SYS_CHIP 0x8253 //
#define INT_SYS_PRESS 0x8254 //
#define INT_TEMP_CORR 0x8255 //
#define INT_OUTPUT_IO_CONFIG 0x8256 //
//#define INT_CURVE_NUM 0x8257 //
#define INT_NRH_P50 0x8258
#define INT_NRH_P0 0x8259
#define INT_ADC_GAIN 0x825A
#define INT_RES_FACTOR 0x825B
#define INT_CUTOFF_FLOW_RATIO 0x825C
#define INT_PRESS_FS 0x825D // 5D 5E
/*******************************************************************************/
// INT_METER_SAMPLING_DATA
/* Real-time data */
// Variable Address (read:MAX 8 Line)
#define INT_READ_CODE_MASK 0xFFF0
#define INT_READ_CODE_BASE 0x8300
#define INT_READ_CODE1 (INT_READ_CODE_BASE)
#define INT_READ_CODE2 (INT_READ_CODE_BASE+1)
#define INT_READ_CODE3 (INT_READ_CODE_BASE+2)
#define INT_READ_CODE4 (INT_READ_CODE_BASE+3)
#define INT_READ_CODE5 (INT_READ_CODE_BASE+4)
#define INT_READ_CODE6 (INT_READ_CODE_BASE+5)
#define INT_READ_CODE7 (INT_READ_CODE_BASE+6)
#define INT_READ_CODE8 (INT_READ_CODE_BASE+7)
#define INT_READ_CODE9 (INT_READ_CODE_BASE+8)
#define INT_READ_CODE10 (INT_READ_CODE_BASE+9)
#define INT_READ_CODE11 (INT_READ_CODE_BASE+10)
#define INT_READ_CODE12 (INT_READ_CODE_BASE+11)
#define INT_READ_CODE13 (INT_READ_CODE_BASE+12)
#define INT_READ_CODE14 (INT_READ_CODE_BASE+13)
#define INT_READ_CODE15 (INT_READ_CODE_BASE+14)
#define INT_READ_CODE16 (INT_READ_CODE_BASE+15)
/*******************************************************************************/
// for sampling data
#define INT_SAMPLING_BASE1 (INT_READ_CODE16 + 1 ) // 0x8310
#define INT_SAMPLING_BASE2 (INT_SAMPLING_BASE1 + 0x10)
#define INT_SAMPLING_DATA1 INT_SAMPLING_BASE1
#define INT_SAMPLING_DATA2 (INT_SAMPLING_DATA1+1)
#define INT_SAMPLING_DATA3 (INT_SAMPLING_DATA1+2)
#define INT_SAMPLING_DATA4 (INT_SAMPLING_DATA1+3)
#define INT_SAMPLING_DATA5 (INT_SAMPLING_DATA1+4)
#define INT_SAMPLING_DATA6 (INT_SAMPLING_DATA1+5)
#define INT_SAMPLING_DATA7 (INT_SAMPLING_DATA1+6)
#define INT_SAMPLING_DATA8 (INT_SAMPLING_DATA1+7)
#define INT_SAMPLING_DATA9 (INT_SAMPLING_DATA1+8)
#define INT_SAMPLING_DATA10 (INT_SAMPLING_DATA1+9)
#define INT_SAMPLING_DATA11 (INT_SAMPLING_DATA1+10)
#define INT_SAMPLING_DATA12 (INT_SAMPLING_DATA1+11)
#define INT_SAMPLING_DATA13 (INT_SAMPLING_DATA1+12)
#define INT_SAMPLING_DATA14 (INT_SAMPLING_DATA1+13)
#define INT_SAMPLING_DATA15 (INT_SAMPLING_DATA1+14)
#define INT_SAMPLING_DATA16 (INT_SAMPLING_DATA1+15)
#define INT_SAMPLING_DATA17 (INT_SAMPLING_DATA1+16)
#define INT_SAMPLING_DATA18 (INT_SAMPLING_DATA1+17)
#define INT_SAMPLING_DATA19 (INT_SAMPLING_DATA1+18)
#define INT_SAMPLING_DATA20 (INT_SAMPLING_DATA1+19)
#define INT_SAMPLING_DATA21 (INT_SAMPLING_DATA1+20)
#define INT_SAMPLING_DATA22 (INT_SAMPLING_DATA1+21)
#define INT_SAMPLING_DATA23 (INT_SAMPLING_DATA1+22)
#define INT_SAMPLING_DATA24 (INT_SAMPLING_DATA1+23)
#define INT_SAMPLING_DATA25 (INT_SAMPLING_DATA1+24)
#define INT_SAMPLING_DATA26 (INT_SAMPLING_DATA1+25)
#define INT_SAMPLING_DATA27 (INT_SAMPLING_DATA1+26)
#define INT_SAMPLING_DATA28 (INT_SAMPLING_DATA1+27)
#define INT_SAMPLING_DATA29 (INT_SAMPLING_DATA1+28)
#define INT_SAMPLING_DATA30 (INT_SAMPLING_DATA1+29)
#define INT_SAMPLING_DATA31 (INT_SAMPLING_DATA1+30)
#define INT_SAMPLING_DATA32 (INT_SAMPLING_DATA1+31)
#define INT_SAMPLING_MAX INT_SAMPLING_DATA32
#define SAMPLING_MAX (INT_SAMPLING_MAX - INT_SAMPLING_DATA1)
/*******************************************************************************/
// Variable Address 0x8400 // flowrate
// system complier infomation
// For System work state
#define INT_SYS_STATE 0x8400
#define INT_HARD_STATE 0x8402
#define INT_SWTICH_STATE 0x8403
#define INT_SYSTEM_VOLTAGE 0x8404
#define INT_PRODUCT_MODEL 0x8405// 06 07 08 09 0a // 0b 0c 0d 0e 0f
#define INT_BUILD_DATE 0x840B
#define INT_PGA_SCALE 0x8410 // PGA<47>Ŵ<EFBFBD><C5B4><EFBFBD><EFBFBD><EFBFBD>
#define INT_NC8411 0x8411 //
#define INT_FR_PPM 0x8412 // PPM
#define INT_STD_TA 0x8413 // <20><>׼<EFBFBD><EFBFBD> STD У׼ʱ<D7BC><CAB1><EFBFBD><EFBFBD><EFBFBD>¶ȼ<C2B6><C8BC><EFBFBD>
#define INT_CODE_COEFF 0x8414 // TR<54><EFBFBD>ϵ<EFBFBD><CFB5> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>ϵ<EFBFBD><CFB5>
#define INT_TA_DELTA 0x8415 // MCU<43><EFBFBD><C2B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
#define INT_BL_FLOW 0x8416
#define INT_DOP_VALUE 0x8417 // <20><><EFBFBD>ֵ<EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define INT_BPS 0x8419 // У׼ʱBPS
#define INT_DAC_ADJUST_OUT1 0x841A //
#define INT_DAC_ADJUST_OUT2 0x841B //
#define INT_DAC_ADJUST_OUT3 0x841C //
#define INT_DAC_ADJUST_OVER 0x841D //
//==============================================================================
// for upgrade programm
// fixed Read Address
#define INT_UPDATE_APP 0xDF00 // 2BYTE
#define INT_UPDATE_DEPTH 0xDF01 // 2BYTE 0XDF01-02-03
#define INT_UPDATE_CRC 0xDF02 // 2BYTE 0XDF01-02-03
#define INT_UPDATE_WIDTH 0xDF03 // 2BYTE
#define INT_START_CRC 0xDF04 // 2BYTE
#define INT_CALIB_1 0xe000
#define INT_CALIB_2 0xf000
//==========================================================================
#define WRITEKEY 0xAA55
#define INTCMD_NOP 0
#define INTCMD_CPOT_ADJUST (('C'<<8)+'P')
#define INTCMD_APOT_ADJUST (('A'<<8)+'P')
#define INTCMD_CTYPE_CURVE (('C'<<8)+'T')
#define INTCMD_ATYPE_CURVE (('A'<<8)+'T')
#define INTCMD_DAC_CALIB (('D'<<8)+'P')
#define INTCMD_1ST_CERVE (('N'<<8)+'1')
#define INTCMD_2ND_CERVE (('N'<<8)+'2')
#define INTCMD_USER_MODE (('U'<<8)+'R')
#define INTCMD_CALIB_MODE (('C'<<8)+'L') // calibration mode
#define INTCMD_SAVE_SETUP (('S'<<8)+'F') // Save the factory setting
#define INTCMD_RESTORE (('R'<<8)+'F') // Restore factory settings
#define INTCMD_RESET_CORR (('R'<<8)+'C') // Restore
#define INTCMD_PRESET_OFFSET (('P'<<8)+'W')
#define INTCMD_CALIB_HTEMP (('H'<<8)+'T')
#define INTCMD_CALIB_LTEMP (('L'<<8)+'T')
#define INTCMD_PRESET_OFFSET_END (('P'<<8)+'D')
#define INTCMD_CALIB_HTEMP_END (('H'<<8)+'D')
#define INTCMD_CALIB_LTEMP_END (('L'<<8)+'D')
//==========================================================================
//void ReadMeterSystemData(void);
//void ReadMeterInfo(void);
//void ReadMeterSamplingData(void);
//void ReadMeterParameter(void);
//void InternalReadParameterProtocol(void);
//void WriteMeterInfoByCom(void);
//void WriteMeterParameterByCom(void);
//void UpgradePragrammByCom(void);
//void InternalWriteParameterProtocol(void);
void ReadParameterProtocol( void );
#endif