Files
CHJ/user/Protocol/ModbusTest.h
2026-03-20 21:16:58 +08:00

318 lines
16 KiB
C
Executable File
Raw 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.

#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