COMTRADE文件格式
COMTRADE是IEEE标准电力系统暂态数据交换通用格式。标准为电力系统模型采集到的暂态波形和事故数据的文件定义了一种格式。该格式意欲提供一种易于说明的数据交换通用格式。IEEE于1991年提出,并于1999年进行了修订和完善。
它通常用于记录和交换电力系统的电气量测量数据,如电压、电流、频率等。COMTRADE文件通常包含两个主要部分:配置文件(.cfg)和数据文件(.dat)。
-
配置文件(.cfg):
- 配置文件包含了与数据记录相关的元数据信息,例如记录设备的名称、测量点信息、采样频率、采样时间等。
- 这些信息以文本格式存储,通常使用逗号分隔值(CSV)格式,以便易于读取和理解。
- 配置文件通常包含了记录的通道数、采样率、采样点数、记录开始时间等信息。
-
数据文件(.dat):
- 数据文件包含了实际的采集数据,通常以二进制形式存储。
- 每个数据点对应一个时间戳,并包含了各个通道(如电压、电流)在该时间点上的测量值。
- 数据文件的格式取决于配置文件中定义的参数,包括数据的存储方式(二进制或ASCII)、数据类型、数据顺序等。
总的来说,COMTRADE文件格式通过配置文件和数据文件的结合,提供了一种标准化的方式来记录和交换电力系统的传输数据,以便于在不同系统之间进行数据交换和分析。
配置文件(CFG文件)
配置文件用于正确地说明数据(.DAT)文件的格式,因此必须以一种具体的格式保存。该文件诠释了数据(.DAT)文件所包含信息,其中包括诸如采样速率、通道数量、频率、通道信息等项。
配置文件第一行中的一个字段识别文件所依照的COMTRADE标准版本的年份(例如1991、1999等)。如果该字段不存在或是为空,则假设文件则遵照标准的最初发行日期(1991)。配置文件还包含识别伴随的数据文件是以ASCII格式还是以二进制格式存储的字段。
NST3000_Simulation, 1,1999 【注:厂站名称,记录装置的标识编号或名称,版本年号】
176, 143A, 33D 【通道总数,模拟通道数量,状态通道数量】
1, U2:A,A,U2:A,kV,0.002183,0.037750,0.0,-16376,16376,1.0,0.0,p
2, U2:B,B,U2:B,kV,0.003947,-0.333171,0.0,-16376,16376,1.0,0.0,p
3, U2:C,C,U2:C,kV,0.001855,0.095568,0.0,-16376,16376,1.0,0.0,p
4, U1:A,A,U1:A,kV,0.000492,-0.007162,0.0,-16376,16376,1.0,0.0,p
5, U1:B,B,U1:B,kV,0.000506,-0.071647,0.0,-16376,16376,1.0,0.0,p
6, U1:C,C,U1:C,kV,0.000505,0.125597,0.0,-16376,16376,1.0,0.0,p
7, U3:A,A,U3:A,kV,0.000024,-0.011399,0.0,-16376,16376,1.0,0.0,p
8, U3:B,B,U3:B,kV,0.000134,-0.003704,0.0,-16376,16376,1.0,0.0,p
9, U3:C,C,U3:C,kV,0.000126,0.012669,0.0,-16376,16376,1.0,0.0,p
【注:模拟量依次为:
通道编号,
通道名称,
通道相,
被监视的电路元件,
通道单位,
fCoefA[变换因子A],
fCoefB[变换因子B],
fTime[时间偏移],
fMin[此模拟量采样记录数据最小值],
fMax[此模拟量采样记录数据最大值],
通道电压或电流互感器变比一次系数,
通道电压或电流互感器变比二次系数,
P或S,表明通道转换因子方程fCoefA * X + fCoefB得到的值还原为一次(P)还是二次(S)值的标识
】
其中:实际值y与采样记录数据X的关系:y = fCoefA * X + fCoefB
所以实际的最值: Min = fCoefA * fMin + fCoefB; Max = fCoefA * fMax~ + fCoefB;
1, DICHANNEL1:Br2,A,Br2,1
2, DICHANNEL2:Br2,B,Br2,1
3, DICHANNEL3:Br2,C,Br2,1
4, DICHANNEL4:Br3,A,Br3,1
5, DICHANNEL5:Br3,B,Br3,1
6, DICHANNEL6:Br3,C,Br3,1
7, DICHANNEL7:Br4,A,Br4,1
8, DICHANNEL8:Br4,B,Br4,1
9, DICHANNEL9:Br4,C,Br4,1
注:开关量依次为:
通道编号/序号,
通道名称,
通道相,
被监视电路元件,
状态通道正常状态,
】
50 【注:系统电流电压的频率为50Hz】
1 【注:有两个采样频率】
10000, 6300 【注:第一个采样频率: 在采样率为10000Hz下采了6300个点】
03/07/03,14:46:48.850000 【注:采样开始时间】
03/07/03,14:46:49.010000 【注:采样结束时间】
BINARY 【注:dat文件记录格式为ASCII, 还有一种是BINARY(二进制格式)】
整体文件的格式如下所示:
文件内容:
厂站名、记录装置标识、COMTRADE标准版本年号;
通道类型和编号;
通道名、单位、和变换因子;
电网频率采样率和每一采样率下的采样数;
第一个数据点的日期和时间;
触发点的日期和时间;
数据文件类型;
时标倍率因子。
厂站、装置、年号信息
station_name,rec_dev_id,rev_year<CR/LF>
内容 | 说明 |
station_name | 可选,字符串长度在 0 ~ 64个字符 |
rec_dev_id | 可选,记录装置的标识编号或名称,为字符和数字的组合字符串,字符串 长度在 0 ~ 64个字符 |
rev_year | 必选, 为数字字符串,例如1995,字符串长度最小4个字符 |
通道类型和编号
TT,##A,##D<CR/LF>
内容 | 说明 |
TT | 必选,通道总编号,为整数数字字符串,长度最小一个字符最大7个字符。数值最小为1,最大为999999,例如我有8个模拟通道,一个数字通道,则该值就为9 |
##A | 必选,模拟通道个数,为整数数字字符串,字符串后面必须有字符‘A’,长度最小2个字符最大7个字符,数值最小为0A最大为999999A |
##D | 必选,数字为整数数字字符串,字符串后面必须有字符‘D’,长度最小2个字符最大7个字符,数值最小为0A最大为999999A |
模拟通道信息
An,ch_id,ph,ccbm,uu,a,b,skew,min,max,primary,secondary,PS<CR/LF>
内容 | 说明 |
An | 模拟通道编号,最小为1最大为上面的##A。从1开始依次增大 |
ch_id | 通道标识,可选,该字段对通道进行简单的描述,说明该通道的类型,例如IA,表明通道为A相电流的波形。 |
ph | 通道相别标识,可选,表明该通道是哪一相的。比如A相的电流波形,该字段就为A。 |
ccbm | 被监视的电路元件,可选,该字段我也不知道什么意思,知道了再补上。 |
uu | 通道单位,必选,就是电压电流的单位,比如电流通道就为A,电压通道就为V或kV等等。 |
a | 通道增益系数,必选,可使用标准浮点数记法 |
b | 通道偏移因子,必选,可使用标准浮点数记法 |
skew | 从采样时段起始的通道时间时滞(us),可选,最大32个字符,可使用标准浮点数记法。比如我现在有3个模拟通道在采样,但它们不是一起开始采样的,他们之间先后时间相差125us,三个通道该字段的内容就为0us,125us,250us。 |
min | 该通道最小值,必选,最小为-99999,最大为99999.(在二进制数据文件中,范围被限制在-32767 ~ 32767之间。 |
max | 该通道最大值,必选,最小为-99999,最大为99999.(在二进制数据文件中,范围被限制在-32767 ~ 32767之间。 |
primary | 通道电压或电流互感器的变比一次因子,必选,实数,最小长度1字符,最大长度32字符。 |
secondary | 通道电压或电流互感器的变比二次因子,必选,实数,最小长度1字符,最大长度32字符。 |
PS | 说明通道转换因子方程ax + b转换后的值是一次值还是二次值。必选。P:一次值。S:二次值。 |
数字通道信息
Dn,ch_id,ph,ccbm,y<CR.LF>
内容 | 说明 |
Dn | 数字通道索引编号,必选,最小为1最大为上面的##A。从1开始依次增大。 |
ch_id | 通道标识,可选。 |
ph | 通道相别标识,可选 |
ccbm | 被监视的电路元件,可选 |
y | 数字通道正常状态,即一次设备处于稳定运行时的输入状态。有效值为1和0。 |
通道频率
lf<CR/LF>
lf:通道频率,可选,单位:Hz。
采样速率信息
nartes<CR/LF>
samp,endsamp<CR/LF>
内容 | 说明 |
nartes | 数据文件中采样速率数。必选,最小值为0,最大值为999。 |
samp | 采样数率,单位赫兹,必选。 |
endsamp | 最终采样数。必选 |
如果我只有一组samp,endsamp,那么nrates字段就为1.
假如我的通道频率为50Hz,我一个波形需要采96个点,那我的samp字段就为4800,如果我波形的采样为前五后八共13个波,那endsamp字段就为13 x 96 = 1248。
注意:如果nrates和samp为零,数据中的timestamp则为必选,endsamp应设为文件中最终采样数。
日期时标
dd/mm/yyyy,hh:mm:ss.ssssss<CR/LF>
dd/mm/yyyy,hh:mm:ss.ssssss<CR/LF>
数据文件类型
ft<CF/LF>
ft代表文件类型,必选,允许的值为 ASCII或ascii、BINARY或binar。
数据文件(DAT文件)
数据文件包含记录中每个采样所有输入通道的值。数据文件包含一个顺序号和每次采样的时间标志。这些采样值除记录模拟输入的数据之外,也记录状态,即表示开/关信号的输入。
对于Binary保存方式的数据文件(dat文件),数据保存格式为:序号[4字节]、采样时间[4字节];
模拟量值[按cfg文件的顺序,两字节表示一个模拟量采样值]、数字量组值[按cfg文件的顺序,16个数字量一组,一组用2字节表示,不够一组的空位(高位)补零构成一组,组内从低位bit依次到高位bit与cfg文件里的数字量顺序对应];
经验表明,目前大部分comtrade文件中的cfg文件中所表示的通道最值与dat中实际的最值都是不相符(出入很大),所以在读dat的接口中引入了最值统计;
【注:依次为:
序号,
采样时间,
模拟采样记录值[按cfg文件的顺序],
数字采样记录值[按cfg文件的顺序],其中模拟量实际值算法:y = fCoefA * X + fCoefB, 同最值计算方法; 对于46表示的实际值y为:y = fCoefA(即8.46830338) * X(即46) + fCoefB(即0.00000000);
对于-54表示的实际值y为:y = fCoefA(即8.46830338) * X(即-54) + fCoefB(即0.00000000);
对于10表示的实际值y为:y = fCoefA(即8.46830338) * X(即10) + fCoefB(即0.00000000);
对于0表示的实际值y为:y = fCoefA(即0.15540126) * X(即0) + fCoefB(即0.00000000);
对于1024表示的实际值y为:y = fCoefA(即0.15540126) * X(即1024) + fCoefB(即0.00000000)
】
1, 0, 46, -54, 10, 0, 1204, -734, -442, 60, 0, 1, 0, 1
2, 200, 48, -54, 6, 0, 1218, -682, -504, 60, 0, 1, 0, 1
3, 400, 50, -52, 4, -2, 1206, -616, -554, 58, 0, 1, 0, 1
4, 600, 52,-50, -2, 0, 1192, -542, -614, 56, 0, 1, 0, 1
数据文件存储格式
n timestamp A1 A2 … Ak S1 S2 …Sm
内容 | 说明 |
n | 采样编号,必选,最小长度四字节,最大长度四字节,最小值00000001,最大值FFFFFFFF |
timestamp | 时标,字段为可选还是必选前面有解释。单位为微秒。最小长度四字节,最大长度四字节,最小值00000001,最大值FFFFFFFF |
A1 A2 … Ak | 模拟通道数据,以两字节为单位连续显示,最小值8001,最大值7FFF,缺失模拟数值以8000来表示。 |
S1 S2 …Sm | 每16个通道用两字节为单位,最小值0000,最大值FFFF。数字通道数不可被16整除时,超出位用应置为0 |