#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放大倍数 #define INT_NC8411 0x8411 // #define INT_FR_PPM 0x8412 // PPM #define INT_STD_TA 0x8413 // 标准温度 STD 校准时修正温度检测 #define INT_CODE_COEFF 0x8414 // TR温度系数 内码归一化系数 #define INT_TA_DELTA 0x8415 // MCU温度零点差值 #define INT_BL_FLOW 0x8416 #define INT_DOP_VALUE 0x8417 // 数字电位器内码 #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