一种电能质量数据交换文件生成方案

2018-10-22 01:25李少卿李德文朱何荣熊慕文
电气技术 2018年9期
关键词:周波链表内存

程 立 李少卿 李德文 朱何荣 熊慕文

(南京南瑞继保电气有限公司,南京 211102)

随着我国经济的持续发展,企业社会对电力的需求越来越旺盛,电网规模越来越大,电网结构趋于复杂,负荷用户类型也越来越多。很多大型炼钢厂、锻造厂、电气化铁路出力特性不明显、波动性大[1],容易产生谐波、间谐波,造成电压不稳定,电网电能质量下降。另一方面,风电、光伏等新能源[2]不断投入,这些新能源具有易受气候条件影响、出力不稳定、波动范围广、间歇性较强的特点,也会为电网带来谐波含量增加、电压闪变等问题,从而影响电网的电能质量。

从电网角度来讲,电网公司对提高供电水平格外重视,在电网的某些关键点,如风电、光伏等新能源站、直流换流站、重要负荷点会安装电能质量监测终端,实时监视电网的电能质量水平,并加以改善。从用户角度来讲,随着精密加工企业越来越多,这些企业生产精密机床、高科技芯片等,电压暂升暂降都会导致次品率跃升而蒙受损失,因此这些企业额外重视电能质量。在这些企业中,购买安装电能质量监测终端往往是自发行为,它们更多地是监视电网的电压质量,作为电网对生产线造成影响而索赔的依据。

电能质量监测所形成的数据对于电网和用户来说都很重要。电能质量数据交换文件PQDIF[3]是电能质量存储管理的标准格式文件,不仅可以定时存储稳态数据(如10min数据),而且可以存储暂态事件(如电压暂升/暂降等)数据。根据IEC 61000-4-30[4]标准,PQDIF的稳态数据基于10周波数据,而10周波数据的计算都是在实时性很强的 DSP单元完成,而PQDIF的存储往往依赖文件系统,在非实时的操作系统中生成。10周波数据的实时性太强,传统的方法都是在操作系统中用150周波数据替代而进行统计,这明显违背了IEC 61000-4-30规定的测量方法原则。

本文在深入研究电能质量终端架构设计的基础上,提出了一种电能质量数据交换文件生成方案。该方案完全遵守IEC 61000-4-30测量方法原则,采用10周波数据作为数据源,快速正确地生成电能质量数据交换文件。通过设计相应的测试方法,验证了本文所提出方法的有效性和正确性。

1 PQDIF文件简介

为了统一电能质量数据文件的格式,在20世纪90年代IEEE标准委员会起草了IEEE 1159.3[5]标准文件,采用了一种电能质量数据交换格式(power quality data interchange format, PQDIF)。此文件格式最早由美国电力科学研究院提出。此草案统一了电能质量文件格式,给出了相关术语、定义和指导方针,解决了不同厂家数据的可交换性问题。

PQDIF文件分为两个视图,即物理层和逻辑层。物理层只负责文件的存储结构与定义,不关心存储的内容。文件存储结构类似于链表结构,Record之间相互链接,如图1所示。图1(a)是链表结构按序存储,图1(b)是链表结构跳跃式存储,两者都符合物理层的存储要求。

在物理层中,每个Record包含header和body结构,其中 header概要描述 body存储信息,body包含文件详细内容(body可采用 zlib压缩格式),如图2所示。

图1 PQDIF物理层

图2 header和body结构

逻辑层只关心文件的内容,分为 Container、DataSource、MonitorSetting、Observation几个类型,典型的逻辑层表示如图3所示,Container包含若干DataSource,DataSource包含若干MonitorSetting和Observation。

图3 PQDIF逻辑层

从物理层来看,各个Record是平行结构,没有层次关系,但从逻辑层来看,各个Record之间存在层次关系。DataSource与Observation的对应关系如图4所示。

图4 DataSource与Observation

2 系统设计

2.1 系统结构

本文实现方案采用嵌入式装置[6],硬件架构为CPU+DSP。CPU采用 Linux[7]操作系统,除了板卡管理外,还负责PQDIF文件管理工作。DSP采用中断方式,除了基本电压/电流、谐波/间谐波、波动和闪变[8]等计算模块外,还负责PQDIF的统计数据生成。CPU与DSP之间通过HTM总线交互数据,总线速率可达到320Mbps。

DSP中包含统计模块、传输模块;CPU中包含接收模块、文件生成模块、文件管理模块。统计模块生成数据后,通过HTM分时传输到CPU,CPU接收模块从HTM驱动读出后,push到共享内存。文件生成模块从共享内存pop出数据,生成PQDIF文件,最后文件管理模块对文件进行存储及管理并提供接口给IEC 61850[9-10]、LCD及其他APP。

图5 系统结构

2.2 统计模块

按照IEC 61000-4-30 A级标准,每10个周波计算一个值,15个 10周波值做均方根,每到一个统计周期(如10min),将时间窗重新对齐,中间不允许丢点,如图6所示。

图6 IEC 61000-4-30A级数据窗

统计数据分为4种,即最大值、最小值、平均值、95%值。最大值、最小值、平均值含义比较明确。95%值含义是指将计算的点按从大到小的顺序排列,去掉5%最大值,剩下中最大的即为95%值。举个例子:100到1是100个数字,减去5%的最大值,即剩余 95~1共 95个数字,那么 95%值就是95(剩余最大值)。IEC标准取95%意指时间,即观测点的评估指标应在95%的时间内符合标准要求。

这4种统计值都基于10周波数据,考虑到实时性,因此要放在DSP的实时中断计算。在本算法实现中,统计模块Statis拉取MMXU、MSQI、MHAI模块的指针,如图7所示。

计算中断为50ms,因为每10周波计算一个数据,所以 50ms中断不是每次都能刷到新数据。MMXU/MHAI/MSQI分别提供一个 cycle10的计数器,在10周波计算完成后该计数器加一。在Statis模块检测到cycle10计数器变化后,对新数据进行统计。最大值、最小值可以直接比较得出;平均值首先要计算累加和,等到统计周期结束后再进行平均计算;95%值需要将数据缓存下来,在统计周期结束后采用排序方法进行计算。

计算 95%值,按照 10周波一个点,每个点 4字节 float存储,10min统计出结果,那么就需要4× 1 0× 6 0 ÷ 0 .2 = 1 2000字节,很耗费空间。这里采用一个反向方法,只选取最大的5%大值,这样存储空间就降到12000× 5 % = 6 00字节,空间节省 95%。C代码片段如下所示。shell_sort按照升序排列,最终的cpf95_vec[0]就是95%值。

图7 Statis统计模块

2.3 传输模块

统计模块生成数据后,要设法传输到CPU板,因此必须设计一个数据传输通道。本方案 CPU和DSP[11]间通过HTM总线进行数据交互。由于还有其他应用数据也通过 HTM 传输,留给统计数据传输的带宽并不大,因此要设计一种交换协议分时进行数据传输。本文采用的数据协议如下:

按照间隔1, 2, …, N的顺序,每个间隔内按照MMXU、MHAI、MSQI的时序传输,合理分配带宽,确保在一个统计周期(如 10min)内将数据传输完毕,每个50ms中断传输数据个数M计算公式如下:

时序如图8所示。

图8 传输时序图

2.4 接收模块

统计数据通过HTM总线传输至CPU板卡之后,由HTM驱动模块接收并且缓存。由于HTM驱动缓存较小,所以要及时读取出来,否则缓存塞满后就会丢失数据。在 Linux操作系统侧,通过共享内存生成一个队列长度256,每个队列1KB的环形缓冲区,在1.25ms中断读取HTM数据并拷贝至环形缓冲区,由另外一个独立的文件生成线程读取数据,如图9所示。

图9 接收及生成模块

2.5 文件生成模块

在图9中,采用独立线程每3s批量读取数据,根据预先设置的PQDIF生成模板,将数据组织生成文件。本文采用的PQDIF模板如下。

ChannelDef

•Voltage of A/B/C //三相电压幅值

•Current of A/B/C //三相电流幅值

•Phase Angle of Voltage A/B/C //三相电压相角

•Phase Angle of Current A/B/C //三相电流相角

•Unbalance of Voltage/Current //电压电流不平衡度

•Positive/Negative/ZeroSequence of Voltage//电压正负零序

•Positive/Negative/ZeroSequence of Current//电流正负零序

•THD of Voltage VA/VB/VC //三相电压总畸变率

•HR of Voltage VA/VB/VC //三相电压谐波含有率

•HRof Current IA/IB/IC //三相电流谐波含有率

•Real Power of the total/A/B/C //总及三相有功

•Active Power of the total/A/B/C //总及三相无功

•Apparent Power of the total/A/B/C //总及三相视在功率

•True Power Factor of the total/A/B/C //总及三相功率因素

•Phase Angle of Power Factor A/B/C //三相相角

•Real Power of Fundamental Frequency of the total/A/B/C //基波总及三相有功

•Acitve Power of Fundamental Frequency of the total/A/B/C //基波总及三相无功

•Apparent Power of Fundamental Frequency of the total/A/B/C //基波总及三相视在功率

•Power of Harmonic Frequency of the total/ A/B/C //总及三相谐波功率

由于PQDIF的物理层相当于链表结构,链表结构在文件系统中操作难度较大。因此,IEEE 1159.3推荐了一种很巧妙的方法,利用内存方式生成相应的链表结构,记录下每个块之间的内存偏移(相当于文件中链表的下一个块),这种内存方式比文件系统易于操作,而且要灵活的多。由于整个PQDIF文件存储内容较多,整个块头可能比较大,因此需要分段采用内存链表结构进行存储,每存储一个段就释放内存,下一个段再重新利用这块内存,这样可以减小内存块,减轻内存资源压力。文件体采用压缩格式存储时也可以预先在内存中用zlib库压缩好后,再写入文件中,C代码片断如下。

2.6 文件管理模块

PQDIF文件生成后采用 MySQL[12]开源数据库进行管理。MySQL是由瑞典MySQL AB公司开发的一款关系型数据库,后来被Oracle公司收购。在嵌入式操作系统Linux中,MySQL应用十分广泛。文件管理模块设计如图10所示,由PQDIF_SERVER主进程和insert_thread、query_thread、del_thread三个线程组成。PQDIF_SERVER主进程初始化MySQL数据库,完成数据库表结构的构建及关键字的建立。insert_thread功能为:当有新的PQDIF文件生成时,存储进特定目录,按照间隔+时间日期关键字存入MySQL表结构;query_thread功能为:为IEC 61850、LCD和其他APP提供同步和异步两种接口,可以按照间隔+时间关键字的方式检索信息,提供返回文件路径接口。del_thread功能:定期检测表结构及磁盘大小,按照时间顺序删除掉最老文件,同时也删除相应的表结构信息。

图10 文件管理模块

3 试验验证

本文对提出的电能质量数据交换文件方案做了测试进行验证。测试平台硬件:CPU为PPC,主频800MHz;DSP为TI芯片,主频1GHz;内存1G;SD卡为32G;操作系统为Linux。选择电压监测点如下:10%Un、150%Un,每个监测点持续 20个周波,总共持续15min,查看PQDIF文件数据结果,见表1。测试结果小于标准要求精度0.2%Un,满足工程应用需求。

表1 测试结果摘录

4 现场运行

采用本文方案研发的电能质量监测终端已在安徽六合光伏、四川宜宾农网及重庆铝厂等项目中成功运行。现场终端采用 51.2K/s的模拟采样,通过交换机接入路由设备,通过综合数据网上送到主站系统,规约采用IEC 61850。PQDIF文件既可通过IEC 61850的文件服务上送主站,又可通过终端本身自带的USB进行数据拷贝。组网方式如图11所示。

工程项目自投运以来,采用该方案实现的终端运行稳定可靠,采集和生成了大量电能质量PQDIF数据文件,为当地电力部门分析电网状态、实施有效合理的治理措施提供了大量详实的运行数据。

图11 网络结构图

5 结论

本文提出了电能质量数据交换文件的生成方案,并且成功地应用在电能质量终端的研发上。该方案严格遵守IEC 61000-4-30的测量方法,采用10周波数据,在实时系统与非实时系统间进行数据传送生成PQDIF文件。试验结果表明,该方案生成结果可靠正确。本文提出方案研发的电能质量监测终端已经被成功应用在安徽、四川及重庆等地,为用户提供了大量详实的电能质量数据,帮助用户分析电网状态,为科学决策电能质量治理问题提供了坚实的数据依据。

猜你喜欢
周波链表内存
A Note on the Distance Signless Laplacian Spectral Radius
Molecular simulation study of the adhesion work for water droplets on water monolayer at room temperature∗
外部高速缓存与非易失内存结合的混合内存体系结构特性评测
基于二进制链表的粗糙集属性约简
“春夏秋冬”的内存
跟麦咭学编程
基于链表多分支路径树的云存储数据完整性验证机制
太空种植基地
砖头砸进窨井里
链表方式集中器抄表的设计