⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hrj803.h

📁 应用与电网中电压合格率的统计。经过现场的投运使用
💻 H
📖 第 1 页 / 共 3 页
字号:
/*********************************************
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 + -