3.
基于FPGA实现保护算法的基本策略
这里介绍的基本策略,是针对在大多数保护算法中具有共性的基本数据流进行描述的,并不专指某种特定的保护类型,主要以分布式并行运算、流水线处理为特征,核心理念是“以硬件资源换性能”。
图2给出了保护算法模块的基本架构,虚线框内是本模块负责实现的功能。这里继承了经典的特征量计算、启动算法、动作算法、特殊工况识别等概念。
图2中从“数据、信号调度模块数据输出端口”输出的数据流分为两部分:采样值(必须为每个时间断面的SV数据集提供其采样时刻对应的全局时标,由原始输入数据自带或由校时模块、SV插值同步模块生成,以下简称“时标”)、相关配置信息送入“特征量计算子模块”,计算得到各种特征量之后,打上时标,发往“保护数据源调度子模块”;保护算法所需的其它数据(调理后的开入量信息、各类定值/控制字表、压板信息、时标、配置及其变更信息等)被直接送入“保护数据源调度子模块”。为方便讨论,以下约定每个采样值帧仅携带一个采样时刻获得的数据集(这一点可以由位于数据预处理环节的模块予以保证)。
图2中的“特征量计算子模块”计算保护算法所需的各种特征量(例如变压器保护中的各相差动电流三次谐波幅值)、生成处理过的采样值序列(例如对原始采样值序列执行滤波算法得到的各次谐波采样值序列),其间需要进行大量运算,这正是FPGA提供的分布式运算资源的用武之地。以此为基础,尽可能并行地进行各种特征量计算、采样值处理,同时对具体运算过程予以流水线化:每个运算单元每接收到一帧新的采样值数据,就将其中的各采样值与历史数据组合成一个新的数据窗,生成一个新的特征量、新的处理后采样值,同时打上这个新输入采样值帧携带的时标。各个特征量、采样值序列的计算由硬件上独立的模块予以并行执行,相较于CPU/DSP基于对运算单元进行时分复用的串行运算,具有显著的速度优势。
“保护算法数据源调度子模块”根据“起动元件子模块”、“保护特征算法实现子模块”、“特殊工况识别子模块”包含的各种具体算法的需要,对各种特征量数据流、处理过的采样值数据流、开入量数据流、定值控制字、压板信息、配置及其变更信息等进行挑选、复制、组合,以采样间隔为节拍,每节拍发送由一个采样脉冲对应的数据生成的数据集,并行分配到这三个子模块内部各算法单元的数据入口(同时提供时标),使这些算法单元可以专注于各自所负责算法的实现。
“起动元件子模块”、“动作特征算法实现子模块”、“特殊工况识别子模块”中的各算法单元在每个节拍(亦即采样间隔,下同)并行接收“保护数据源调度子模块”提供的数据集,并行、独立完成各自负责的起动条件判断算法、动作算法、特殊工况识别算法,输出相应的起动信号集合、动作信号集合、特殊工况识别信号集合(三者都携带时标)到“跳闸逻辑综合判断子模块”。
特别指出:在此环节,由于动作算法与起动条件判断算法、特殊工况识别算法并行实现,其所输出的动作信号未接受启动信号、特殊工况识别信号的约束,所以不能直接用于跳闸。
实现上述三个子模块,应采用与“特征量计算子模块”类似的流水线处理机制,即,每个算法单元每接收到一组新的特征量数据、处理过的采样值(都带时标),就将其与历史数据组合,形成一个新的数据窗,结合当前的(必要时调取历史的)开入量信息、各类定值/控制字表、压板信息、处理过的采样值数据集、配置信息等,在本节拍内完成各自所负责的算法,生成相应的带时标的起动信号、动作信号、特殊工况识别信号。
为此,在这三个子模块以及“特征量计算子模块”中,各个运算单元的每节拍数据处理周期都必须小于原始采样值数据的采样周期并留有裕度。以现代FPGA的速度,对于某个由专用硬件资源实现的具体的运算单元来说,在一个采样周期(例如20us,相当于4000个耗时5ns的FPGA主频时钟周期)内完成这些工作是完全有可能的 – 极端情况下(比如设计出了非常复杂的新算法或者算法要求的采样率非常高)还可以增加此单元所占用的节拍数,这将导致与此单元关联的保护动作时间相应加长。
“跳闸逻辑综合判断子模块”在每个节拍并行接收上述三个子模块输出的起动信号集、动作信号集、特殊工况识别信号集,将时标相同的三个信号集组合起来(即按时标对齐),形成一个二级集合。然后,在每个节拍,根据各种保护跳闸逻辑(例如零序过流保护跳闸逻辑)对信号源的要求,将一个二级集合(必要时调取历史二级集合)内各动作信号以及与之对应的起动信号集、特殊工况识别信号集选出来,进行逻辑运算(即用本节拍的各起动信号、特殊工况识别信号决定本节拍的各动作信号是否有效),最后将与各动作信号组合所对应的、并行完成的逻辑运算结果输出,形成本节拍输出的跳闸信号集。如果在相邻节拍某些跳闸信号出现“跳—不跳—跳”的循环,则需要根据设计需求、具体的保护算法,结合各种配置、状态、实时数据信息进行分析、权衡,综合判断最终输出的跳闸信号状态。
鉴于FPGA提供了海量运算资源,可以考虑在获取SV数据源时大幅度提高采样率,在“特征量计算子模块”中用高阶滤波器提升滤波性能、增加运算环节以补偿ALF性能的差异、降低对ALF性能的依赖程度,以及并行滤出更多物理量的两相/三相更多种频率、更高次的谐波数据序列,并对这些谐波数据序列并行进行二阶、三阶甚至更高阶的微分计算,同时详细记录其时标信息。保护算法工程师可以考虑在上述五个子模块中充分利用这些数据开发新的保护算法。
例如,构思基于多点密集采样值的用于以更高精度计算物理量幅值的新算法以替代经典的三点采样值积算法,对并行滤出的多个物理量的两相、三相高次谐波的幅值、相位之间的多重量值关系、时序关系进行关联分析,对并行滤出的多个物理量的两相、三相高次谐波的幅值、相位数据序列的n阶微分量之间的多重量值关系、时序关系进行关联分析,上述关联分析可以在多个、多种物理量的多种阶次的微分量(包括来自远端的处理后数据信息)之间以多种组合方式交叉进行、并行运算。这些工作的目的是提高运算速度/精度、发现新的故障特征信息 -- 众所周知,新故障特征信息的发现、有效提取,是继电保护技术获得突破的关键之一。
在“跳闸逻辑综合判断子模块”,可以采用受限于更多条件、更复杂的条件间逻辑关系、时序关系的跳闸判据,以期获得更好的可靠性、速动性、选择性、灵敏性。
在基于CPU/DSP的平台上,上述技术手段、思路往往因为运算量太大而被理所当然地视为纸上谈兵。现在,FPGA的资源优势为此类保护新算法的探索、开发、实现提供了硬件基础。
图3给出了上述流水线策略的一个简化示例。
图3中各物理量名称中横线后面的数字是时标的简化形式,表示参与生成这个物理量的最后一个采样值(此为示例,可以考虑倒数第m个采样值 -- 各特征量的m取值可以彼此不同,本身也可以随时间变化,以为保护算法提供尽可能多的技术手段)由第几个采样脉冲获得;图中加黑的物理量表示起动条件得到满足、动作信号有效、出现特殊工况、跳闸信号有效,对应的信号不加黑表示相反的状态。表格内的空白单元表示本采样间隔内相应的数据、状态是无效的。
本示例假设:采样间隔n生成的采样值在采样间隔n+1可用,对应的采样值时标为n;计算特征量1需要积累3个采样值1,计算特征量2需要积累4个采样值1以及4个采样值2;起动条件1、动作信号1、特殊工况1的判断都需要积累特征量1、开关量1各2个,起动条件2、动作信号2、特殊工况2的判断都需要积累特征量2、开关量2各2个;发出跳闸信号1需要动作信号1有效,并且起动条件1满足、特殊工况1、2都不被检出;发出跳闸信号2需要动作信号2有效,并且起动条件2满足、特殊工况2不被检出。
对图3的补充说明:由此前的叙述可知,流水级3中各子模块所包含的各算法单元是互相独立、并行运行的,这三个子模块之所以在图2、图3中分别加以表示,是为了适应保护算法的应用特征。从实现的角度来看,完全可以将其合并为一个包含三类算法单元的大的子模块。
进而,图3中的流水级也是可以合并的。例如,只要运算时间(略小于一个采样间隔)够用,流水级2就可以并入流水级1;在更理想的情况下,流水级1的最后一个节拍可以与流水级2、流水级3的第一个节拍合并为一个节拍。这种形式的节拍数减少将缩短保护动作时间,在实现过程中如何进行优化,取决于具体的设计目标、保护算法、保护算法的实现策略、FPGA应用设计代码的优化策略。
再进一步,基于FPGA的海量运算能力,利用上述实现策略,传统的启动算法+动作算法+特殊工况识别算法的架构也是可以考虑予以简化的。也就是说,以时标为基础,把三种算法及其综合判断运算合并执行(在图3中表现为将流水级2、3、4合并为一个流水级),取消各自的独立性并予以归并化简,每个节拍输出一个最终的跳闸信号集。
篇幅超限,待续...... |