📄 datatype.h
字号:
typedef unsigned char BCD1[1];
typedef unsigned char BCD2[2];
typedef unsigned char BCD3[3];
typedef unsigned char BCD4[4];
typedef unsigned char BCD5[5];
typedef unsigned char BCD6[6];
typedef unsigned char BCD7[7];
typedef struct
{
unsigned int DspID;
unsigned char *Addr1;
//unsigned char Datatype;
unsigned char Info[5];
} DSPINFO;
typedef struct
{
unsigned char DispTime; //每页显示的时间
unsigned char PagePtr; // Page pointer
unsigned char SecCtr; // Second Counter当前页的秒计数
unsigned char Mode:3; //显示的模式:1.循环显示 2.固定显示
unsigned char Switch:2;
unsigned char DispOpt:3;
} LCDCONTROL; //字节数:4 bytes
typedef struct
{
unsigned char Sec[1];
unsigned char Min[1];
unsigned char Hour[1];
unsigned char Day[1];
unsigned char Mon[1];
unsigned char Year[2];
unsigned char Week[1];
unsigned char Time_Flag[1];
} CLKDEF; //字节数:7 bytes
typedef struct
{
unsigned char Fee[5][4]; //总、尖、峰、平、谷
//unsigned char Fee[1][4]; //P,Q,S
} KWHGRP; //电能组
//字节数:4x5=20 bytes
typedef struct
{
BCD4 Fee[5]; // 4*5 bytes
} LMONBLK;
typedef struct
{
KWHGRP KwhPp; //正向有功
#ifndef NO_NEG_ENGER
KWHGRP KwhPn; //反向有功
#endif
KWHGRP KwhQp; //正向无功
#ifndef NO_NEG_ENGER
KWHGRP KwhQn; //反向无功
#endif
} MONBLK; //月数据块 size=14*4*5+4*7*5=420*/
typedef struct
{
unsigned char ucPulsKwhPp; //正向有功
#ifndef NO_NEG_ENGER
unsigned char ucPulsKwhPn; //反向有功
#endif
unsigned char ucPulsKwhQp; //正向无功
#ifndef NO_NEG_ENGER
unsigned char ucPulsKwhQn; //反向无功
#endif
} PULSBLK; //月数据块 size=14*4*5+4*7*5=420*/
typedef struct
{
unsigned long long ullAccKwhPp;
#ifndef NO_NEG_ENGER
unsigned long long ullAccKwhPn;
#endif
unsigned long long ullAccKwhQp;
#ifndef NO_NEG_ENGER
unsigned long long ullAccKwhQn;
#endif
} ACCUMULATE;
typedef struct
{
int iPhaseCorr1;
#ifdef TAMPER_DETECTION
int iPhaseCorr2;
#endif
//int iV1Offset;
//int iI1Offset;
#ifdef TAMPER_DETECTION
//int iI2Offset;
unsigned int uiAdaptI1;
unsigned int uiAdaptI2;
#endif
unsigned int uiGainCorr1;
long lPowerOffset1;
#ifdef TAMPER_DETECTION
unsigned int uiGainCorr2;
long lPowerOffset2;
#endif
// unsigned long ulIntrptLevl;
// unsigned int uiCalCyclCnt;
unsigned long ulStartCurrent;
unsigned int uiNomFreq;
// unsigned char ucVDropCycls;
#ifdef TAMPER_DETECTION
unsigned int uiRatioTamp;
unsigned int uiITamp;
#endif
unsigned int uiVDropLevel;
unsigned int uiVPeakLevel;
unsigned int uiIPeakLevel;
unsigned char ucDcRemPer;
#ifdef TAMPER_DETECTION
int iPowerCorr2;
#endif
unsigned int uiV1Gain;
unsigned long ulIGain;
signed int iTempSampleOffset;
#if PULSE_MEASURE_MODE==2
unsigned long ulIntrptLevl;
#endif
} ESP_PAR; //电表配置参数418 bytes
typedef struct
{
unsigned int FeeNo:2; // Bit[ 1~0]: nn
unsigned int Tmr:14; // Bit[15~2]: hh hhhh mmmm mmmm
} TARILIST;
typedef struct
{
BCD6 MetID; //表号 6 bytes
//BCD6 CustID; //用户号 6 bytes
//BCD6 MachID; //设备号 6 bytes
BCD4 Pswd[2]; //电表密码 4 bytes
BCD2 MetStatus;
ESP_PAR EspPar;
//unsigned int ParamChk;
TARILIST TariList[8];
BCD1 FeeNo;
//unsigned char ucCalibrationMode;
//unsigned char ucCalibrationOption;
unsigned char ucFlashOperated[2];
}CONFIG;
typedef struct
{
unsigned int CfgChk;
CONFIG Cfg;
unsigned int LcdChk;
LCDCONTROL LcdCtl;
unsigned int ClkBcdChk; // 2 bytes
CLKDEF ClkBcd; //BCD的型式 7 bytes
unsigned int ClkHexChk; // 2 bytes
CLKDEF ClkHex; //16进制的型式 7 bytes
unsigned char ClkHexLeap;
unsigned int LMonChk; // 2
MONBLK LMon; // 20
//LMONBLK LMon; // 20
unsigned int CMonChk;
MONBLK CMon;
unsigned int PulsChk;
PULSBLK Puls;
unsigned int AccChk;
ACCUMULATE Acc;
long lTimeErrAcc;
#if PULSE_MEASURE_MODE==2
unsigned int uiActIntrptLevlCounter;
unsigned int uiActEPulse;
#endif
}SRAM;
typedef struct
{
long lActEnergy1;
long lActEnergy2;
long lReActEnergy;
long lAppEnergy;
long lActensper1;
long lActensper2;
unsigned int uiPowerFct;
int iCapInd;
unsigned long ulMainsPeriod;
unsigned int uiMainsCnt;
unsigned int uiV1Rms;
unsigned long ulIRms;
}ESP_RS;
typedef struct
{
BCD3 ubActPower1;
#ifdef TAMPER_DETECTION
BCD3 ubActPower2;
#endif
BCD3 ubReActPower;
BCD3 ubAppPower;
BCD3 ubV1RMS;
BCD3 ubIRMS;
BCD3 ubPF;
BCD2 ubMainFr;
BCD1 ubTemperature;
ESP_RS EspRs;
unsigned long ulActP1;
#ifdef TAMPER_DETECTION
unsigned long ulActP2;
#endif
unsigned long ulReActP;
unsigned long ulAppP;
unsigned int uiV1Rms;
unsigned long ulIRms;
unsigned long ulMainsPeriodBak;
unsigned long long ullMainsCntBak;
unsigned int uiMainsFrequency;
int iPf;
unsigned long ulLastActP;
//unsigned long ulLastReActP;
// unsigned int uiMeterState;
unsigned int uiEspState;
//unsigned char P595OUT;
//unsigned int iTempSampleOffset;
unsigned int iTempSample;
int iTemperature;
unsigned char ucTempCnt;
unsigned char ucKeyFlg; //按键标志
unsigned char ucKeyTmr; //按键定时
unsigned char ucKeySec;
unsigned char ucKeyMode;
unsigned char ucKeyCalibrationMode;
unsigned char ucKeyCalibrationStep;
unsigned int ADCresultTemp; //温度转换值 2 bytes
unsigned int ADCresultBatt; //电池转换值 2 bytes
unsigned int CumulationPPM; //累积时间偏差 2 bytes
unsigned int ChkTmr; // 2 bytes
unsigned int ComTmr; //通讯定时 2 bytes
unsigned char ComBuf[64]; //通讯缓冲区 64 bytes
unsigned char ComPtr; //通讯字节数 1 bytes
unsigned char ComFlg; //通讯标志
unsigned char ComLedTmr; //通讯指示灯定时
//unsigned char ComSta; // 1 bytes
unsigned int ComBytTmr;
unsigned char WakeFlg; //程序唤醒标志
unsigned char ClkFlg; //时钟标志
unsigned char PwrFlg; //
unsigned char CsFlg; //字节奇偶校验标志
unsigned char RunFlg; //
unsigned char E2Flg; //EEP的标志
unsigned char Flags; //
unsigned char ErrFlg; //
unsigned char ADCVector; //AD中断向量中的标志 14*1 bytes
unsigned char bt_int; //BT中断计时 1 bytes
//unsigned char LCD[20]; //LCD缓冲区 20 bytes
unsigned char MetStatus; //电表状态:通常与校表状态 1 bytes
unsigned char tmpPtr[1]; //临时指针 1 bytes
signed char Temp; // 温度,有正负 1 bytes
unsigned char BattVoltage; // 电池电压 1 bytes
unsigned char VolFlg[2]; // [0]是当前的状态 2 bytes
unsigned char EngSign; // [1]是上次的状态
unsigned char ucBtCycle;
unsigned int uiESP430_STAT0;
unsigned char ucReActPulseCycle;
#if PCB_VERSION == 0
unsigned char ucP595OUT;
#endif
unsigned char ucEspCalStep;
unsigned char ucCalibrationMode;
unsigned char ucChkFlg;
// long lHImeas;
// long lLOmeas;
long lI1HImeas;
long lI1LOmeas;
#ifdef TAMPER_DETECTION
long lI2HImeas;
long lI2LOmeas;
#endif
}DRAM; // 197+224=421 bytes
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -