📄 hrj803.h
字号:
/*********************************************
Copyright(C) 2006~2007,Huaruijie Co.Ltd.
文件名: HRJ803.h
版权:华瑞杰公司 2006-2007
作者: 罗耀强 版本:1.0 日期:2006-12-28
描述: HRJ803数据结构
修改记录:
1. 2006-12-28 建立该文件
*/
#ifndef _HRJ803_H_
#define _HRJ803_H_
#include "includes.h"
#include "MeasureParam.h"
#include "basetype.h"
#include "cs5463.h"
#include "UartDrv.h"
#ifdef _HRJ803_GLOBE_
#define _HRJ803_USE_
#else
#define _HRJ803_USE_ extern
#endif
#ifdef _NVRAM_GLOBE_
#define _NVRAM_USE_
#else
#define _NVRAM_USE_ extern
#endif
typedef struct
{
BYTE byMinute;
BYTE byHour;
BYTE byDay;
BYTE byMonth;
}STime4;
//###################################### 电压统计部分开始 ############################################
typedef struct
{
DWORD dwSecond;
DWORD dwMinute;
DWORD dwHour;
DWORD dwDay;
DWORD dwMonth;
DWORD dwYear;
}SDateTime2;
typedef struct
{
DWORD ParamFlag[2]; //NVRAM中的标志,ParamFlag =0x55,0xaa表示在NVRAM中的数据有效,否则为无效
SDateTime2 sLastSamTime;
//用来统计每天平均电压的累计值,与累计次数
DWORD dwU[3]; //A B C相累计值 (用在天统计,一天的累计值)
DWORD dwTimeCnt[3]; //A B C相累计次数(用在天统计,一天的累计次数)
DWORD dwU_m[3]; //A B C相累计值(用在月天统计,一月的累计值)
DWORD dwTimeCnt_m[3]; //A B C相累计次数(用在月统计,一月的累计次数)
}SVoltageCompute;
_NVRAM_USE_ SVoltageCompute g_sVoltageCompute; //必须保存在NVRAM中
typedef struct
{
DWORD dwOverT[3]; //A B C过压时间,单位:分钟
DWORD dwLoseT[3]; //A B C失压时间,单位:分钟
DWORD dwUperT[3]; //A B C越上限时间,单位:分钟
DWORD dwLower[3]; //A B C越下限时间,单位:分钟
DWORD dwGoodT[3]; //A B C合格时间,单位:分钟
DWORD dwMaxU[3]; //A B C相 电压最大值,x10
DWORD dwMaxT[3]; //A B C相 电压最大值发生时间,LSB:分时日MSB
DWORD dwMinU[3]; //A B C相 电压最小值,x10
DWORD dwMinT[3]; //A B C相 电压最小值发生时间,LSB:分时日MSB
//平均电压,统计方法: 通过g_sVoltAvgCnt来计算
DWORD dwAvgU[3]; //A B C相平均电压,x10
//********直流模拟量、温度传感器
DWORD dwDCUperT; //直流模拟量越上限累计时间 单位:分钟
DWORD dwDCLowerT; //直流模拟量越下限累计时间 单位:分钟
INT32 dwDCMax; //直流模拟量最大值 系数 100 单位V
INT32 dwDCMin; //直流模拟量最小值 系数 100 单位V
DWORD dwDCMaxT; //直流模拟量最大值发生时间,LSB:分时日MSB
DWORD dwDCMinT; //直流模拟量最小值发生时间,LSB:分时日MSB
}SVoltStat;
typedef struct
{
DWORD dwUperRate[3]; //越上限率 系数10000
DWORD dwLowRate[3]; //越下限率 系数10000
DWORD dwGoodRate[3]; //合格率率 系数10000
}SVoltRate;
_HRJ803_USE_ SVoltRate g_sVoltRate; //实时的电压合格率
_NVRAM_USE_ SVoltStat g_sVoltStat; //必须保存在NVRAM中 天统计
_NVRAM_USE_ SVoltStat g_sVoltStat_m; //必须保存在NVRAM中 月统计
typedef struct
{
STime4 sTime;
SVoltStat sStat;
}SVoltStatRec;
//★文件格式(数据循环存放):
// 1月1日统计数据,1月2日统计数据,...,1月31日统计数据,
// 2月1日统计数据,2月2日统计数据,...,2月29日统计数据,(无论是否润年都有29日,方便计算并且文件格式固定)
// 3月1日统计数据,3月2日统计数据,...,2月31日统计数据,
// 4月1日统计数据,4月2日统计数据,...,4月30日统计数据,
// 5月1日统计数据,5月2日统计数据,...,5月31日统计数据,
// 6月1日统计数据,6月2日统计数据,...,6月30日统计数据,
// 7月1日统计数据,7月2日统计数据,...,7月31日统计数据,
// 8月1日统计数据,8月2日统计数据,...,8月31日统计数据,
// 9月1日统计数据,9月2日统计数据,...,9月30日统计数据,
// 10月1日统计数据,10月2日统计数据,...,10月31日统计数据,
// 11月1日统计数据,11月2日统计数据,...,11月30日统计数据,
// 12月1日统计数据,12月2日统计数据,...,12月31日统计数据。
//备注:每次保存一个SVoltStatRec结构的记录。
//###################################### 电压统计部分结束 ############################################
//###################################### 计量部分开始 ############################################
//计量计数原始数据结构
typedef struct
{
DWORD dwEPap; //A相正向有功电能计数值
DWORD dwEPbp; //B相正向有功电能计数值
DWORD dwEPcp; //C相正向有功电能计数值
DWORD dwEPan; //A相反向有功电能计数值
DWORD dwEPbn; //B相反向有功电能计数值
DWORD dwEPcn; //C相反向有功电能计数值
DWORD dwEQ1; //一象限总无功电能计数值
DWORD dwEQ2; //二象限总无功电能计数值
DWORD dwEQ3; //三象限总无功电能计数值
DWORD dwEQ4; //四象限总无功电能计数值
DWORD dwEQap; //A相正向无功电能计数值
DWORD dwEQbp; //B相正向无功电能计数值
DWORD dwEQcp; //C相正向无功电能计数值
DWORD dwEQan; //A相反向无功电能计数值
DWORD dwEQbn; //B相反向无功电能计数值
DWORD dwEQcn; //C相反向无功电能计数值
}SEnergyCnt;
//时段电量结构
typedef struct
{
//电能数据均为2位小数,即已经*100;
//用于表示需量时为4位小数。
DWORD dwSum; //总
DWORD dwSharp; //尖
DWORD dwPeak; //峰
DWORD dwShoulder; //谷
DWORD dwOffpeak; //平
}STimeConsumption;
typedef struct
{
//电能数据均为2位小数,即已经*100
STimeConsumption sEPp; //正向总有功电能
//STimeConsumption sEPap; //A相正向有功电能
//STimeConsumption sEPbp; //B相正向有功电能
//STimeConsumption sEPcp; //C相正向有功电能
STimeConsumption sEPn; //反向总有功电量
//STimeConsumption sEPan; //A相反向有功电能
//STimeConsumption sEPbn; //B相反向有功电能
//STimeConsumption sEPcn; //C相反向有功电能
//正向无功电能=sEQ1+sEQ4 //
//反向无功电能=sEQ2+sEQ3
STimeConsumption sEQ1; //一象限总无功电能
STimeConsumption sEQ2; //二象限总无功电能
STimeConsumption sEQ3; //三象限总无功电能
STimeConsumption sEQ4; //四象限总无功电能
//STimeConsumption sEQap; //A相正向无功电能
//STimeConsumption sEQbp; //B相正向无功电能
//STimeConsumption sEQcp; //C相正向无功电能
//STimeConsumption sEQan; //A相反向无功电能
//STimeConsumption sEQbn; //B相反向无功电能
//STimeConsumption sEQcn; //C相反向无功电能
}SEnergy;
//最大需量发生时间结构
typedef struct
{
//发生时间,格式:(MSB)月日时分(LSB),四字节
DWORD dwSum; //总
DWORD dwSharp; //尖
DWORD dwPeak; //峰
DWORD dwShoulder; //谷
DWORD dwOffpeak; //平
}SMaxDemandTime;
//三相总的最大需量
typedef struct
{
STimeConsumption sEPp; //正向有功最大需量
STimeConsumption sEPn; //反向有功最大需量
STimeConsumption sEQp; //正向无功最大需量
STimeConsumption sEQn; //反向无功最大需量
STimeConsumption sEQ1; //一象限无功最大需量
STimeConsumption sEQ2; //二象限无功最大需量
STimeConsumption sEQ3; //三象限无功最大需量
STimeConsumption sEQ4; //四象限无功最大需量
SMaxDemandTime sEPpTime; //正向有功最大需量发生时间
SMaxDemandTime sEPnTime; //反向有功最大需量发生时间
SMaxDemandTime sEQpTime; //正向无功最大需量发生时间
SMaxDemandTime sEQnTime; //反向无功最大需量发生时间
SMaxDemandTime sEQ1Time; //一象限无功最大需量发生时间
SMaxDemandTime sEQ2Time; //二象限无功最大需量发生时间
SMaxDemandTime sEQ3Time; //三象限无功最大需量发生时间
SMaxDemandTime sEQ4Time; //四象限无功最大需量发生时间
}SMaxDemand;
_NVRAM_USE_ DWORD g_dwEnergyCntRatio; //每1%度电对应的计数值,也就是SEnergyCnt内的成员每增加g_dwEnergyCntRatio则代表增加了0.01度电
_NVRAM_USE_ SEnergyCnt g_sEneryCnt; //由FIQ程序写入,其它任务都不应对该结果写入操作,必须保存在NVRAM中
_NVRAM_USE_ SEnergy g_sEnergy; //电能量,必须保存在NVRAM中
_NVRAM_USE_ SMaxDemand g_sMaxDemand; //最大需量
typedef struct
{
STime4 sTime;
SEnergy sEnergy;
SMaxDemand sMaxDemand;
SVoltStat sMonthStat; // 月统计电压合格率 add zhw 2007-4-16
}SReadingCycleRec;
//抄表日转存电能量数据(默认抄表周期为每月月末24点整)文件格式(数据循环存放),
// 1月份抄表日数据,2月份抄表日数据,...,12月份抄表日数据。
// 备注:每次保存一个结构数据SReadingCycleRec。每次保存后必须复零最大需量
//###################################### 计量部分结束 ############################################
//###################################### 事件部分开始 ############################################
//符合Q/GDW 130-2005要求
#define ERC_INIT_VER 1 //数据初始化和版本变更记录
#define ERC_PARAM_MISS 2 //参数丢失
#define ERC_PARAM_CHG 3 //参数更改
#define ERC_STATUS_CHG 4 //状态量变位
#define ERC_METER_PARAM_CHG 8 //电表参数变更
#define ERC_CT_ERR 9 //电流回路异常
#define ERC_PT_ERR 10 //电压回路异常
#define ERC_PHASE_ERR 11 //相位异常
#define ERC_METER_ERR_INFO 13 //电表错误信息
#define ERC_TERMINAL_ONOFF 14 //终端上、下电记录
#define ERC_HARMONIC_OVERRUN 15 //谐波越限
#define ERC_DCVALUE_ERR 16 //直流模拟量越限记录
#define ERC_UNBALANCE 17 //电压、电流不平衡
#define ERC_TERMINAL_FAULT 21 //终端故障
#define ERC_VOLTAGE_OVERRUN 24 //电压越限
#define ERC_CURRENT_OVERRUN 25 //电流越限
#define ERC_APPEAR_POWER_OVERRUN 26 //视在功率越限
//扩展定义
#define ERC_3I0_OVERRUN 32 //零序电流越限
#define ERC_LOAD_OVERRUN 33 //单相/总负荷越限
#define ERC_HARMONIC_OVERRUN2 34 //谐波越限2段
#define ERC_INIT_ERROR 35 //复位命令中F1~F3执行错误
#define ERC_SAVE_ERROR 36 //设置参数命令中保存参数错误
#define ERC_CTRL_ERROR 37 //遥控命令执行错误
#define ERC_OIL_ERROR 38 //油温高记录
typedef struct
{
BYTE byEventCode; //事件代码
BYTE byLe; //事件记录的长度
//发生时间 //
BYTE byMinute; //分,BIN格式
BYTE byHour; //时,BIN格式
BYTE byDay; //日,BIN格式
BYTE byMonth; //月,BIN格式
BYTE byYear; //年,BIN格式
BYTE byMeasurePoint; //D7:起止标志(1:发生,0:恢复),D6=0,D5~D0:测量点号
BYTE byRec[24]; //记录体的内容,请参照Q/GDW 130-2005,谐波越限记录占用2个连续SERC结构体/记录体
}SERC;
//
//
typedef struct
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -