基于FPGA的工业智能网关设计
2019-08-23练俊君
张 椅,张 仪,练俊君
(重庆川仪软件有限公司,重庆 401121)
0 引言
现场总线技术以其高度的开放性、高传输精度和可互操作性,在工业自动化领域获得了越来越多的应用。在传统工业领域,下层仪表通过现场总线的方式与控制系统进行通信。总线常采用菊花链式的拓扑结构,控制系统通过总线上的曼彻斯特码获取仪表上传的各种信息。由于这种两线制通信方式中,所有仪表共享总线,一旦总线出现问题可能造成整个通信网络的崩溃。现场总线技术采用的是串行数据传输方式,其传输速率低(仅为31.25 kbit/s),随着总线负载仪表的增多其传输距离逐渐下降。
针对现行的两线制通信的缺陷,提出将下层多个仪表的数据通过一个网关进行汇聚。网关和仪表之间采用点对点的通信方式。由于网关汇聚了多路仪表上传的信息,为了保证数据能够快速无误地传送到控制系统,使用现场可编程门阵列 (field programmable gate array,FPGA)对数据进行加工处理。充分利用FPGA的并行处理能力,同时对多路仪表的数据进行编解码,从而能够有效保障数据的传输速率。为了保证传输数据的准确性,在FPGA进行曼彻斯特编码时使用多种校验方式。
本文基于对FPGA和现场仪表通信的研究,将FPGA应用到现场仪表的通信网络中,利用FPGA的并行、高速处理能力,提出了一种基于现场总线高速通信的曼彻斯特编解码方法[1]。
1 曼彻斯特编解码
曼彻斯特编码电平跳变的规则是:低电平的中间时刻跳变表示‘0’,用高电平中间时刻的跳变表示‘1’。曼彻斯特码如图1所示。因而这样防止时钟同步的丢失,或来自低频率位移在贫乏补偿的模拟链接位错误。实际上,二进制数据被传输通过这个电缆,不是作为一个序列的逻辑1或0来发送的。它具有自同步能力和良好的抗干扰性能[3]。但每一个码元都被调成两个电平,所以数据传输速率只有调制速率的1/2。在工业控制领域,由于曼彻斯特码编码方式简单易行、无直流分量,且包含有丰富的时钟信息,被广泛用作高速基带数据传输。
图1 曼彻斯特码
2 基于FPGA的编解码设计
FPGA是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。FPGA具有可重复编程,易于维护,方便移植、升级和扩展,丰富的外设接口等优点,同时FPGA采用并行的处理方式,支持更快的速度和更高的带宽,满足实时处理的要求。结合FPGA开发的优势,利用Verilog HDL硬件描述语言完成了曼彻斯特编解码模块的设计,在此基础上加入了CRC校验、奇偶校验,进一步提高编解码器的检错能力,保证传输数据的正确性。
2.1 曼彻斯特编码
编码系统框图如图2所示。
图2 编码系统框图
①编码器首先将外部的并行二进制数据转化为串行信息。
②对串行数据进行曼彻斯特编码,再加上同步字和奇偶校验位。编码器逻辑如图3所示。
图3 编码器逻辑图
在每个周期的开头增加同步字,然后再输入数据进行编码。若输入数据为“1”,编码通过输出一个下降沿来表示;当输入数据为“0”时,编码则输出一个上升沿。数据输入完成后,对输入的数据进行奇偶校验,如果在输入的数据中“1”的个数为奇数,编码器输出一个上跳电平,反之若数据中“1”的个数为偶数则输出一个下跳电平。
2.2 曼彻斯特解码
曼彻斯特解码是编码的逆过程。解码过程分为同步字的校验识别、有效数据位的解码和奇偶校验三个部分。
解码的关键在于:必须监测同步字,才可以开始解码周期。故解码器必须不停地检测输入数据是否已有同步字。由于曼彻斯特码自带定时时钟,故可从数据中分离出同步时钟。采用传统的数字锁相环的方法分离时钟,然后将时钟和数据进行处理,使曼码数据转化为非归零二进制数据。解码系统框图如图4所示。
情到深处文自流,学生走入文本,与作者产生共鸣,这样的练笔离不开教师围绕文本内容展开的情感和语言的双重铺垫,学生情感的闸门一经打开,其创作的灵感就能如泉水一样喷涌而出。
图4 解码系统框图
①使用高频时钟扫描同步字头。
②检测到同步字头后进入解码周期,通过高频时钟扫描高低电平持续周期的长短来判定二进制码。
③对有效数据位解码完成后,进入CRC校验。
④奇偶校验。
⑤校验完成后,并行输出有效的二进制数据。
3 基于FPGA的智能网关
智能网关是一个用于系统中网络通信的中转服务设备,能够实现数据汇聚、数据分流和控制流、服务流传输。智能网关主要用来分担控制器的通信功能,让控制器能够更加专注于计算和控制功能,加快网络数据吞吐和通信效率,实现对多路智能仪表数据采集功能。智能网关架构如图5所示。
图5 智能网关架构图
智能网关基于Xilinx ZYNQ平台进行设计,主要负责三个方向数据流的处理和通信。智能网关与现场仪表(或其他智能终端)进行通信。负责将各个仪表(终端)的数据集中采集;对上通过以太网端口将控制流数据最终传送到控制器;同时将服务流数据传送到交换机,最终上传至云平台经过计算和处理,以页面终端或APP的形式呈现给用户。智能网关与现场仪表之间采用两线制进行通信,由于FPGA具有丰富的接口资源且独特的并行处理方式,因此智能网关能够与多组现场仪表并行通信,大大改善了数据的传输效率。同时,FPGA具有丰富的时钟资源,基于FPGA的曼彻斯特编解码模块能够大大提高数据的传输速率。
智能网关从总体结构上分为五个部分,参见图6智能网关详细框图如图6所示。
图6 智能网关详细框图
①FPGA芯片,内部由MAC IP-core[4]、BRAM、处理器等部件组成。其中MAC通过硬件描述在FPGA片内实现以太网MAC的功能。BRAM是FPGA片内的硬件逻辑实现的存储器,通过对应的硬件描述和参数配置实现各种缓冲区设计;处理器是由FPGA片内硬件逻辑组成的32位微处理器,主要负责主程序的运行和处理。
②以太网端口,主要由以太网PHY和网络变压器组成,完成网络数据收发的传输。
③串行FLASH,用来保存FPGA硬件代码和程序代码,便于FPGA芯片上电时加载。
④SRAM存储单元和电源。存储单元用来承担程序加载和运行时的缓冲区,以及智能数据的临时缓冲区。电源主要给FPGA芯片、各个端口以及存储单元供电。
⑤智能端口模组即曼码编解码模块,通过多组隔离的智能端口与智能仪表进行数据通信,并将采集到的数据送到处理器和存储单元。
智能网关从功能层次上可以划分为三个部分,主要包括以太网通信单元、核心处理单元和智能仪表(或终端)数据采集单元。以太网通信单元通过以太网端口发送和接受网络数据,内部设计了滤波器和对应的网络MAC处理,可有效抑制扭曲和控制数据包流动。以太网通信单元通过直接内存存取(direet memory access,DMA)将通过的数据送到核心处理单元
进行处理;智能仪表数据采集单元对下通信,经过通信线路能与多路智能仪表进行数据通信,同时将采集的多组数据经过双端口缓冲区传递到核心处理单元;核心处理单元经过FPGA内部处理器运行的程序完成主要的数据转存功能,将智能仪表数据采集单元的缓冲数据经过一定的排列通过以太网通信单元传送给上层设备。
4 结束语
当前,现场总线技术不论是在离散工业还是流程工业,都得到了广泛的应用。随着信息化技术的发展,智能化设备越来越多,数据来源与数据类型也不断增多,这给传统的仪表行业带来了巨大的挑战。传统的现场总线技术采用串行的数据传输方式,无法提供高速、可靠的数据传输手段。本文基于FPGA,提出了一种新型的工业智能网关方案。该方案不仅大大提高了现场仪表与上层设备的传输速率,而且解决了现场设备服务和运行数据无法处理及多个设备同时通信的问题。为工厂从自动化向数字化和智能化的转变提供了理论基础。