本帖最后由 林伟 于 2014-10-14 06:08 编辑
2 算法设计实例及MATLAB仿真验证
为验证本算法的性能,笔者利用MATLAB-Simulink工具搭建了一个简单的分布参数电网模型,针对一种典型故障情况进行了仿真,将得到的2路暂态故障信号采样值序列作为待处理数据,在MATLAB环境下编写实现本算法的程序,对数据处理过程进行了仿真。
2.1 仿真模型的搭建
用Simulink搭建了一个与参考文献[3]P176图7-38所举例题几乎完全相同的分布参数电网模型,区别仅在于将故障改为A相单相瞬时接地故障、将故障点的位置移到了距离E2电源1km处,模型架构如图3所示,数据采样频率为500kHz。
然后编写MATLAB代码,将1.3节所述32个带通滤波器的系数向量(归算为16位整数、与后续的FPGA实现方式相匹配)代入filter函数、形成32个带通滤波器,用于处理仿真生成的故障波形数据。[程序很简单,不在这里提供了,希望参考此代码的坛友请给我发邮件]
图3 仿真用分布参数电网模型架构图
2.2 算法仿真
仿真得到的单相接地故障前后的三相电压、电流波形分别如图4、图5所示。将故障前后的A相电压、电流采样数据提取出来,送入上述模块的数据输入端,分别打印32个滤波器的输出信号波形,A相电压处理后的波形如图6、图7所示。
图4 仿真得到的A相单相瞬时接地故障前后的三相电压波形
图5 仿真得到的A相单相瞬时接地故障前后的三相电流波形
图6 A相电压在故障时刻前后的波形数据被算法设计实例处理后得到的第1~16个频带的数据波形
图7 A相电压在故障时刻前后的波形数据被算法设计实例处理后得到的第17~32个频带的数据波形
2.3 对仿真结果的说明
图6、图7中突变点区域的波形之所以看上去不如多级Mallat分解提取到的小波系数波形那样“集中”,原因在于这里输出的是在时域上未经“压缩”的信号 – 这正是本算法在时域上的高分辨率特征的体现 -- 这里提供的是Mallat算法无法提供的所有各频段的时域细节。
图6、图7中突变点区域的波形之所以看上去不如DB5小波单级Mallat分解提取到的小波系数波形那样“模极大值突出”,原因在于DB5小波Mallat算法高通滤波器的通带几乎覆盖了整个(0,fs/2)频段,累加了远为宽广的频带范围内的能量。这种“累加”,可以把更多频率范围内的模极大值重叠在一起,使其更突出。但是,从另一个角度看,这也是一种“混杂”,使后续模块无法看的暂态信号在各频段内的分量在故障点处的模极大值之间的数量、位置关系等各种关系。也就是说,Mallat算法无法区分暂态信号在各细分频段内的时域特征。这一区别正是本算法在频域上的高分辨率特征的体现。
2.4 暂态信号可定制实时时频精细分析算法与小波分析算法的关系
由上述算法分析、仿真工作可知,从算法执行的结果来看,暂态信号可定制实时时频精细分析算法可以被看做小波分析算法在时间、频率两个维度上的精细化、可定制化发展。
3 基于FPGA的范例模块设计及仿真验证
为验证本算法的实用性,笔者基于FPGA设计了一个滤波器性能参数与1.3节的例子相同、各滤波器并行运行、同时处理2通道数据的范例模块,在ISim仿真环境下同时读取上述2路暂态故障信号采样值序列,对其功能进行了仿真验证,对其输出延迟、运算速度、芯片资源占用情况进行了验证。
3.1 FPGA范例模块的设计
在1.3节的例子述及的32个FIR带通滤波器由Xilinx公司的集成开发软件ISE 14.5利用FPGA芯片提供的可配置的基础DSP硬核、片内RAM块、逻辑资源、连线资源生成,需调用其提供的用于生成FIR滤波器的IP核。
由于需要处理2路采样值,所以调用IP时设置FIR输入的运算数据通道数为2;由于设计的原始数据采样频率为500kHz,所以调用IP时设置的输入数据速率为500kHz。滤波系数位宽为16,输入、输出数据位宽分别为32、48。驱动整个模块运行的时钟主频为200MHz。
3.2 对FPGA范例模块的仿真
仿真工具采用ISE集成开发环境中提供的ISim仿真器。编写简单的测试模块,从外部向本模块提供时钟信号、运算启动信号,以模拟实际装置中外部环境对本模块的施加的基本驱动信号。仿真过程中,调用仿真器支持的系统函数对所关注的信号进行打印,将打印结果整理后贴到excel中,由excel绘制其波形。
在仿真模式下模块的工作过程:收到运算启动信号后,带通滤波器1子模块1依次读取2块待处理数据缓冲区(分别存储2.2节得到的故障前后A相电压、电流采样数据)中存储的第1个数据,每次读出的缓冲区n(n=1、2)的数据同时送入32个处理通道(滤波器)的数据输入口,然后是各缓冲区的第2个数据、第3个数据......。各通道的滤波后数据流在一定延迟(与阶数有关)后出现数据输出端口,供后续模块使用。
3.3 仿真结果
32个带通滤波器的输出信号波形如图8、图9所示。对比图6、图7可知,范例模块完全实现了1.3节所述例子的算法功能。
图8 A相电压在故障时刻前后的波形数据被FPGA范例模块处理后得到的第1~16个频带的数据波形
图9 A相电压在故障时刻前后的波形数据被FPGA范例模块处理后得到的第17~32个频带的数据波形
3.4 模块的输出延迟、运算速度、芯片资源占用情况
如图10所示,自开始仿真后,第2路采样值滤波的第1个有效数据输出是在432us时刻。所以,完成2路采样值处理的时间延迟在220us以内。
图10 FPGA范例模块仿真波形截图
在ISE环境下对本模块进行综合、布局、布线,在采用Xilinx的中等性能产品系列中速度最慢、运算资源最少的芯片xc7k70t-3fbg676的情况下,最终得到的结果是可以运行在200MHz以上,满足3.1节中调用IP时的要求。片内主要硬件资源的占用比例:Slice Registers,15%;Slice LUTs,17%;occupied Slices,30%;RAM块,48%;DSP硬核,40% 。
必须指出的是,本文所做工作的目的在于验证可行性、性能优势,而非寻找最优解。后续参与此方向研究的专家,尤其是经验更丰富的FPGA应用研发设计师,在保护算法设计师提供的约束条件的协助下,应该能找到性能、成本更趋近于最优解的具体实施方案。 |