|
|
/****************************************************************************
|
|
|
** File name : HTIEC61850CSGFile.h
|
|
|
** Description : 中国南方电网有限责任公司(CSG)-广东电网有限责任公司变电设备在线监测系统
|
|
|
** : 数据通信技术要求V1.5(2014-12).--谱图文件解析
|
|
|
** Create date : 2019.09.01
|
|
|
** Auther by : Liuyx
|
|
|
** Version info : V1.0.01
|
|
|
** Copyright (C) 2002-2019 xi'an huatek, Inc Co., Ltd
|
|
|
** Update record:
|
|
|
** DATE AUTHER DESC
|
|
|
** -------------------------------------------------------------------------
|
|
|
** 2019.09.01 Liuyx first build
|
|
|
****************************************************************************/
|
|
|
#ifndef __HT_IEC_61850_CSGFILE_H
|
|
|
#define __HT_IEC_61850_CSGFILE_H
|
|
|
|
|
|
#if defined (__cplusplus)
|
|
|
extern "C" {
|
|
|
#endif /* defined (__cplusplus) */
|
|
|
|
|
|
#pragma pack (push ,1)
|
|
|
|
|
|
/************************************************************************************
|
|
|
* 引用文件标准:广东电网有限责任公司变电设备在线监测系统-数据通信技术要求V1.5(2014.12)
|
|
|
* 附录A:
|
|
|
* A.3 谱图文件命名
|
|
|
* 谱图文件名约定为:在线监测编码_厂家编码_谱图类型编码_创建日期时间.dat。
|
|
|
* ①在线监测编码、厂家编码、谱图类型编码:参照附录B。
|
|
|
* ②创建日期时间:格式为“YYYYMMDDhhmmss”
|
|
|
* YYYY:4位的年份(如2010)
|
|
|
* MM:2位的月份(01-12)
|
|
|
* DD:2位的日期(01-31)
|
|
|
* hh:2位的小时(00-23)
|
|
|
* mm:2位的分钟(00-59)
|
|
|
* ss:2位的秒数(00-59)
|
|
|
* 示例:0312B12000042 A384 000001_001_01_20100818151010.dat
|
|
|
------------------------------------------------------------------------------------
|
|
|
* 附录B:
|
|
|
* B.3 变电站编码
|
|
|
* 描述变电站名称的唯一编码,即《Q/CSG11801.8.1-2008 南方电网设备信息分类与编码》中规定
|
|
|
* 的厂站功能位置编码的前13位。
|
|
|
* B.4 厂家编码
|
|
|
* 描述在线监测装置厂家名称的3位编码,如表B.1所示
|
|
|
* B.5 在线监测编码
|
|
|
* 描述在线监测装置功能位置的23位编码,由“13位变电站编码+4位在线监测装置类型编码+6
|
|
|
* 位序号”组成,该编码由远程中心根据实际情况发布。
|
|
|
* B.6 在线监测装置类型编码
|
|
|
* 描述在线监测装置所属类型的4位编码,如表B.2所示
|
|
|
* B.7 谱图类型编码
|
|
|
* 描述在线监测谱图所属类型的2位编码,如表B.3所示。
|
|
|
* 表 B.3谱图类型编码
|
|
|
* 谱图类型 编码
|
|
|
* 局部放电谱图 01
|
|
|
* 断路器监测谱图 02
|
|
|
* 油中溶解气体出峰图 07
|
|
|
------------------------------------------------------------------------------------
|
|
|
* 附录D:
|
|
|
* D.2 文件格式要求
|
|
|
* a) 文件应采用二进制数据格式进行存储,其字节序为小端字节序(Little-Endian),即低位字节
|
|
|
* 排放在低地址端、高位字节排放在高地址端;
|
|
|
* b) 文件应包括配置数据和谱图数据两部分,且两者之间增加一个分隔符“$$$$”,即0x24242424;
|
|
|
* c) 为保持文件的完整性,若配置数据部分中的可选数据项未使用,则保留其占据位置,且数据
|
|
|
* 项各位全设为1,例如4个字节的float型应设为0xFFFFFFFF;
|
|
|
* d) 数据类型分为基本数据类型和聚合类型:
|
|
|
* ①基本数据类型,如表D.1所示;
|
|
|
* 表 D.1基本数据类型
|
|
|
* 类型 长度 取值范围
|
|
|
* char 1字节 以ASCII码形式存在的一个字符,例如'0'、'1'、…
|
|
|
* 或 'A'、'B'、…或'a'、'b'、… 或'$'、'#'、'@'…
|
|
|
* byte 1字节 -2^7~2^7-1,即-128~127
|
|
|
* short 2字节 -2^15~2^15-1
|
|
|
* int 4字节 -2^31~2^31-1
|
|
|
* long 8字节 -2^63~2^63-1
|
|
|
* float 4字节 -2^128~2^128
|
|
|
* double 8字节 -2^1024~2^1024
|
|
|
* 注1:char和byte有所区别,例如表示数字1,char的值为0x31,byte的值则为0x01。
|
|
|
*
|
|
|
* ②聚合类型包括数组(array)、结构体(struct)等。
|
|
|
* e) 文件中的中文描述采用unicode编码;
|
|
|
************************************************************************************
|
|
|
D.3 文件生成要求
|
|
|
a) 局部放电在线监测装置按每1监测点(传感器)生成1个局部放电谱图文件;并应在被监测
|
|
|
设备可能发生局部放电的情况下生成文件,生成时间间隔为5 - 15分钟;
|
|
|
b) 变压器油中溶解气体在线监测装置按每1监测点(传感器)传输1个油中溶解气体出峰图文
|
|
|
件;并应周期生成文件,生成时间间隔为2小时;
|
|
|
c) 断路器在线监测装置应将3相数据合并生成1个断路器监测谱图文件,不同类型的谱图应分
|
|
|
开生成;并应在断路器有动作的情况下生成文件;
|
|
|
d) 为便于实时监控文件传输通道的状态,在线监测装置若当日未生成任何谱图文件,则需在次
|
|
|
日凌晨0点自动生成测试用的临时文件,该文件只包含配置数据,不必包含谱图数据;
|
|
|
e) 谱图文件个数及文件大小:单个装置文件个数上限为60(多传感器合并上送系统可根据装置
|
|
|
数乘积确定上限),单个文件大小上限为500KB,其文件应按照时间先后循环存储。
|
|
|
************************************************************************************/
|
|
|
|
|
|
#define CSG_NOT_USE_VALUE 0xFFFFFFFF // float 类型的值无效-未使用
|
|
|
#define CSG_SPECTROGRAM_PRPD 0x30 // 二维谱图
|
|
|
#define CSG_SPECTROGRAM_PRPS 0x31 // 三维谱图
|
|
|
|
|
|
/*
|
|
|
* 局放文件配置数据格式定义 附录表D.2节
|
|
|
*/
|
|
|
typedef struct _CSG_PDFILE_HEAD{
|
|
|
float fStandardVersion; // 规范版本号,所使用的通用格式规范版本号,本要求设为1.2
|
|
|
float fFileVersion; // 文件版本号,在线监测装置厂家内部使用的版本号,从
|
|
|
// 1.000计起。注意与规范版本号区别开来
|
|
|
short shSpectrogramCode; // 谱图类型编码,01:局放 02:断路器监测 07:油中溶解气体出峰图
|
|
|
tint64 ilSpectrogramGenTime;// 谱图生成时间,YYYYMMDDhhmmss
|
|
|
char cTestFileFlag; // 测试文件标志位,0:测试用文件 1:非测试文件(局放文件)
|
|
|
char szChannleName[32]; //通道名称,unicode编码,以0x00结束
|
|
|
char cFdType; // 放电类型:0正常;1尖端放电;2悬浮放电;3沿面放电;4内部放电;5颗粒放电;6外部干扰;7其它
|
|
|
char cWarnLevel; // 报警等级,0表示正常;1表示1级报警;2表示2级报警;3表示3级报警。其中,最高为3级报警;数字越大代表危险性越高
|
|
|
char cProbabilityFlag; // 放电类型概率统计标志,0表示未统计,若放电类型为0(即“正常”),则不需统计,此时放电类型概率设为O;1表示已统计,若放电类型不为0,则需统计,此时放电类型概率设为M
|
|
|
float fProbability[7]; // 放电类型概率(%),1-7种发电类型的概率,放电类型0不需统计概率;若未对放电概率进行统计即只判断出属于某一种放电类型),则将对应的放电类型记为100%,0xFFFFFFFF为未使用标识
|
|
|
int iFdPhaseNum_m; // 放电相位窗数m,工频周期被等分成m个检测时间段
|
|
|
int iAmplitude_n; // 量化幅值n,幅值范围被等分成若干个区间,量化幅值表示第n个区间。若局放谱图类型为PRPD二维图,则n设为M,p设为O
|
|
|
int iFrequencyCycle_p; // 工频周期数p,频周期的个数。若局放谱图类型为PRPS三维图,则p设为M,n设为O
|
|
|
float f50Relevance; // 50Hz相关性,一个工频周期中放电信号与50Hz的相关程度,单位为%。,0xFFFFFFFF为未使用标识
|
|
|
float f100Relevance; // 50Hz相关性,一个工频周期中放电信号与50Hz的相关程度,单位为%。,0xFFFFFFFF为未使用标识
|
|
|
char cSpectrogramType; // 局放谱图类型标志,0表示PRPD二维图;1表示PRPS三维图。
|
|
|
char cAmplitudeUnit; // 幅值单位,0表示dBm;1表示mV;2代表%
|
|
|
float fMinAmplitude; // 放电幅值下限,0xFFFFFFFF为未使用标识
|
|
|
float fMaxAmplitude; // 放电幅值上限,0xFFFFFFFF为未使用标识
|
|
|
char szSeparation[4]; // 分隔符$$$$.
|
|
|
}ST_CSG_PDFILE_HEAD;
|
|
|
|
|
|
typedef union
|
|
|
{
|
|
|
float f;
|
|
|
int i;
|
|
|
}ST_CSG_DATA;
|
|
|
|
|
|
// 局放谱图数据定义 附录表D.3节
|
|
|
typedef struct {
|
|
|
ST_CSG_DATA Data;
|
|
|
}ST_CSG_PD_DATA;
|
|
|
|
|
|
|
|
|
/*
|
|
|
* 通道i的峰信息的结构体定义 附录表D.4节
|
|
|
*/
|
|
|
typedef struct {
|
|
|
char szGroupName[10]; // 组分名称,峰的组分名称,例如H2、CH4、C2H2、C2H4、C2H6、CO、CO2等
|
|
|
char cPeakNumber; // 峰号,峰编号j
|
|
|
float fPeakTime; // 峰点时间,单位与“X轴单位”一致
|
|
|
float fPeakStartTime; // 峰开始点时间,单位与“X轴单位”一致
|
|
|
float fPeakStopTime; // 峰结束点时间,单位与“X轴单位”一致
|
|
|
float fPeakHigh; // 峰高,单位与“Y轴单位”一致
|
|
|
float fPeakArea; // 峰面积,单位为“Y轴单位”和“X轴单位”的乘积。例如,“Y轴单位”为微伏,“X轴单位”为秒,则峰面积单位为微伏*秒
|
|
|
}ST_YSP_INFO;
|
|
|
|
|
|
/*
|
|
|
* 通道信息的结构体定义 附录表D.4节
|
|
|
*/
|
|
|
typedef struct {
|
|
|
char cChannelPeak_n; // 通道i的峰数n,通道i所具有的峰个数n
|
|
|
ST_YSP_INFO *pstInfo; // 通道i的峰信息,记录通道i的n个峰的信息,通道i的第j个峰称为峰j,j为0~n - 1之间的整数。从通道i的峰0开始排列,共n个峰
|
|
|
}ST_CSG_YSP_CHANNEL;
|
|
|
|
|
|
/*
|
|
|
* 油色谱气体出峰图数据格式定义 附录表D.4节
|
|
|
*/
|
|
|
typedef struct {
|
|
|
float fStandardVersion; // 规范版本号,所使用的通用格式规范版本号,本要求设为1.2
|
|
|
float fFileVersion; // 文件版本号,在线监测装置厂家内部使用的版本号,从
|
|
|
// 1.000计起。注意与规范版本号区别开来
|
|
|
short shSpectrogramCode; // 谱图类型编码,01:局放 02:断路器监测 07:油中溶解气体出峰图
|
|
|
tint64 ilSpectrogramGenTime; // 谱图生成时间,YYYYMMDDhhmmss
|
|
|
char cTestFileFlag; // 测试文件标志位,0表示该文件为测试用的临时文件;
|
|
|
// 1表示在线监测装置能正常生成谱图文件。注意,油中溶解气体出峰图周期性生成,故通常情况下设为1
|
|
|
char szDeviceName[32]; // 被监测设备名称,unicode编码,以0x00结束
|
|
|
float fX_t; // X轴间隔t,数据点的时间间隔t,用于绘制X轴
|
|
|
float fY_Max; // Y轴最大值,数据点的最大值,用于绘制Y轴
|
|
|
char cXUnit; // X轴单位,0表示秒(s);1表示毫秒(ms)
|
|
|
char cYUnit; // Y轴单位,0表示毫伏(mV);1表示微伏(μV)
|
|
|
int iData_k; // 数据点数k,数据点个数k,要求所有通道的数据点数k相同。X轴长度则为t*k
|
|
|
char cChannel_m; // 通道数m,谱图所具有的通道数m
|
|
|
ST_CSG_YSP_CHANNEL *pstChannel; // 通道信息, 记录m个通道信息,第i个通道称为通道i,i为0~m - 1之间的整数。从通道0开始排列,共m个通道
|
|
|
char szSeparation[4]; // 分隔符$$$$.
|
|
|
}ST_CSG_YSPFILE_HEAD;
|
|
|
|
|
|
// 油色谱谱图数据定义 附录表D.5节
|
|
|
typedef struct {
|
|
|
ST_CSG_DATA Data;
|
|
|
}ST_CSG_YSP_DATA;
|
|
|
|
|
|
/*
|
|
|
* 断路器监测谱图数据定义 表 D.6
|
|
|
*/
|
|
|
typedef struct {
|
|
|
float fStandardVersion; // 规范版本号,所使用的通用格式规范版本号,本要求设为1.2
|
|
|
float fFileVersion; // 文件版本号,在线监测装置厂家内部使用的版本号,从
|
|
|
// 1.000计起。注意与规范版本号区别开来
|
|
|
short shSpectrogramCode; // 谱图类型编码,01:局放 02:断路器监测 07:油中溶解气体出峰图
|
|
|
tint64 ilSpectrogramGenTime; // 谱图生成时间,YYYYMMDDhhmmss
|
|
|
char cTestFileFlag; // 测试文件标志位,0表示该文件为测试用的临时文件;1表示在线监测装置监测到断路器有动作
|
|
|
char szDeviceName[32]; // 被监测设备名称,unicode编码,以0x00结束
|
|
|
char cControl; // 0表示三相机械联动且仅有1个分闸线圈; 1表示三相机械联动且有2个分闸线圈;
|
|
|
// 2表示三相分相操作且每相仅有1个分闸线圈;3表三相分相操作且每相有2个分闸线圈。
|
|
|
// 该项决定谱图数据的显示,若操作机构三相机械联动(即类型为0或1),波形数据只放在A相
|
|
|
char cWaveformType; // 波形类型,0:表示分闸1线圈电流波形;1:表示分闸2线圈电流波形;2:表示合闸线圈电流波形 3:表示储能电机电流波形;4:表示开断(运行)电流波形
|
|
|
float fX_t; // X轴间隔t,数据点的时间间隔t,用于绘制X轴
|
|
|
float fY_Max; // Y轴最大值,数据点的最大值,用于绘制Y轴
|
|
|
char cXUnit; // X轴单位,0表示秒(s);1表示毫秒(ms)
|
|
|
char cYUnit; // Y轴单位,0表示安培(A)
|
|
|
int iData_k; // 数据点数k,数据点个数k,要求ABC三相的数据点数k相同。X轴长度则为t*k
|
|
|
char szSeparation[4]; // 分隔符$$$$.
|
|
|
}ST_CSG_DLQFILE_HEAD;
|
|
|
|
|
|
/*
|
|
|
* 断路器监测谱图的谱图数据定义 表 D.7
|
|
|
*/
|
|
|
typedef struct {
|
|
|
float *pfAWave; // 波形数据,k为数据点数,数值表示每个数据点Y轴的值(即真实电流值)。若操作机构三相机械联动,波形数据只放在A相,此时B相、C相波形数据应省略
|
|
|
float *pfBWave; // 波形数据
|
|
|
float *pfCWave; // 波形数据
|
|
|
}ST_CSG_DLQ_DATA;
|
|
|
|
|
|
typedef struct {
|
|
|
int sno;
|
|
|
int tme;
|
|
|
short A1;
|
|
|
short A2;
|
|
|
short B1;
|
|
|
short B2;
|
|
|
short C1;
|
|
|
short C2;
|
|
|
|
|
|
short a1;
|
|
|
short a2;
|
|
|
short b1;
|
|
|
short b2;
|
|
|
short c1;
|
|
|
short c2;
|
|
|
|
|
|
short nsi;
|
|
|
short crt;
|
|
|
}ST_COMTRAD_DATA;
|
|
|
|
|
|
#pragma pack (pop)
|
|
|
|
|
|
|
|
|
void csgIEC61850PdFileParser(ST_FILE61850_LIST &stListFile);
|
|
|
int unGenComtrad(char *pfile);
|
|
|
|
|
|
#if defined (__cplusplus)
|
|
|
}
|
|
|
#endif /* defined (__cplusplus) */
|
|
|
|
|
|
#endif /* __HT_IEC_61850_CSGFILE_H */
|