#define PinWrite_ADSCLK(x) ( (x) ? (P0_bit.no6 = 1 , PM0_bit.no6 = 1) : (PM0_bit.no6 = 0 , P0_bit.no6 = 0) ) //
#define PinMode_ADSCLK(x) ( (x == GPIO_MODE_OUT) ? (PM0_bit.no6 = 0) : (PM0_bit.no6 = 1) )
#define PinRead_ADSDI() (P4_bit.no4)
#define PinWrite_ADSDO(x) ( (x) ? (P6_bit.no0 = 1 , PM6_bit.no0 = 1) : (PM6_bit.no0 = 0 , P6_bit.no0 = 0) ) //
#define PinWrite_ADCS(x) ( (x) ? (P6_bit.no1 = 1 , PM6_bit.no1 = 1) : (PM6_bit.no1 = 0 , P6_bit.no1 = 0 ) )
#define PinWrite_ADRST(x) ( (x) ? (P0_bit.no5 = 1 , PM0_bit.no5 = 1) : (PM0_bit.no5 = 0 , P0_bit.no5 = 0 ) )
typedef union //公共数据运算区8字节
{
u8 ucTempBuf[8];
u32 lTemp32;
u16 wTemp16;
u8 ucTemp8;
}sDl645StruDataComm_TypeDef;
__no_init sDl645StruDataComm_TypeDef Dl645RN8302DataComm;
__no_init sDl645FrontTmp_TypeDef Dl645FrontTmp;
__no_init sDl645Front_TypeDef Dl645Front;
__no_init sDl645Eg_TypeDef Dl645Eg;
__no_init sDl645FirmParaFile_TypeDef Dl645FirmPara;
typedef struct
{
u8 ChkErrCnt; //读错误计数1
s32 Pw[12]; //{Pa Pb Pc P Qa Qb Qc Q Sa Sb Sc S} 48
s32 UI[7]; //Ua Ub Uc Ia Ib Ic Inal 28
s32 Pf[4]; //Pf Pfa Pfb Pfc 16
u16 Frequency; //电网频率,单位: 4
s32 YUI[3],YUU[2]; //20
s32 Pulse[15]; //前台高频脉冲48
//---电能脉冲---
s32 Pulse_EgTmp[20]; //高频脉冲{P,Q,Ps},{Pa,Qa,Psa},{Pb,Qb,Psb},{Pc,Qc,Psc}{Fp,Fq}{Fpa,Fqa}{Fpb,Fqb}{Fpc,Fqc}
u32 Pulse_Eg[20]; //低频脉冲数
//---需量脉冲---
s32 Pulse_NeedTmp[12];
u16 Pulse_Need[12]; //{PNeed,QNeed,PsNeed},{PNeeda,QNeeda,PsNeeda},{PNeedb,QNeedb,PsNeedb},{PNeedc,QNeedc,PsNeedc}48
u16 Angle[9];
u16 PDirect; //4
u32 ChkSum1; //4
u32 ChkSum2; //4
u16 Temperature; //温度4
u32 ClockBat; //时钟电池4
u32 BackupBat; //后备电池4
u16 CF1DelayStamp;
u16 CF2DelayStamp;
u16 CfIn_P;
u16 CfIn_q;
u16 CfTime_P;
u16 CfTime_q;
} sDl645FrontTmp_TypeDef;//7022读出的数据缓冲区381byte
typedef struct
{
struct sFrontPubData_TypeDef {
u16 U[3]; //---电压---NNN.N6
u32 I[4]; //---电流NNNN.NNNN(电流值要求3整3小,整定值要求2整4小,最高位表示方向)---16
// u32 Pw[12]; //---瞬时有功/无功/视在功率NN.NNNN---{P Pa Pb Pc Q Qa Qb Qc S Sa Sb Sc}
sDF09 Pw[12]; //---瞬时有功/无功/视在功率NN.NNNN---{P Pa Pb Pc Q Qa Qb Qc S Sa Sb Sc}36
u16 Pf[4]; //---功率因数N.NNN--- 最高位表示方向{Pf Pfa Pfb Pfc} 8 sDF05
u16 Angle[9]; //---相角NNN.N--- 18
//PhUb,PhUc, 以A相电压为基准,B、C相角度 //(hyg) BCD码
//PhIa,PhIb,PhIc,A相电流与A相电压间角度、B相电流与B相电压间角度、C相电流与C相电压间角度
//Angle A,Angle B,Angle C, A相电流与A相电压间角度、B相电流与A相电压间角度、C相电流与A相电压间角度
//Angle C-Angle A
u32 UnblU; //电压不平衡度NNNN.NN%4
u32 UnblI; //电流不平衡度NNNN.NN%4
u16 FuzzyU[3]; //---电压波形失真度NN.NN%--- 6
u16 FuzzyI[3]; //---电流波形失真度NN.NN%--- 6
u16 WaveU[3][21]; //---相电压谐波含量NN.NN%--- 126
u16 WaveI[3][21]; //---相电流谐波含量NN.NN%--- 126
//---其他---
u16 Frequency; //NN.NN 2
u32 PPwave; //NN.NNNN 4
u16 Temperature; //NNN.N 2
u16 ClockBat; //NN.NN 2
u16 BackupBat; //NN.NN 2
u8 PDirect; //原功率方向,用于需量处理(0总/1A/2B/3C , 注意与FrontTmp不同) 1
} PubData;
struct sFrontPriData_TypeDef {
u8 Flag; //---工作异常标志---1
u8 PhaseCalStep;
u16 FrontStamp;
// u8 BatCalStep;
u16 BatStamp;
// u16 BatDetStamp;
} PriData;
struct sFrontPriPara_TypeDef {
u32 PConstE; //有功常数
u32 QConstE; //无功常数(Hex码)4
u16 Crc;//2
} PriPara;
} sDl645Front_TypeDef; //缓冲区转换后的有效数据,BCD码380byte
typedef struct
{
u8 FractionI;/*电流小数位数*/
u8 FractionU;/*电压小数位数*/
u8 FractionE;/*电能小数位数*/
u8 FractionP;/*功率需量小数位数*/
u16 ConstE;/*电表有功常数*/
u16 Pulse_deltaE;/*数*/
u8 HighPulseRate;
u8 PhaseCalStep;
float IRmsConst; //10
u16 Reserve[2];
u16 NOLOAD;
u16 ZEROSTAR; //20
u32 ADVLEVEL;
u16 HFConst1;
u16 HFConst2;
float VRmsConst; //30
u16 Reserve1;
float PRmsConst;
u16 Reserve2;
u16 VGain[3]; // 42
u16 IGain[4]; //48
u8 PHSU[2];
u32 PHSI[3];
u16 PRth[4];
u16 UI_Offset[7];
}sDl645FirmParaFile_TypeDef; //184 Byte
typedef struct {
#pragma pack(1)
struct sDl645EgPubData_TypeDef
{
sFsEgSh_TypeDef AllPEgSh[DL645_MAX_FL + 1];
sFsEgSh_TypeDef PtPEgSh[DL645_MAX_FL + 1];
sFsEgSh_TypeDef NtPEgSh[DL645_MAX_FL + 1];
sFsEgSh_TypeDef AllQEgSh[DL645_MAX_FL + 1];
sFsEgSh_TypeDef PtQEgSh[DL645_MAX_FL + 1];
sFsEgSh_TypeDef NtQEgSh[DL645_MAX_FL + 1];
sFsEgSh_TypeDef Qd1QEgSh[DL645_MAX_FL + 1];
sFsEgSh_TypeDef Qd2QEgSh[DL645_MAX_FL + 1];
sFsEgSh_TypeDef Qd3QEgSh[DL645_MAX_FL + 1];
sFsEgSh_TypeDef Qd4QEgSh[DL645_MAX_FL + 1];
sFsEgSh_TypeDef PtPsEgSh[DL645_MAX_FL + 1];
sFsEgSh_TypeDef NtPsEgSh[DL645_MAX_FL + 1];
sFsEgSh_TypeDef AssEgSh;
sFsEgSh_TypeDef BasePtPEgSh;
sFsEgSh_TypeDef BaseNtPEgSh;
sFsEgSh_TypeDef WavePtPEgSh;
sFsEgSh_TypeDef WaveNtPEgSh;
sFsEgSh_TypeDef CopPEgSh;
sFsEgSh_TypeDef IronPEgSh;
//-------------
sFsEgSh_TypeDef PtPEgSha;
sFsEgSh_TypeDef NtPEgSha;
sFsEgSh_TypeDef PtQEgSha;
sFsEgSh_TypeDef NtQEgSha;
sFsEgSh_TypeDef Qd1QEgSha;
sFsEgSh_TypeDef Qd2QEgSha;
sFsEgSh_TypeDef Qd3QEgSha;
sFsEgSh_TypeDef Qd4QEgSha;
sFsEgSh_TypeDef PtPsEgSha;
sFsEgSh_TypeDef NtPsEgSha;
sFsEgSh_TypeDef AssEgSha;
sFsEgSh_TypeDef BasePtPEgSha;
sFsEgSh_TypeDef BaseNtPEgSha;
sFsEgSh_TypeDef WavePtPEgSha;
sFsEgSh_TypeDef WaveNtPEgSha;
sFsEgSh_TypeDef CopPEgSha;
sFsEgSh_TypeDef IronPEgSha;
//-------------
sFsEgSh_TypeDef PtPEgShb;
sFsEgSh_TypeDef NtPEgShb;
sFsEgSh_TypeDef PtQEgShb;
sFsEgSh_TypeDef NtQEgShb;
sFsEgSh_TypeDef Qd1QEgShb;
sFsEgSh_TypeDef Qd2QEgShb;
sFsEgSh_TypeDef Qd3QEgShb;
sFsEgSh_TypeDef Qd4QEgShb;
sFsEgSh_TypeDef PtPsEgShb;
sFsEgSh_TypeDef NtPsEgShb;
sFsEgSh_TypeDef AssEgShb;
sFsEgSh_TypeDef BasePtPEgShb;
sFsEgSh_TypeDef BaseNtPEgShb;
sFsEgSh_TypeDef WavePtPEgShb;
sFsEgSh_TypeDef WaveNtPEgShb;
sFsEgSh_TypeDef CopPEgShb;
sFsEgSh_TypeDef IronPEgShb;
//-------------
sFsEgSh_TypeDef PtPEgShc;
sFsEgSh_TypeDef NtPEgShc;
sFsEgSh_TypeDef PtQEgShc;
sFsEgSh_TypeDef NtQEgShc;
sFsEgSh_TypeDef Qd1QEgShc;
sFsEgSh_TypeDef Qd2QEgShc;
sFsEgSh_TypeDef Qd3QEgShc;
sFsEgSh_TypeDef Qd4QEgShc;
sFsEgSh_TypeDef PtPsEgShc;
sFsEgSh_TypeDef NtPsEgShc;
sFsEgSh_TypeDef AssEgShc;
sFsEgSh_TypeDef BasePtPEgShc;
sFsEgSh_TypeDef BaseNtPEgShc;
sFsEgSh_TypeDef WavePtPEgShc;
sFsEgSh_TypeDef WaveNtPEgShc;
sFsEgSh_TypeDef CopPEgShc;
sFsEgSh_TypeDef IronPEgShc;
} PubData;
#pragma pack()
struct sDl645EgPubDataCrc_TypeDef
{
u16 AllPEgSh;
u16 PtPEgSh;
u16 NtPEgSh;
u16 AllQEgSh;
u16 PtQEgSh;
u16 NtQEgSh;
u16 Qd1QEgSh;
u16 Qd2QEgSh;
u16 Qd3QEgSh;
u16 Qd4QEgSh;
u16 PtPsEgSh;
u16 NtPsEgSh;
u16 AssEgSh;
u16 BasePtPEgSh;
u16 BaseNtPEgSh;
u16 WavePtPEgSh;
u16 WaveNtPEgSh;
u16 CopPEgSh;
- 1
- 2
前往页