APP下载

一种应用于柔性直流输电控制保护系统的波特率动态自适应通信技术

2022-07-04董朝武李哲蒲莹钟启迪李明郝俊芳

电力建设 2022年7期
关键词:波特率解码时钟

董朝武, 李哲,蒲莹,钟启迪,李明,郝俊芳

(1.国网经济技术研究院有限公司, 北京市 102209;2.许继集团有限公司,河南省 许昌市 461000)

0 引言

在以新能源为主体的新型电力系统构建背景下,柔性直流输电技术在远距离清洁能源友好消纳,推动双碳目标实现方面发挥了重要作用[1-3]。控制保护系统是保障柔性直流输电安全稳定运行的关键[4-7]。 柔性直流输电相较于常规直流输电,对控制保护设备的稳定性和可靠性要求更高[8]。控制保护设备应具备强大的实时运算和数据处理能力,具有更高速度的外部通信接口,能够适应于高温、高湿的海上风电送出等多种场景[9-10],因此采用了大量具备高速数据采集、快速运算处理等特点的高端芯片。 我国柔性直流输电工程中,控制保护设备核心元器件所使用的芯片绝大部分为已在电力系统应用多年的进口芯片,技术严重受制于国外,迫切需要做好进口芯片与技术的断供风险应变准备,开展柔性直流输电控制保护系统芯片的国产化替代工作,保障我国的电力安全[11-12]。

在控制保护系统国产化替代背景下,柔性直流控制保护系统与电子式互感器合并单元高速通信接口相关的国产化替代,既要满足高速通信的需求,也要保证与以往系统通信的兼容性。

电子式互感器合并单元的通信协议通常采用IEC60044-8,该协议规定了从互感器到控制保护装置传输的数据格式,物理层采用FT3 帧格式[13],以曼彻斯特编码(以下简称曼码编码)方式编码。 由于常规直流对采样速率要求不高,常用的5 Mbit/s、10 Mbit/s、20 Mbit/s 三种通信速率即可满足通信要求。 而柔性直流输电中电子式互感器的采集频率达到100 kHz,必须以40 Mbit/s 的通信速率才可完成完整的数据传输。

在常规直流输电的应用中,FT3 解码算法需要事先指定通信帧的传输波特率,由于不同厂家的光接收或发送器件对光电信号相互转换时对应的高低电平的定义存在差异,有可能导致控制保护设备解码失败,因此需要针对每一种传输速率及曼码编码方式设计不同的解码算法,并根据实际应用要求进行选择或设置。 适配不同的速率需要重新下载对应版本的解码程序,一方面大大增加了程序的维护难度,另一方面也严重影响了工程调试效率。

本文在国产化柔性直流控制保护系统基础上,基于国产FPGA 芯片,针对IEC60044-8 中的FT3帧格式,设计一种解码方法,可以对输入光信号的信号特征进行动态扫描,准确识别光信号波特率及曼码编码方式并完成自动调参,从而在不需要外部干预的情况下,对符合规范的不同通信速率及编码方式的信号进行动态自适应正确解码。

1 柔性直流控制保护外部通信协议概述

柔性直流控制保护系统外部通信通常使用的通信协议为xlinx Aurora、IEC60044-8、TCP/IP 等。对于控制保护系统与电子式互感器合并单元高速通信的国产化替代,xlinx Aurora 协议通用性不强,仅限于使用xlinx FPGA 器件的装置,无法实现国产化。 TCP/IP 协议虽然具有兼容性强、传输速率高等特点,但会额外增加电路设计、程序设计的复杂度。 IEC60044-8 的FT3 帧格式具有良好的数据完整性,其帧结构使它可用于高速率的多点网络同步数据链接,并且已在电子式互感器合并单元中大量应用,因此研究其协议内容并设计更加通用性的解码算法,是解决其国产化替代后的兼容性问题的关键。 以下分别从物理层和链路层两方面介绍该通信协议。

1.1 物理层

从合并单元到二次设备之间,通常采用光纤连接传递信号[14],并将光线亮定义为传输数据的“1”位,光线灭定义为传输数据的“0”位。

信号编码采用曼彻斯特编码[15],可以将时钟信号和数据结合在一起,接收端从信号中分离出时钟,从而实现对通信过程中收发双方的数据同步。 正常情况下,二进制“1”被编码为从低位到高位跳变,二进制“0”被编码为从高位到低位跳变,这种曼码编码方式在本文中也被称为“正曼码编码”,相反的编码方式在本文中被称为“反曼码编码”。 由于波特率表示单位时间内传送的码元符号的个数,由此可知,曼码编码后的数据波特率是编码前的2 倍。

原始数据及经过正曼码编码、反曼码编码后的数据如图1 所示。

图1 正反曼码编码Fig.1 Positive and negative Manchester codes

1.2 链路层

IEC60044-8 协议的链路层选用FT3 格式,其具有良好数据完整性的优点,在数据传输的过程中,并不需要二次设备进行应答。

FT3 帧由“帧头”、“有效负载”、“循环冗余校验(cyclic redundancy check, CRC)位”及“空闲位”几个部分组成,其中“帧头”为固定的16 进制数据0x0564,“有效负载”根据标准帧和扩展帧的不同分为3 个或者4 个数据块,每个数据块包含8 个16 bit的数据。 每个数据块后是一个16 bit 的CRC 位,“空闲位”则是二进制的“1”[16-17]。 为提高通信的可靠性,帧与帧之间应至少传输70 个“空闲位”[18],以便驱动接收器为即将来临的传输做准备。 链路层的通信数据帧组成如图2 所示,其中空闲位的个数应大于等于70 个。

图2 链路层通信数据帧组成Fig.2 The composition of the communication data frames of the link layer

2 波特率动态自适应算法设计架构

在明确了物理层、链路层的编码方式及帧格式后,即可设计相应的算法实现编解码。 在对曼码编码的数据进行解码的过程中,最终需要从编码后的数据中提取出恢复时钟,利用恢复时钟与数据的同步性恢复出正确的数据。 在对FT3 帧的解码过程中,传统的曼码解码必须要提前知道编码数据的波特率,并且必须保证从光器件接收并输入到FPGA 中的曼码编码信号为正曼码,才可以实现正确的解码。

本文设计的波特率自动适应算法可以在不指定波特率的情况下,对输入信号进行动态扫描,根据输入信号的特征,再结合FT3 协议的帧格式,对输入信号的波特率、正反曼码编码进行自动识别与锁定,其架构设计如图3 所示。

图3 波特率动态自适应解码流程图Fig.3 The decoding flow chart for the dynamic baud rate

算法实现的关键为原始数据解码及帧头检测。原始数据的解码按照检测特征点—计算波特率—恢复时钟的顺序执行,任何一个流程的失败都会返回初始化状态重新执行解码流程。 上述流程中,对特征点完成检测并成功计算出波特率即为波特率动态自适应的过程,也是本算法的核心。 在完成数据解码后,通过帧头检测判断解码后的数据中是否包含协议中的帧头,若不包含则对解码数据的极性翻转,直到成功提取到帧数据。 初始化到成功提取帧数据的过程发生在最初建立通信链路的阶段,这个过程利用最初几帧数据进行识别并自动调整参数,完成参数调整后即进入正常解码流程。

3 波特率动态自适应算法实现

3.1 曼码编码信号特征

曼码编码是一种双向编码,通过电平的高低转换来表示数据“0”或“1”,编码后波特率将翻倍。 若编码前信号为连续的高电平“1”,或者连续的低电平“0”,将无法对待译码信号的波特率信息进行准确判断,如图4 所示。

图4 连续高低电平可按两种波特率解码Fig.4 Schematic diagram of two baud rate decoding for continuous high and low levels

从图4 中可以看出,对于同样的波特率为n的待译码信号,可以译码为波特率为n的信号“11”或者“00”,也可以将其译码为波特率为2n的信号“1010”。 因此要从待译码的数据中恢复出正确的时钟信号以及数据,关键是要识别出波特率并从正确的译码起始点位开始解码。

3.2 波特率动态扫描及时钟恢复

从上述分析可知,连续不变原始数据经过编码后将发生失真,无法解码。 根据信号特征,若原始信号有变位,变位处的信号经过曼码编码后其脉冲宽度是非变位处的2 倍,因此可以在信号的解码过程中,对信号的最宽脉冲宽度和最窄脉冲宽度进行动态扫描,若最宽脉冲宽度是最窄脉冲宽度的2 倍,则最宽脉冲的中点处即为原始信号跳变的特征点位,即变位点。经过动态扫描并检测到变位点后,可将该变位点作为一个曼码编码位的起点,从而确定出待译码的时钟信号在编码后数据中所处的正确位置,变位点所处位置如图5 所示。

图5 变位点在编码数据中的位置Fig.5 The position of the change point in the coded data

在实际工程中,两帧数据之间一般会被全部填充为空闲位,而连续的空闲位编码后并不包含变位点。也就是说,动态扫描变位点的时间长度一定要覆盖空闲位出现的时间长度。 对于工程中常用的几种波特率传输协议,根据一般工况的信号传输帧率,即可确定空闲位最多出现的次数,从而确定出动态扫描变位点所需时间。 在实际应用中,可以根据经验值选择一段比较长的时间即可。

识别出变位点后,即可恢复出正确的数据编码时钟。 使用高频时钟对数据编码时钟进行采样并计算两者之间的关系,即可确定信号的波特率。 为保证波特率可以被正确稳定地识别,高频时钟的频率至少应为待识别信号编码时钟频率的4 倍。 根据协议标准,编码后信号的上升和下降时间由幅值的10%和90%两点确定。

在FPGA 中,可以使用锁相环模块来产生高频时钟,并依据算法设计相应的解码逻辑。 考虑到稳定性,FPGA 产生的时钟频率不易过高。 以40 Mbit/s波特率曼码数据为例,使用锁相环产生160 MHz 高频采样时钟进行识别即可,如图6 所示。

图6 160 MHz 采样时钟下40 Mbit/s 波特率信号的采样落点Fig.6 Sampling point diagram of 40 Mbit/s baud rate signal under 160 MHz sampling clock

从图6 中可以看出,在理想的信号质量下,160 MHz时钟在40 Mbit/s 波特率编码后的数据含有变位点的宽脉冲处共有8 个采样落点,若考虑到信号波动产生的误差,可采用式(1)、(2)计算得到。 实际检测出采样落点个数在7 ~9 之间即可判断出待译码数据为40 Mbit/s波特率。

式中:N为理想信号在160 MHz 时钟下的理论采样落点数;Nmin、Nmax为考虑信号波动的最小、最大落点数。

根据公式(1)、(2)可计算出4 种常用波特率对应采样落点的个数,如表1 所示。

表1 160 MHz 采样时钟下常用波特率的采样落点数Table 1 The number of sampling points of common baud rate under 160 MHz sampling clock

3.3 正反曼码自适应

正反曼码的自适应可以解决由于不同厂家协议、不同硬件之间的差异引起曼码编码正反特性与标准不同而导致的通信失败。 通常,曼码编码后的数据的正反特性不影响信号编码时钟等特征的动态扫描及恢复,在成功恢复出时钟并完成波特率识别,利用该恢复时钟解码得到解码后的数据后,需要对已恢复数据的正反性做出正确判断。

根据前文所述,FT3 帧由帧头“0x 0564”、有效负载组成,帧与帧之间填充尽可能多的空闲位。 实际应用中是通过识别帧头来开始一帧数据提取的,如果数据的正反性发生翻转,最显著的特征是无法在正确的位置检测到帧头, 例如原始数据中若包含“0xFA9B”,经过翻转后也将会被识别为帧头,因此仅根据解码后的数据是否包含帧头并不能对数据的正反性做出正确的判断。

数据的正反性发生翻转的另外一个重要特征是所有恢复数据中的空闲位全部发生翻转。 由于正确的空闲位为“1”,因此恢复的数据中将出现大量的“0”。 因此可以通过检测恢复数据中“0”的个数来判断是否发生数据正反性翻转。

有效负载由8 个16 bit 的数据和一个16 bit 的CRC组成,若不考虑FT3 有效负载的实际传输值,假设传输的8 个16 bit 数据全部为0,根据CRC 的计算规则,此时的CRC 为0xFFFF,一个数据集最多出现128 个连续的“0”位。 因此,在首次识别帧头的过程中,把数据当作曼码处理,若检测到有超过连续128 个“0”位的出现,即可对恢复数据进行翻转,重新检测帧头。

一般情况下,信号在传输的过程中,其传输数据的曼码正反不会再次发生翻转,因此当检测到空闲位后紧跟的帧头后,即可将翻转与否进行锁定,认为其不再发生变化。

在完成波特率识别及正反曼码锁定后,即可对数据进行正确解码,后续数据的恢复及CRC 校验等操作可按照GB/T 20840.8—2007[13]描述的方式进行。

4 实验验证

实验过程中,采用IEC60044-8 专用测试仪模拟信号发送,对本文设计的波特率动态自适应解码算法进行验证。 模拟信号的报文类型选择IEC60044-8 国网扩展帧,采样频率配置为40 点/周波。

验证本文算法的解码装置使用基于HCM5000G系统的光接收板卡SORG,其中解码芯片为国产化FPGA,实验通过信号监视工具对数据接收后的解码情况进行监视。 在信号监视图中,receive_data 表示接收并解码得到的传输数据,clk_gen 表示从传输数据中获得的恢复时钟,BAUD 表示自适应解码算法自动识别到的波特率,Manchester_polarity 表示自适应解码算法自动识别到的信号正反曼码编码方式。

整个实验在保证光接收板卡不掉电不重启的情况下,通过调整测试仪发出信号的光波特率,使用曼码编码,分别以5 Mbit/s、10 Mbit/s、20 Mbit/s和40 Mbit/s 波特率发送数据至光接收板卡SORG,使用专用工具监视SORG 板卡中FPGA 解码得到的信号,如图7 所示。 从图7 中可以看出,使用本文提出的解码算法,可以成功恢复时钟信号并完成同步,能够对不同波特率进行准确识别,实现数据的正确接收及解码。

图7 不同波特率下的监视信号Fig.7 Monitoring signals at different baud rates

调整测试仪,在40 Mbit/s 波特率下,通过对发送的光信号电平取反来模拟反曼码编码的情况,得到的信号解码如图8 所示。 从图8 中可以看出,被监视信号Manchester_polarity 改变为高电平,并成功完成了数据接收,实现了对反曼码编码信号的准确识别及解码。

图8 40 Mbit/s 反曼码编码的监视信号Fig.8 Monitoring signals at 40 Mbit/s baud rates with negative Manchester encoding

经过测试,使用本文所述的解码算法,得到的监视信号与预期结果吻合,实现了对不同波特率和正反曼码编码信号的动态自适应,完成了数据的正确接收及解码。

5 结论

柔性直流输电控制保护系统的国产化替代中,对于电子式互感器合并单元的通信速度要求很高,同时需要考虑与原有系统的兼容性问题。 传统的IEC60044-8 通信解码算法,无法实现信号的自动识别及解码,增加了国产化替代的难度。 为了解决这个问题,本文设计了一种波特率动态自适应算法,通过对输入信号进行动态扫描,自动识别出信号的波特率并调整相应的参数,完成正反曼码的识别及正确接收和解码。

在实际工程中,使用本文设计的解码算法可以实现信号即通即用,无需额外配置,可以解决柔性直流系统国产化替代中的兼容性问题,对于全面提升柔性直流输电控制保护系统自主化、智能化程度,推进柔性直流系统国产化进程有重要意义,为我国直流输电系统的安全运行提供坚强保障。

猜你喜欢

波特率解码时钟
UART 波特率检测电路的FPGA 设计算法与实现
《解码万吨站》
别样的“时钟”
古代的时钟
CAN 总线波特率自适应程序设计
解码eUCP2.0
NAD C368解码/放大器一体机
Quad(国都)Vena解码/放大器一体机
浅谈西门子S7—400与S7—200的通讯实现方法
波特率自适应的CAN驱动在嵌入式Linux下的实现①