You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

249 lines
13 KiB
C

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

/****************************************************************************
** 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”
* YYYY4位的年份如2010
* MM2位的月份01-12
* DD2位的日期01-31
* hh2位的小时00-23
* mm2位的分钟00-59
* ss2位的秒数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
* 注1char和byte有所区别例如表示数字1char的值为0x31byte的值则为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即“正常”则不需统计此时放电类型概率设为O1表示已统计若放电类型不为0则需统计此时放电类型概率设为M
float fProbability[7]; // 放电类型概率(%),1-7种发电类型的概率放电类型0不需统计概率若未对放电概率进行统计即只判断出属于某一种放电类型则将对应的放电类型记为100%0xFFFFFFFF为未使用标识
int iFdPhaseNum_m; // 放电相位窗数m,工频周期被等分成m个检测时间段
int iAmplitude_n; // 量化幅值n,幅值范围被等分成若干个区间量化幅值表示第n个区间。若局放谱图类型为PRPD二维图则n设为Mp设为O
int iFrequencyCycle_p; // 工频周期数p,频周期的个数。若局放谱图类型为PRPS三维图则p设为Mn设为O
float f50Relevance; // 50Hz相关性,一个工频周期中放电信号与50Hz的相关程度单位为%。0xFFFFFFFF为未使用标识
float f100Relevance; // 50Hz相关性,一个工频周期中放电信号与50Hz的相关程度单位为%。0xFFFFFFFF为未使用标识
char cSpectrogramType; // 局放谱图类型标志,0表示PRPD二维图1表示PRPS三维图。
char cAmplitudeUnit; // 幅值单位,0表示dBm1表示mV2代表%
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个峰称为峰jj为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表示秒s1表示毫秒ms
char cYUnit; // Y轴单位,0表示毫伏mV1表示微伏μ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表示秒s1表示毫秒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 */