基于FPGA+104工控板实时动态谐波监控装置设计
2019-06-27杜俊杰梁俊伟2和立辉
杜俊杰,梁俊伟2,和立辉,杜 洋
(1.国网邢台供电公司,河北 邢台 054000; 2.北京中科瑞德科技,北京 100070)
0 引言
电能质量监测设备经过多年的发展,逐步进入成熟阶段,但现今大部分采用DSP运算处理器,在电能质量指标越来越多的今天,电能数据运算量不断增大,DSP的运算能力越发力不从心。此外供电公司因谐波而发生的设备故障和异常情况逐渐增多,而传统电能质量监测装置只能实现对谐波的监测,对谐波超标用户无法实现有效控制,用户治理主动性较差,国网公司“谁污染,谁治理”政策执行难度大,执行效率较低,致使电网谐波污染日益加剧,供电部门面临客户对电能质量投诉的风险越来越大,凸显依靠技术手段而非仅靠教育引导及协商管控提高电网安全经济运行的紧迫性。采用更为先进的FPGA内核而研制的谐波监控装置实现了电能质量指标的大数据量计算,并且在传统监测基础上增加了谐波控制功能,能够对谐波超标线路进行报警并切断处理,客观上督促污染源用户主动进行谐波的治理。
1 系统结构及原理
1.1 技术方案
谐波监控装置是基于原有的电能质量监测装置,并综合继电保护的高可靠性而开发,由于谐波监控装置的采样率比较高,数据计算量也比较大,其使用的什么样的硬件平台在很大程度上也就决定了监控庄子的性能,多通道并行采样的高速A/D转换芯片和以DSP为核心的多CPU嵌入式硬件平台已经成为在线式监测终端的主流,但是以微控制器和数字信号处理器为核心软硬件平台结构以及相应的设计开发模式,存在着处理能力不足、可靠性差、更新换代困难等弊端,导致其产品结构越来越复杂,生产成本不断提高,产品维护费用高等问题日渐凸显,更为先进的使用FPGA芯片(其在进行大量复杂计算方面的高性能已经远超过了同档次的DSP芯片)加104工控板为硬件平台核心的在线式电能质量监测产品在未来将成为主流。
在FPGA+104工控板的谐波监控装置中,FPGA主要实现频率跟踪与AD的采样控制、开出量和开入量控制、和PCI的数据通讯[1]。104工控板主要实现电能质量各项指标的运算、按键输入、液晶显示、数据通讯、规约转换、数据存储等。
电力系统的频率作为电能质量的指标,需要动态监测,同时作为实施安全稳定控制的重要状态反馈量,要求能够实时重构,其中一个重要环节是保证实时监测系统频率的变化并实时调整数据采样的时间间隔。传统的由锁相环电路实现硬件同步方法实时跟踪信号频率的变化,从而实时调整采样频率,其可靠性不高,当波形畸变时测量存在较大误差,而硬件较复杂,器件的延迟,漂移等也将引入新的误差。另外采用软件实现同步的方法,虽然简化了硬件电路,但是该方法增加了微处理器的计算量,并且由于微处理器中的量化误差和中断响应时间的分散性也必然会导致较大的采样误差[2]。
随着FPGA技术的广泛应用,采用基于频率跟踪和自适应时域均衡的谐波信号处理与分析方法成为新的选择,该方法具有精度高,速度快等特点,在系统频率不断变化的情况下,为减小后续谐波分析的泄露误差,本装置在采用了实时频率测量、采样频率动态调整的同时,将自适应时域均衡理论引入电力信号的谐波处理与分析,提高了整体装置的谐波测量稳定度和准确性,降低了采样频率的抖动与偏差造成的谐波分析误差[3]。
对于目前电能质量监测对象谐波、闪变及暂态等指标,由FPGA技术硬件实现的监测系统,可以提高运算速度和精度,满足极快响应速度的要求。
随着电能质量国家标准陆续更新,对电能质量监测装置提出了新的要求。谐波计算的采样窗口为十周波采样方式,同时增加了分辨率为5Hz的谐间波的计算,以DSP为代表的微处理器已经计算起来非常困难,如果把算法移植到工控板上可以轻松完成。
闪变算法要求要不间断采样,同时谐波监控装置需要具有波形录制功能,如何把采集到的波形完整的传送到工控板成为谐波监控装置的关键。PCI通讯具有成熟、稳定的特点,通讯速度能够达到要求,最终选定FPGA和工控板之间采用PCI通讯。硬件整体方案如下:
图1 硬件原理框图
1.2 系统结构
系统由电源、采集、工控、控制和显示单元组成。结构简图如图2所示。
图2 硬件系统结构图
1.3 工作原理
互感器板上设计有测频电路,将电压信号从模拟转换为数字信号传送至FPGA板。FPGA板对数字信号进行测量后换算成电压信号频率,并根据信号频率实时调整采样周期,然后根据采样周期启动AD芯片对多路信号进行同步采集,AD采集转换完成之后通知FPGA进行读取,FPGA读取采集数据之后通过PCI总线传送至工控板。工控板通过各种算法计算得出电能质量参数指标,并判断是否需要控制输出,同时根据用户需要存储越限数据。
2 系统硬件设计
2.1 电源设计
电源采用定制型交直流两用开关电源,输出功率35 W,效率为86%,输出纹波峰峰值小于15 mV。电源输出分为三种,分别为数字、模拟和控制用电源。三种电源相互独立。
2.1.1 数字电源
数字电源为5 V/2 A,向FPGA板和工控板供电。
2.1.2 模拟电源
模拟电源为±12 V/0.5 A,向互感器板运放电路供电。因为运放电路对纹波和噪声比较敏感,所以在模拟电源输出端增加了线性LDO电源芯片TPSA30/TPS7A49进一步处理,处理之后纹波峰峰值小于5 mV,噪声小于14 uV。
2.1.3 控制电源
控制电源为24 V/0.5 A,向继电器等控制回路供电。
2.2 互感器板设计
互感器板通过电压/电流互感器和调理电路,将待测试信号进行转换并传送至AD芯片,如图3所示。
图3 互感器板设计原理图
2.3 FPGA板设计
包含多路AD芯片和FPGA处理器件。FPGA通过测频电路对信号频率进行实时跟踪,根据当前频率计算出采集周期并触发多路AD进行同步采集。AD采集完成之后通知FPGA器件进行读取。AD部分设计如图4所示。
图4 AD板原理图
图5 FPGA板设计原理图
AD芯片为16位采集精度,每个AD具有8个采集通道,可以通过启动信号同时进行采集和转换。与FPGA器件通过总线方式进行通信。
FPGA器件设计如图5所示。
芯片共484个引脚,大部分可用于逻辑输入与输出。内部采用低压供电,包含大规模逻辑处理单元,非常适合同步时序应用。
2.4 工控板选用
工控板选用行业内成熟产品板卡,采用LINUX嵌入式操作系统。
2.5 控制板设计
控制板采用专用芯片对输出继电器进行控制,保证其动作可靠性。另外控制回路采用了屏蔽措施,防止误操作输出,其设计原理如图6所示。
图6 控制板设计原理图
2.6 人机交互设计
采用6.4寸真彩液晶作为显示输出,九宫格硅胶按键作为参数输入及操作的键盘。
3 系统软件设计
3.1 显示单元
显示单元部分界面如图7所示,可进行数据及图形显示以及参数的设定。
图7 显示界面设计
3.2 通信单元
目前全国谐波装置普遍采用IEC61850协议进行通讯,因此,同样采用IEC61850规约,方便以后与上级部门的数据接轨。而由于实现IEC61850规约需要采用操作系统和较大的内存,和较高的处理速度,因此搭载104工控板使用嵌入式操作系统来提高处理速度,根据国家电网公司对网络安全性的要求,采用了LINUX系统。
根据全球智能互联网研究院2018年对电能质量61850通讯规约做出的修订,新的电能质量监控装置应满足以下新增的通讯功能:
3.2.1 监控终端程序远程更新
监控终端支持文件接收功能,接收的文件放置于终端的指定目录下。当远程更新监控终端程序时,使用SetFile 服务将更新程序传输到监控终端的UPLOAD 目录下,然后通过自定义的遥控节点下发遥控指令通知远程服务端完成程序更新。终端程序烧录或更新后,终端程序版本号应包含程序写入时间,终端程序版本号命名规则为:“软件 版本_年月日时分”。
3.2.2 文件传输服务新增
1)终端应支持按时间段召唤录波文件列表,主站系统可向终端发送 请求的文件目录服务参数中,通过时间段来获取文件列表。
2)终端还应支持通过文件条目数来获取文件列表。
3)增加事件报告:
频率变动事件报告 brcbEveQFVR
电流不平衡事件报告 brcbEveQIUB
电压不平衡事件报告 brcbEveQVUB
电压波动事件报告 brcbEveQVVR
录波事件报告 brcbEveRDRE
设备状态报告 brcbDevice[4]
3.3 算法设计
主要对监控终端谐波超标继电器控制逻辑算法原理进行介绍。
代码摘要:
if(ithd95mark>0 )//95%综合判定超标标志
{
if(ithd95mark==1 &&( ithd95hour==2))//2小时第一次超标
{
if(Limit[0][1].THDU>0 && Limit[0][1].THDI>0)
{
if(iThd && iCurrentHarm)
{
//此处记录存底用于查阅
…….
//吸合继电器,声光报警用于提示用户超标
strAl.Format("%d-%02d-%02d %02d:%02d:%02d 总畸变率越限首次告警!",ltm.wYear,ltm.wMonth
,ltm.wDay,ltm.wHour,ltm.wMinute,ltm.wSecond);
AddYXStr(strAl,1); //添加纪录用于人机界面查阅
…….
}
else
{
ithd95mark=1;
}
}
else
{
ithd95mark=1;
}
ithd95js=0;
ithd95hour=ltm.wHour;
memset(&dthd95buf,0,sizeof(dthd95buf));
char path[100],filename[250];
sprintf(path,(strPath+" D%02d%02d%02d"),ltm.wYear%100,ltm.wMonth,ltm.wDay);
CreateDirectory(path,NULL);sprintf(path,("d:DATAD%02d%02d%02dd00"),ltm.wYear%100,ltm.wMonth,ltm.wDay);
CreateDirectory(path,NULL);
sprintf(filename,"%sJ%d%02d%02d%02d0000",path,ltm.wYear,ltm.wMonth,ltm.wDay,ltm.wHour);
WriteFileN(filename,(byte *)&thd95[0],sizeof(thd95[0]));
}
//判断是否连续第二次告警
if(ithd95mark==2 &&( ithd95hour==2))
{
if(Limit[0][1].THDU>0 && Limit[0][1].THDI>0)
{
if(iThd && iCurrentHarm)
{
thd95[1].tm=ltm;
for(int i=0;i<6;i++) thd95[1].val[i]=dthd95buf[i][120];
///写记录继电器
char filename[100];
char path[100];
sprintf(path,(strPath+" D%02d%02d%02d"),ltm.wYear%100,ltm.wMonth,ltm.wDay);
CreateDirectory(path,NULL);
sprintf(path,(" D%02d%02d%02dd00"),ltm.wYear%100,ltm.wMonth,ltm.wDay);
CreateDirectory(path,NULL);
printf(filename,"%sJ%d%02d%02d%02d0000",path,ltm.wYear,ltm.wMonth,ltm.wDay,ltm.wHour);
WriteFileN(filename,(byte *)&thd95[1],sizeof(thd95[1]));
sprintf(filename,"%sX%d%02d%02d%02d0000",path,ltm.wYear,ltm.wMonth,ltm.wDay,ltm.wHour);
WriteFileN(filename,(byte *)&thd95,sizeof(thd95));
strAl.Format("%d-%02d-%02d %02d:%02d:%02d 总畸变率越限再次告警!",ltm.wYear,ltm.wMonth
,ltm.wDay,ltm.wHour,ltm.wMinute,ltm.wSecond);
AddYXStr(strAl,1);//添加纪录用于人机界面查阅
i95alert+=2;
ithd95mark=1;
}
else
{
ithd95mark=1;
}
}
else
{
ithd95mark=1;
}
ithd95js=0;
ithd95hour=ltm.wHour;
memset(&dthd95buf,0,sizeof(dthd95buf));
//清除标志,开始下一轮判断
}
}
3.4 存储设计
为保证数据存储的稳定性,采用固态硬盘作为存储介质。根据历史数据存储需求,选用64 G固态硬盘可满足12个月的数据存储。
为增强数据存储可靠性,采用增加冗余的删除编码方法对数据进行保护处理。其原理简单介绍如下:
删除编码的基本思想是将需要存储的数据分成每K个一组,通过特定的编码方式,增加N-K个冗余数据,构成N(N>K)个数据进行存储。选择的编码方式具有如下特征:若在N个数据中可以读取任意不少于K个数据,就能恢复全部K个原始数据。删除编码的数据编码及其读取方法均基于多项式(Polynomial)求值进行的。下面以K=2,N=3为例说明其基本原理。
图8 采用删除编码的存储过程示意图
如图8所示,假定需要存储的两个数据为字符A和B。下面求取增加的一个冗余数据。在ASCII表[2]中查得A和B的ASCII值分别为65和66。假定它们在平面直角坐标系中对应两个点,坐标分别为A(1,65), B(2,66),如图9所示。
图9 删除编码求取冗余数据示意图
由平面几何知识可知,这两个点唯一确定一条直线。利用点
A
和点
B
的坐标可以求得该直线的函数方程为
f
(
x
)=
x
+64。增加冗余数据的方法是计算该函数在其它某个给定点的函数值。假定冗余数据对应
x
=3,经计算可知其对应函数值为67,查ASCII表可知对应的字符为C。数据存储过程见图5,其中前两个存储单元中的数据为原始数据,后一个存储单元中的数据为冗余数据。需要指出的是,对于用户来说,原始数据和冗余数据对应点的纵坐标是需要读取或者计算得到的,但是横坐标是预先知道的。只要可以读取任意不少于2个数据,就可以保证恢复出全部2个原始数据字符A和B。
一般地,若删除编码的参数为N和K,则原始数据对应平面的K个不同点。根据代数知识可知,这K个点可以确定一个次数不超过K的多项式函数f(x)=α0+α1x+…。求取冗余数据的方法可归结为计算该函数在其它N-K个给定点的函数值。在数据读取时,若原始数据有些不能读取,但能够读取的数据数目不少于K,就可以通过求解线性方程组得到 (即求出系数α0,α1,…,αk-1),进而得到原始数据对应的K个点的函数值,恢复出原始数据。
在实际存储中,上述多项式不是定义在实数集上,而是定义在一种特殊的代数系统——有限域(Finite Field)上[5]。
4 实验结果与分析
将试验样机与标准源进行精度对比,所测结果完全满足国标A级精度要求,具体指标见表1所示。
5 结束语
样机测试合格后,在邢台供电公司王快110 kV变电站8条用户出线进行挂网试运行,经过12个月的试运行,各项
表1 精度测试结果对照表
指标均达到要求。收到良好的效果。电能质量控装置适用于所有非线性负荷电力客户。具有效具有广泛的推广价值,