基于FPGA的工业现场总线侦听器的设计与实现*

2014-07-18 11:59宛世源唐小琦
组合机床与自动化加工技术 2014年1期
关键词:网卡数控系统以太网

宛世源,宋 宝,唐小琦

(华中科技大学 国家数控系统工程技术研究中心,武汉 430074)



基于FPGA的工业现场总线侦听器的设计与实现*

宛世源,宋 宝,唐小琦

(华中科技大学 国家数控系统工程技术研究中心,武汉 430074)

分析了网络侦听在工业现场总线中的应用需求以及目前工业现场总线侦听的应用状况,在EtherCAT侦听器和网络转换网关设计的基础上提出了一种基于FPGA的总线侦听器设计方法并加以实现,采用了NCUC-Bus工业现场总线进行了侦听实验,实验结果表明所设计的侦听器能够实时地侦听总线通信链路并准确地解析侦听到的数据帧。

网络侦听;工业现场总线;数据帧

0 引言

随着数控加工朝着高速高精发展,工业现场总线已经成为了数控系统通信的主流。为了方便研究人员开发调试总线以及用户更好地使用和维护总线,需要一种侦听总线链路通信状态,实时解析通信数据的总线侦听器。

工业现场总线的侦听一般借助于以太网的侦听,也就是将总线数据帧发送至以太网卡,然后侦听网卡上的数据帧,从而实现对总线的侦听。在目前工业现场总线侦听的应用中,文献[1]利用德国倍福公司开发的侦听器将EtherCAT总线数据帧发送至以太网卡,捕捉网卡上的数据帧,然后根据EtherCAT数据帧格式对捕获到的数据帧进行解析,实现了对EtherCAT总线的侦听。但是这种侦听器只适用于以太网兼容的工业现场总线。文献[2]设计了基于DSP和FPGA的网络转换网关,实现了TCP/IP协议,完成了工业现场总线与以太网之间的互联通信,这样就能够实现对非以太网兼容的工业现场总线的侦听。在这两种设计方法的基础上,本文裁剪了文献[2]方法中硬件结构,只采用FPGA设计了一种硬件结构相对简单,通用性相对较好的总线侦听器。

1 总线侦听的实现原理

工业现场总线一般为主从结构,侦听器串联在通信链路中,将总线数据帧转换为以太网帧,发送至上位机(PC),同时将接收到的总线数据帧原封不动地转发至下一个从站,这样不会影响到总线的正常通信。拓补结构如图1所示。

图1 总线侦听拓补结构

在以太网侦听中将网卡设置为混杂模式就能捕获任意一帧经过网卡的数据[3-4],因此只要将总线数据帧封装成以太网帧发送至PC网卡就能借助以太网的侦听来实现总线的侦听,从而省略对TCP/IP协议的实现。如图2所示,以太网帧包含6个域,通过填充这6个域来实现以太网帧的封装。①前导码:前导码前7个字节的值为0X55,最后一个字节的值为0XD5;②目的地址:由于网卡设置为混杂模式,目的地址可以随意

设置;③源地址:由于网卡设置为混杂模式,源地址可以随意设置;④类型:类型域为0X0800表示IPV4数据报;⑤数据:数据域由总线数据帧来填充;⑥CRC:根据不同的数据帧计算得到。

图2 以太网帧的封装

这种封装方式屏蔽掉了总线数据帧格式的不同,只需要将总线数据帧原封不动地填充到以太网帧的数据域,因此对于不同协议的工业现场总线它都是适用的。

侦听器硬件架构如图3所示,采用的FPGA为EP2C5T144C8,相对于文献[4]中DSP(TMS320F2812) +FPGA(EP2C8Q208C8)的硬件架构,它的硬件是相对简单的。FPGA完成组帧、转发功能,网络芯片DM9161A实现数据的接收和发送。采用RJ45网口来连接PC、火线口和ST光纤口连接从站,能够实现三种不同传输介质间的通信转换。

图3 总线侦听器硬件结构

总线侦听上位机是基于以太网侦听设计的,主要功能是侦听、解析以及显示总线数据帧。它的结构如图4所示,主要由侦听模块、解析模块和显示模块三个部分构成。

图4 侦听器上位机结构

侦听模块侦听网卡上的以太网帧,由解析模块取出其数据域,然后根据相应的总线协议进行解析,显示模块对解析的数据作界面显示。

2 总线侦听器的FPGA设计

图7 Signaltap仿真

总线侦听器的FPGA程序采用自底向上的设计方法,主要实现了总线数据帧和以太网帧之间的转换以及对总线数据帧的转发。主要包括5个模块:①转发模块;②帧长度获取模块;③数据缓存模块;④CRC计算模块;⑤帧封装模块。整体架构如图5所示,输入信号为接收数据有效标志rxdv_m,总线数据rxd_m[1..0],以及时钟phy_clk,输出信号为转发总线数据txd_f[1..0],发送使能txen_f,以太网数据txd[1..0],发送使能txen。

图5 FPGA程序整体架构

在FPGA程序设计中数据的转发在接收到数据的同时进行这样可以减少由于侦听器的转发带来的通信延迟,数据的缓存区不能够溢出,一般总线数据帧不会超过1000个字节,因此深度为10(1024个字节)的缓存区是足够的。CRC的计算和帧的封装在新的一帧数据到来时就开始,这样能够确保CRC及时计算完成以及在下一帧数据到来之前已经封装完毕发送出去。在这些模块中CRC计算模块是最为关键的,调试时通过4个固定的字节0XFF来调试CRC计算模块,如果计算时序正确的话,这4个字节的CRC计算结果是0X00000000,最后可以通过IRIS发包软件来确认CRC计算模块,方法是IRIS给侦听器发送一帧自己设定好的数据,然后用CRC模块对这帧数据计算CRC,通过Signaltap观察计算结果,如果与IRIS添加的CRC校验相一致,那么CRC计算模块是准确无误的,这样就可以放心地封装以太网帧。

程序的流程如图6所示,当有通信数据时,转发数据,存储数据,获取数据帧长度,这些都是并行处理的。然后开始计算CRC,封装以太网帧,没有通信数据时就处于空闲等待状态。

图6 FPGA程序流程

行仿真观察,采用的工业现场总线为NCUC-Bus。在图7中rxd_m是接收到的NCUC-Bus帧,crc32是计算得到的CRC,txd是封装后发送的以太网帧。

3 实验验证

采用图1的拓补,使用华中8型数控系统,3个伺服,3个伺服电机,侦听器以及一台普通的PC,连接好设备,上电,操作数控系统进行通信,打开上位机,捕获数据,可以看到侦听到的一系列总线数据帧,点击想要查看的数据帧就可一看到这帧数据的具体内容,如图8所示。

图8 侦听到的数据帧(左)帧解析的详细结果(右)

4 结束语

本文基于FPGA设计的工业现场总线侦听器能够完成工业现场总线和以太网之间的通信转换,实现了对NCUC-Bus总线的侦听,为总线的开发调试和维护使用提供了一个有效的工具,这种设计方法具有硬件结构相对简单,通用性较好的特点,对于其他形式的总线侦听或许有一定的借鉴意义。

[1] 刘喆,郇极,刘艳强.基于XML的EtherCAT工业以太网协议解析技术[J].北京航空航天大学学报,2011(9):1087-1090.

[2] 陈明,宋宝,唐小琦.基于DSP和FPGA的网络转换开关[J].计算机应用,2011(10): 2618-2620.

[3] 李少凡,汪为农.网络侦听器的实现及其优化[J].上海交通大学报,1998,32(10)84-86.

[4] 王英龙,王连海.网络侦听以及反侦听的原理和实现[J].计算机应用研究,2001(12):61-63.

[5] 宋宝,陈灏,唐小琦.现场总线NCUC-Bus的技术特点与应用[J].机床与自动化,2012(8):58-61.

[6] Clive “Max” Maxfield. FPGA权威指南[M].北京:人民邮电出版社,2012.

[7] 周义刚,何岭松.在嵌入式PC上实现数控机床的网络监控和远程诊断[J].机床与液压,2004(10):270-273.

[8] 张向利.基于以太网的数控系统现场总线技术研究[D].武汉:华中科技大学,2008.

[9] 胥军,方彦军.嵌入式现场总线协议转换网关开发[J].计算机工程,2006,6(12):255-257.

[10] 邓卫,裴玮,齐智平.基于ARM技术的以太网CAN现场总线协议转换网关的设计与实现[J].机电一体化,2007,13(8):28-33.

(编辑 李秀敏)

The Design and Implementation of Industry Field Bus Sniffer Based on FPGA

WAN Shi-yuan, SONG Bao, TANG Xiao-qi

(National Numerical Control System Engineering Research Center, Hua Zhong University of Science and Technology, Wuhan 430074)

The need and current application status of network sniffing on the industry field bus is analyzed. Based on the sniffer of EtherCAT and the network conversion gateway, a design of bus sniffer by FPGA is proposed and implemented. Experiment with NCUC-Bus also verifies that the bus sniffer can monitor the communication link in real time and parses the frame exactly.

network sniffer; industry field bus; data frame

1001-2265(2014)01-0093-03

10.13462/j.cnki.mmtamt.2014.01.026

2013-05-03;

2013-05-22

高档数控机床与基础制造装备”科技重大专项“开放式高档数控系统、伺服装置和电机成套产品开发与综合验证(2012ZX04001012);高档数控机床与基础制造装备科技重大专项“高精度、高分辨率绝对式光栅旋转编码器研制(2012ZX04001041)

宛世源(1989— ),男,湖南邵阳人,华中科技大学硕士研究生,主要研究方向为数控技术、现场总线,(E-mail)wan_shiyuan@qq.com; 唐小琦(1957—),男,湖北邵东人,华中科技大学教授,博士生导师,博士,主要研究方向为数控技术、交流伺服驱动、非线性控制。

TH165; TN915 .05

A

猜你喜欢
网卡数控系统以太网
基于1500以太网养猪场的智能饲喂控制系统的设计与实现
部署Linux虚拟机出现的网络故障
Server 2016网卡组合模式
基于FANUC 32i A数控系统的外部测量设计
西门子840D sl数控系统在SC125大型车铣镗床技术改造中的应用
基于FANUC Oi mate TD数控系统的手动功能开发
数控系统中GUI软件平台设计和实现
谈实时以太网EtherCAT技术在变电站自动化中的应用
挑战Killer网卡Realtek网游专用Dragon网卡
浅谈EPON与工业以太网在贵遵高速公路中的应用