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

367 lines
19 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 __UserModbus_h__
#define __UserModbus_h__
//******************************************************************************
#define meterSN1 MBReg[INX_030]
#define meterSN2 MBReg[INX_031]
#define meterSN3 MBReg[INX_032]
#define meterSN4 MBReg[INX_033]
#define meterSN5 MBReg[INX_034]
#define meterSN6 MBReg[INX_035]
#define alarmState MBReg[INX_036]
#define alarmState1 MBReg[INX_037]
#define alarmState2 MBReg[INX_038]
#define alarmState3 MBReg[INX_039]
#define flowRateH MBReg[INX_03A]
#define flowRateL MBReg[INX_03B]
#define flowAccumulationIntegerH MBReg[INX_03C]
#define flowAccumulationIntegerL MBReg[INX_03D]
#define flowAccumulationDecimal MBReg[INX_03E]
#define PCBTemperature MBReg[INX_03F]
#define GasTemperature MBReg[INX_040]
//#define MBReg[INX_041]
//#define MBReg[INX_042]
//#define MBReg[INX_043]
//#define MBReg[INX_044]
#define GASPressureH MBReg[INX_045]
#define GASPressureL MBReg[INX_046]
#define density MBReg[INX_047]
#define batteryCY MBReg[INX_048]
#define batteryVoltage MBReg[INX_049]
#define batteryDay MBReg[INX_04A]
#define batteryRDay MBReg[INX_04B]
#define ComBatteryCY MBReg[INX_04C]
#define ComBatteryVoltage MBReg[INX_04D]
#define ComBatteryDay MBReg[INX_04E]
#define ComBatteryRDay MBReg[INX_04F]
#define useMinte MBReg[INX_050]
#define useHourH MBReg[INX_051]
#define useHourL MBReg[INX_052]
#define VHHParameter MBReg[INX_053]
//#define MBReg[INX_054]
//#define MBReg[INX_055]
#define flowAccumulationHexH MBReg[INX_056]
#define flowAccumulationHexHM MBReg[INX_057]
#define flowAccumulationHexLM MBReg[INX_058]
#define flowAccumulationHexL MBReg[INX_059]
//#define MBReg[INX_05A]
//#define MBReg[INX_05B]
//#define MBReg[INX_05C]
//#define MBReg[INX_05D]
//#define MBReg[INX_05E]
#define densityFSParameter MBReg[INX_05F]
//#define MBReg[INX_060]
//#define MBReg[INX_061]
//#define MBReg[INX_062]
//#define MBReg[INX_063]
//#define MBReg[INX_064]
//#define MBReg[INX_065]
//#define MBReg[INX_066]
//#define MBReg[INX_067]
//#define MBReg[INX_068]
//#define MBReg[INX_069]
//#define MBReg[INX_06A]
//#define MBReg[INX_06B]
//#define MBReg[INX_06C]
//#define MBReg[INX_06D]
//#define MBReg[INX_06E]
//#define MBReg[INX_06F]
//#define MBReg[INX_070]
//#define MBReg[INX_071]
//#define MBReg[INX_072]
//#define MBReg[INX_073]
//#define MBReg[INX_074]
//#define MBReg[INX_075]
//#define MBReg[INX_076]
//#define MBReg[INX_077]
//#define MBReg[INX_078]
//#define MBReg[INX_079]
//#define MBReg[INX_07A]
//#define MBReg[INX_07B]
//#define MBReg[INX_07C]
//#define MBReg[INX_07D]
#define softCRCCode MBReg[INX_07E]
#define softVersion MBReg[INX_07F]
#define protocol MBReg[INX_080]
#define localAddress MBReg[INX_081]
#define baudRate MBReg[INX_082]
#define minFlowRateH MBReg[INX_083]
#define minFlowRateL MBReg[INX_084]
#define maxFlowRateH MBReg[INX_085]
#define maxFlowRateL MBReg[INX_086]
#define minAnalogOutputH MBReg[INX_087]
#define minAnalogOutputL MBReg[INX_088]
#define maxAnalogOutputH MBReg[INX_089]
#define maxAnalogOutputL MBReg[INX_08A]
#define GDCFactor MBReg[INX_08B]
#define filterTime MBReg[INX_08C]
#define responseTime MBReg[INX_08D]
#define offsetGas MBReg[INX_08E]
#define offsetGasA MBReg[INX_08F]
#define flowUnit MBReg[INX_090]
#define airFactor MBReg[INX_091]
#define factorVth MBReg[INX_092]
#define factoryUnitPerPulse MBReg[INX_093]
#define PulseLevel MBReg[INX_094]
#define samplingTiming MBReg[INX_095]
#define alarmAccH MBReg[INX_096]
#define alarmAccL MBReg[INX_097]
#define alarmUpperFlowRateH MBReg[INX_098]
#define alarmUpperFlowRateL MBReg[INX_099]
#define alarmLowerFlowRateH MBReg[INX_09A]
#define alarmLowerFlowRateL MBReg[INX_09B]
#define alarmFunction MBReg[INX_09C]
#define alarmOutDelay MBReg[INX_09D]
#define uartDecimalPoint MBReg[INX_09E]
#define recordTime MBReg[INX_09F]
#define reverseFlowRateMinH MBReg[INX_0A0]
#define reverseFlowRateMinL MBReg[INX_0A1]
#define reverseFlowRateMaxH MBReg[INX_0A2]
#define reverseFlowRateMaxL MBReg[INX_0A3]
#define I2CAddr MBReg[INX_0A4]
#define I2CCrcMod MBReg[INX_0A5]
#define timingTxdStart MBReg[INX_0A6]
#define timingTxdLen MBReg[INX_0A7]
#define timingTxdTime MBReg[INX_0A8]
#define pressureOffset MBReg[INX_0A9]
//#define MBReg[INX_0AA]
//#define MBReg[INX_0AB]
//#define MBReg[INX_0AC]
//#define MBReg[INX_0AD]
#define keyPassWordH MBReg[INX_0AE]
#define keyPassWordL MBReg[INX_0AF]
//#define MBReg[INX_0B0]
//#define MBReg[INX_0B1]
//#define MBReg[INX_0B2]
//#define MBReg[INX_0B3]
//#define MBReg[INX_0B4]
//#define MBReg[INX_0B5]
//#define MBReg[INX_0B6]
//#define MBReg[INX_0B7]
//#define MBReg[INX_0B8]
//#define MBReg[INX_0B9]
//#define MBReg[INX_0BA]
//#define MBReg[INX_0BB]
//#define MBReg[INX_0BC]
//#define MBReg[INX_0BD]
//#define MBReg[INX_0BE]
//#define MBReg[INX_0BF]
//#define MBReg[INX_0C0]
//#define MBReg[INX_0C1]
//#define MBReg[INX_0C2]
//#define MBReg[INX_0C3]
//#define MBReg[INX_0C4]
//#define MBReg[INX_0C5]
//#define MBReg[INX_0C6]
//#define MBReg[INX_0C7]
//#define MBReg[INX_0C8]
//#define MBReg[INX_0C9]
//#define MBReg[INX_0CA]
//#define MBReg[INX_0CB]
//#define MBReg[INX_0CC]
//#define MBReg[INX_0CD]
//#define MBReg[INX_0CE]
//#define MBReg[INX_0CF]
//#define MBReg[INX_0D0]
//#define MBReg[INX_0D1]
//#define MBReg[INX_0D2]
//#define MBReg[INX_0D3]
//#define MBReg[INX_0D4]
//#define MBReg[INX_0D5]
//#define MBReg[INX_0D6]
//#define MBReg[INX_0D7]
//#define MBReg[INX_0D8]
//#define MBReg[INX_0D9]
#define minLeakFlowRate MBReg[INX_0DA]
#define maxLeakFlowRate MBReg[INX_0DB]
#define leakDetectTime MBReg[INX_0DC]
//#define MBReg[INX_0DD]
#define GDCFactorAType MBReg[INX_0DE]
//#define MBReg[INX_0DF]
//#define MBReg[INX_0E0]
//#define MBReg[INX_0E1]
//#define MBReg[INX_0E2]
//#define MBReg[INX_0E3]
//#define MBReg[INX_0E4]
//#define MBReg[INX_0E5]
//#define MBReg[INX_0E6]
//#define MBReg[INX_0E7]
//#define MBReg[INX_0E8]
//#define MBReg[INX_0E9]
//#define MBReg[INX_0EA]
//#define MBReg[INX_0EB]
//#define MBReg[INX_0EC]
//#define MBReg[INX_0ED]
//#define MBReg[INX_0EE]
//#define MBReg[INX_0EF]
#define CMDCalOffset MBReg[INX_0F0]
#define CMDClrRecord MBReg[INX_0F1]
//#define MBReg[INX_0F2]
//#define MBReg[INX_0F3]
//#define MBReg[INX_0F4]
//#define MBReg[INX_0F5]
//#define MBReg[INX_0F6]
//#define MBReg[INX_0F7]
//#define MBReg[INX_0F8]
//#define MBReg[INX_0F9]
//#define MBReg[INX_0FA]
//#define MBReg[INX_0FB]
//#define MBReg[INX_0FC]
//#define MBReg[INX_0FD]
//#define MBReg[INX_0FE]
#define CMDComPassword MBReg[INX_0FF]
#define MAPPoint1 MBReg[INX_100]
#define MAPPoint2 MBReg[INX_101]
#define MAPPoint3 MBReg[INX_102]
#define MAPPoint4 MBReg[INX_103]
#define MAPPoint5 MBReg[INX_104]
#define MAPPoint6 MBReg[INX_105]
#define MAPPoint7 MBReg[INX_106]
#define MAPPoint8 MBReg[INX_107]
#define MAPPoint9 MBReg[INX_108]
#define MAPPoint10 MBReg[INX_109]
#define MAPPoint11 MBReg[INX_10A]
#define MAPPoint12 MBReg[INX_10B]
#define MAPPoint13 MBReg[INX_10C]
#define MAPPoint14 MBReg[INX_10D]
#define MAPPoint15 MBReg[INX_10E]
#define MAPPoint16 MBReg[INX_10F]
#define MAPPoint17 MBReg[INX_110]
#define MAPPoint18 MBReg[INX_111]
#define MAPPoint19 MBReg[INX_112]
#define MAPPoint20 MBReg[INX_113]
#define MAPPoint21 MBReg[INX_114]
#define MAPPoint22 MBReg[INX_115]
#define MAPPoint23 MBReg[INX_116]
#define MAPPoint24 MBReg[INX_117]
#define MAPPoint25 MBReg[INX_118]
#define MAPPoint26 MBReg[INX_119]
#define MAPPoint27 MBReg[INX_11A]
#define MAPPoint28 MBReg[INX_11B]
#define MAPPoint29 MBReg[INX_11C]
#define MAPPoint30 MBReg[INX_11D]
#define MAPPoint31 MBReg[INX_11E]
#define MAPPoint32 MBReg[INX_11F]
#define MAPPoint33 MBReg[INX_120]
#define MAPPoint34 MBReg[INX_121]
#define MAPPoint35 MBReg[INX_122]
#define MAPPoint36 MBReg[INX_123]
#define MAPPoint37 MBReg[INX_124]
#define MAPPoint38 MBReg[INX_125]
#define MAPPoint39 MBReg[INX_126]
#define MAPPoint40 MBReg[INX_127]
#define MAPPoint41 MBReg[INX_128]
#define MAPPoint42 MBReg[INX_129]
#define MAPPoint43 MBReg[INX_12A]
#define MAPPoint44 MBReg[INX_12B]
#define MAPPoint45 MBReg[INX_12C]
#define MAPPoint46 MBReg[INX_12D]
#define MAPPoint47 MBReg[INX_12E]
#define MAPPoint48 MBReg[INX_12F]
#define dcoefNum MBReg[INX_130]
//#define MBReg[INX_131]
//#define MBReg[INX_132]
//#define MBReg[INX_133]
//#define MBReg[INX_134]
//#define MBReg[INX_135]
//#define MBReg[INX_136]
//#define MBReg[INX_137]
//#define MBReg[INX_138]
//#define MBReg[INX_139]
//#define MBReg[INX_13A]
//#define MBReg[INX_13B]
//#define MBReg[INX_13C]
//#define MBReg[INX_13D]
//#define MBReg[INX_13E]
//#define MBReg[INX_13F]
//#define MBReg[INX_140]
//#define MBReg[INX_141]
//#define MBReg[INX_142]
//#define MBReg[INX_143]
//#define MBReg[INX_144]
//#define MBReg[INX_145]
//#define MBReg[INX_146]
//#define MBReg[INX_147]
//#define MBReg[INX_148]
//#define MBReg[INX_149]
//#define MBReg[INX_14A]
//#define MBReg[INX_14B]
//#define MBReg[INX_14C]
//#define MBReg[INX_14D]
//#define MBReg[INX_14E]
//#define MBReg[INX_14F]
//#define MBReg[INX_150]
//#define MBReg[INX_151]
//#define MBReg[INX_152]
//#define MBReg[INX_153]
//#define MBReg[INX_154]
//#define MBReg[INX_155]
//#define MBReg[INX_156]
//#define MBReg[INX_157]
//#define MBReg[INX_158]
//#define MBReg[INX_159]
//#define MBReg[INX_15A]
//#define MBReg[INX_15B]
//#define MBReg[INX_15C]
//#define MBReg[INX_15D]
//#define MBReg[INX_15E]
//#define MBReg[INX_15F]
//#define MBReg[INX_160]
//#define MBReg[INX_161]
//#define MBReg[INX_162]
//#define MBReg[INX_163]
//#define MBReg[INX_164]
//#define MBReg[INX_165]
//#define MBReg[INX_166]
//#define MBReg[INX_167]
//#define MBReg[INX_168]
//#define MBReg[INX_169]
//#define MBReg[INX_16A]
//#define MBReg[INX_16B]
//#define MBReg[INX_16C]
//#define MBReg[INX_16D]
//#define MBReg[INX_16E]
//#define MBReg[INX_16F]
//#define MBReg[INX_170]
//#define MBReg[INX_171]
//#define MBReg[INX_172]
//#define MBReg[INX_173]
//#define MBReg[INX_174]
//#define MBReg[INX_175]
//#define MBReg[INX_176]
//#define MBReg[INX_177]
//#define MBReg[INX_178]
//#define MBReg[INX_179]
//#define MBReg[INX_17A]
//#define MBReg[INX_17B]
//#define MBReg[INX_17C]
//#define MBReg[INX_17D]
//#define MBReg[INX_17E]
//#define MBReg[INX_17F]
//#define MBReg[INX_180]
/*****************************************************************************************/
extern u16 MBReg[];
#define GET_MBWORD_IDX(var) ((u32)(&(var) - MBReg)) //<2F><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>varΪMBReg[index]<5D>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD>
#define GET_MBWORD_ADDR(var) (MEM_ADDR_REG_0X30+GET_MBWORD_IDX(var)*REG_WORD_WIDTH)//<2F><><EFBFBD><EFBFBD> <20><> <20><>ַvarΪMBReg[index]<5D>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD>
#define ADR_MBWORD_IDX(adr) (((u32)(adr) - MEM_ADDR_REG_0X30) / REG_WORD_WIDTH)//<2F><>ַ <20><> <20><><EFBFBD><EFBFBD> adrΪMBReg[index]<5D><>ʵ<EFBFBD><CAB5><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD>ַ
/*****************************************************************************************/
#define SERIES_BASE GET_MBWORD_ADDR(meterSN1)
#define SERIES_DEPTH 12
//--------------------------------------------------------
u16 SetupResponseTimeIndex(u16 response, u16 responseDefalt);
u16 SetupResponseTime(u16 response, u16 responseDefalt);
void InitUseBusParameter(void);
void UseBusParameterInit(void);
void UseBusParameterReset(void);
void UserReadDataProtocol(void);
void UserWriteDataProtocol(void);
#endif