46 lines
1.7 KiB
C
46 lines
1.7 KiB
C
#ifndef __InternalModbus_h__
|
|
#define __InternalModbus_h__
|
|
|
|
extern const u16 ReadCode[];
|
|
|
|
extern u16 WordReg[], voltageDetected[];
|
|
extern const u16 WordDefault[][3];
|
|
|
|
extern u32 DWordReg[];
|
|
extern const u32 DWordDefault[][3];
|
|
|
|
//
|
|
// 变量 → 索引(隐式绑定数组) 内部参数获取索引
|
|
#define GET_WORD_IDX(var) ((u32)(&(var) - WordReg))
|
|
// 变量 → 地址 内部参数获取内存地址
|
|
#define GET_WORD_ADDR(var) (MEM_ADDR_WORD_REG_START + GET_WORD_IDX(var)*REG_WORD_WIDTH)
|
|
// 地址 → 索引 内存获取参数索引
|
|
#define ADR_WORD_IDX(adr) (((u32)(adr) - MEM_ADDR_WORD_REG_START) / REG_WORD_WIDTH)
|
|
|
|
#define GET_DWORD_IDX(var) ((u32)(&(var) - DWordReg))
|
|
#define GET_DWOR_ADDR(var) (MEM_ADDR_DWORD_REG_START+GET_DWORD_IDX(var)*REG_DWORD_WIDTH)
|
|
#define ADR_DWORD_IDX(adr) ((((u32)(adr) - MEM_ADDR_DWORD_REG_START) / REG_DWORD_WIDTH))
|
|
//例: VHHHigh = ReadShortParameterFromMemory(GET_WORD_ADR(VHHHigh),WordDefault[GET_WORD_IDX(VHHHigh)][DEFAULT]);
|
|
// staticHighTemperature = WriteShortParameterToMemory(GET_WORD_ADR(staticHighTemperature));
|
|
//==============================================================================
|
|
void InternalShortParameterInit(void);
|
|
void InternalLongParameterInit(void);
|
|
|
|
//==============================================================================
|
|
void ReadMeterSystemData(void);
|
|
void ReadMeterInfo(void);
|
|
void ReadMeterSamplingData(void);
|
|
void ReadMeterOperateResult(void);
|
|
void ReadMeterParameter(void);
|
|
void ReadMeterDWordParameter(void);
|
|
void ReadMeterBasicData(void);
|
|
|
|
void CheckWritingLegality(void);
|
|
void MeterOperate(void);
|
|
void WriteMeterParameter(void);
|
|
void WriteMeterDwordParameter(void);
|
|
|
|
void InternalReadParameterProtocol(void);
|
|
void InternalWriteParameterProtocol(void);
|
|
|
|
#endif |