EtherCAT主站与主站通信协议的研究与实现*

2017-02-15 10:27党选举李帅帅伍锡如
组合机床与自动化加工技术 2017年1期
关键词:主站数控系统以太网

党选举,李帅帅,伍锡如,姜 辉

(桂林电子科技大学 电子工程与自动化学院,广西 桂林 541004)

EtherCAT主站与主站通信协议的研究与实现*

党选举,李帅帅,伍锡如,姜 辉

(桂林电子科技大学 电子工程与自动化学院,广西 桂林 541004)

EtherCAT是目前最高速的工业现场总线网络。由于其高带宽利用率,低堆栈延迟、低交换机延迟等优点,近些年被广泛应用于数控机床系统。为满足EtherCAT主站间的通信,进一步扩展EtherCAT组网功能,为构建EtherCAT工业复杂网络提供技术支持,在不影响原有主站与从站通信功能情况下,设计了支持主站与主站之间通信的新协议,扩充IGH开源驱动功能,在AM3358处理器硬件平台上实现了EtherCAT主站与主站的通信。分别在实时RT-Patch linux系统和原生linux系统中对设计方案进行测试,结果表明该方案运行稳定且可以满足主从、主主之间相互通信,满足了工业组网需求。为实现EtherCAT数控系统复杂网络的建立和大数据的快速采集,解决了主站与主站之间通信的关键问题。

EtherCAT;主站;现场总线;大数据采集

0 引言

实时以太网是常规以太网技术的延伸,为满足控制领域的实时通信要求[1],德国倍福自动化公司提出了EtherCAT实时工业以太网技术。在数控系统领域,沈阳机床i5智能数控机床使用EtherCAT总线系统显著提高了工业效益[2]。现有的大量研究都集中在主从的构建或者主从间通信中,如在ARM构架上构建支持主从通信的EtherCAT主站[3-5],高性能从站的设计[6],从站同步时钟的优化[7]及其EtherCAT时序特性分析[8]等。其所研究的EtherCAT总线结构主要是单个主站独立控制多个从站,主站各有属于自身的从站单元,主站与主站间无法交换共享数据。为构建工业数控系统复杂网络,实现数控系统多轴信息的快速传输,进行工业大数据的采集,独立的主站与从站通信并不能完全满需求,难以真正的实现分布式架构,不利于对于数控系统中大数据的传输。因此该文深入研究EtherCAT总线通信协议,采用EtherCAT协议中的保留数据类型,进行主站与主站之间的通信。

如今为解决大数据难以传输处理问题一般系统采用分布式架构。主站与从站通信,是分布式架构一个局部基本单元,只有局部基本单元之间相互通信,才可以为构建EtherCAT工业数控系统复杂网络提供基础保障。主站与主站通信正是为搭建复杂网络提供了可行方案。

为了提高普适性,选用linux系统作为开发平台。德国IGH公司提供的EtherCAT Master for Linux主站驱动,其遵循GPLv2开源协议[9],但此代码仅支持主站与从站之间的通信,因此该文在IGH发布的主站开源代码的基础上,通过协议补充,扩充驱动功能,构建了支持主站与主站之间通信的系统。

1 程序运行环境的实现

1.1 实现EtherCAT主站的软件结构

IGH公司提供的主站驱动支持原生非实时linux操作系统和实时扩展如RTAI、XENOMAI、RT-Patch等实时linux系统[9]。如图1所示主站基本通信结构图,其主要由包含各种连接硬件接口的硬件层,负责linux调度、算法处理的内核层,供应户调用的应用层三部分组成。

图1 主站基本通信结构图

1.2 实现主站的硬件平台

AM3358是基于 ARM Cortex-A8内核带有NEON协处理器高性能处理器。其最高主频可达1GHz;集成2个可编程实时单元PRU,PRU可配置成为EtherCAT从站功能模块;具有单错检测(奇偶校验)的 32KB/32KB L1 指令/数据高速缓存;集成2个工业用千兆以太网MAC(10/100/1000MHZ)[10]。文中把其中一个网口作为从站连接口,另外一个作为主站与主站之间通信连接口,主站连接示意图如图2所示。

图2 主站连接示意图

2 主站驱动扩展与实现方法

2.1 EtherCAT数据帧分析

EtherCAT数据基于以太网数据帧进行传输,数据帧类型为0x88A4,其部分帧结构示意图如图3所示。

图3 EtherCAT部分帧结构示意图

图3中,对于EtherCAT头部分,其中的EtherCAT数据长度为整个EtherCAT报文部分的数据长度,对于类型,其值为1表示主站与从站通信的数据帧,其余值保留。但为了主站之间进行通信,文中规定在EtherCAT头中的类型为2表示该数据帧为主站与主站通信数据帧,因此只需补充并完善驱动代码,使之在接收数据时识别该以太网帧的类型位就可以识别是发往从站的数据帧还是主站间通信的数据帧。

2.2 主站运行阶段

EtherCAT Master for Linux主站驱动按照功能不同的划分,可划分为孤儿阶段、空闲阶段和可操作阶段三个阶段,其示意图如图4所示。

图4 主站驱动运行阶段

图4中,在孤儿阶段,主站等待以太网设备连接;在空闲状态,主站已经连接了以太网设备,但是应用空间并没有对主站请求。此时主站会自动扫描从站总线并等待应用空间的操作。同时,命令行工具可以访问总线,但是由于缺少总线配置,不能进行过程数据的交换。文中修改驱动代码后,在此阶段,主站除扫描总线上的从站外,主站另一端口还需要扫描对应总线上的其它主站设备;在操作状态,主站被应用层请求,此时可对总线上从站进行配置也可进行过程数据的交换。

2.3 主站对数据帧的访问

在空闲阶段,每个主站将通过不同的端口自动扫描识别总线上从站和其它主站,根据EtherCAT协议,当主站对从站的扫描时,由于EtherCAT帧在从站之间传输是顺序的[11],因此一个子报文可以完成对多个从站的访问,在数据帧的长度允许范围内,一个数据帧可完成多个从站的扫描。但是在主站识别其它主站时,主站之间并行,所以每个数据帧只能完成对一个主站的访问。

3 主站的实现技术

3.1 主站对总线的扫描流程

在主站代码中,主站对总线的扫描是在空闲线程中进行的,在没有应用请求的状态下,主站驱动只会运行在空闲线程,在该阶段执行的具体函数由状态机根据不同的判断条件执行不同的回调函数,进而有序的循环执行。其运行基本流程如图5所示。

图5 空闲线程运行流程图

3.2 主站数据结构的扩充

原生的驱动代码中,描述主站的结构体中没有针对其它主站的描述,文中对于描述主站结构体struct ec_master进行扩充,需在该结构体内添加如下代码:

structec_master{

……

struct other_master *com_master;

unsigned int master_count;

ec_datagram_t to_master_datagram;

ec_datagram_t exchange_master_datagram;

struct list_head other_master_queue;

}

其中对于其它主站的结构体定义为:

structother_master{

struct list_head queue; //主站链表

unsigned int alias;//主站的别名

uint8_t macs[6];//主站间通信端口的MAC

unsigned int slave_num;//主站对应从站数

ec_master_phase_t phase; 主站状态

unsigned long clock;//主站时钟

unsigned char user_datas[1024];//用户数据

};

文中对struct ec_master额外增加了两数据报,其中数据报to_master_datagram为主站与主站间通信的数据报。exchange_master_datagra为主站接收到通信数据报后处理信息的缓存数据报。

3.3 主站发送数据帧

IGH发布原生的代码中,有冗余支持,但是冗余通信端口也是主站与从站通信端口,为使代码支持主站与主站间通信,文中将冗余端口的功能修改为主站与主站通信端口,因此在主站空闲阶段中,文中主站间通信数据报to_master_datagram的发送设备应指定为冗余端口,具体发送函数可为:

ec_datagram_brd(&master->to_master_datagram,〗 0x0001, 16);

ec_datagram_zero(&master->to_master_datagram); master->to_master_datagram.to_send_type〗=EC_DATAGRAM_TO_MASTER; master->to_master_datagram.device_index 〗=EC_DEVICE_BACKUP;

ec_master_queue_datagram(master, 〗&master->to_master_datagram);

ec_master_send_datagrams()。

3.4 主站接收数据帧发送数据帧

接收数据帧的底层驱动函数无需任何的改变,处理函数进行修改,修改后的接收处理函数流程图如图6所示。

图6 接收处理函数流程图

对于接收到的主站间通信数据,只需要把接收到的数据帧的数据存储在指定内存中,然后加入到链表,使用时遍历该链表即可。文中定义函数ec_master_queue_master()用来将其它主站信息放入链表,主要代码如下:

list_for_each_entry(queued_master, 〗&master->other_master_queue, queue) {

if(memcmp(queued_master->macs, 〗bus_master->macs,6)==0 ){

kfree(bus_master);

return;

}

}

list_add_tail(&bus_master->queue,〗&master->other_master_queue);

master->master_count+=1。

4 主站驱动安装配置

由于在主站之间通信与主从之间通信分别使用不同的网卡端口,因此文中使用了冗余端口的功能,因此在安装驱动时要设定使能冗余端口。安装配置时执行如下命令:

./configure --prefix=Install_dir 〗--with-linux-dir=linux_dir 〗--enable-generic=yes 〗--enable-wildcards=yes 〗CC=arm-arago-linux-gnueabi-gcc〗--with-devices=2

其中,参数--enable-generic=yes指明使用通用网卡,参数--with-devices=2 指明本驱动安装2个以太网设备。参数为--enable-wildcards表明目的地址为0xffffffff 将会匹配所有的厂商ID或者产品码。

5 主站驱动通信实验验证

5.1 测试硬件平台

中分别选用三个主站模块,一个从站测试模块进试验。其中主站模块IAC-335X-Kit评估板集成 2个工业用千兆以太网 MAC。另外两个为开源可扩展硬件平台BeagleBone Black,因其仅有一个以太网MAC,仅配置为主站通信,不再连接其它的从站设备。实验平台实物图如图7所示。

图7 实验平台实物图

5.2 EtherCAT多主站间通信测试

文中分别将主站驱动配置到不同的linux版本进行测试。文中测试过程中,主站模块在IAC-335X-Kit评估板安装的嵌入式系统为linux-3.2.21并修补了实时补丁RT-Preempt,为主站驱动提供一个硬实时运行环境[12]。BeagleBone Black平台安装的嵌入式系统为linux-3.14,为非实时操作系统。

对于驱动的测试,在linux应用层,编写代码以1秒为周期向从发送数据。文中是使用修改过的IGH EtherCAT提供的命令行工具,执行后会显示相应端口扫描到的总线上的其它主站或者从站的信息,以双网口的主站为例,则主站统计信息如图8所示。

图8 主站统计信息

上面信息显示,Phase: Operation表明主站运行在可操作阶段;Active: yes表明驱动有应用层调用;Slaves: 1表明总线上有1个从站模块;后续信息表明,除本主站外总线仍有2个主站模块,对应主站的MAC分别为54:4a:16:b9:b3:63和54:4a:16:be:db:4f;图中的统计信息,Main指定的网卡接口连接的是从站,Tx frames的Rx frames差值为1表明无数据这丢失,在从站通信中,发送的帧率平均为100帧/s,发送速率为5.9Kbyte/s;由于主站之间是平行的,每个主站都可以独立的广播发送报文,因此在上图标注的Backup主站通信端口,实际接收到的数据要比实际发送的帧数要多,以致统计工具中接收数据出现负值,实际则满足主站通信要求。

6 结论

该文基于AM3358硬件平台,补充IGH EtherCAT主站驱动代码,以尽量不影响原功能的原则,设计了EtherCAT主站间通信协议。实现了在实时RT-Patch linux系统和原生linux系统中EtherCAT主站与主站通信。解决了开源代码EtherCAT驱动仅支持主站与从站之间通信的限制。满足了数控系统大规模组网需求。该主站与主站之间的通信设计为构建EtherCAT数控系统复杂网络,形成分布式架构以实现工业大数据处理,提供必要保障。

[1] 郇级,刘艳强.工业以太网现场总线EtherCAT驱动程序设计及应用[M].北京:北京航空航天大学出版社,2010.

[2] 佚名. EtherCAT助力沈阳机床实现i5智能数控机床[J]. 国内外机电一体化技术, 2015(3):45-46.

[3] Cheol Jin An, Hyun Chul Yi, Hyoung Woo Kim, et al. Preventing data loss in linux-based EtherCAT master [J]. International Journal of Future Computer and Communication,2015,4(4): 246-249.

[4] 李备备,栾勇,王超,等.基于AM3358处理器的嵌入式实时EtherCAT主站构建[J].组合机床与自动化加工技术, 2015(5):1-5.

[5] 任计羽,范永坤,熊皑.EtherCAT高性能从站的设计与实现[J].计算机应用, 2014,34(S1):18-20.

[6] Cereia M, Bertolotti I C, Scanzio S. Performance of a real-time EtherCAT master under linux [J]. Industrial Informatics, IEEE Transactions on,2013,7(4): 679-687.

[7] YI Hyunchul, CHOI Joonyoung. Performance analysis of linux-based EtherCAT DC synchronization[C]// AIM 2015: Advanced Intelligent Mechatronics (AIM), 2015 IEEE International Conference on. Busan: IEEE, 2015:549-552.

[8] 郇极,刘喆,靳阳,等.实时工业以太网EtherCAT时序特性分析系统[J].北京航空航天大学学报,2013,39(9): 1238-1242.

[9] IGH,Etherlab. EtherCAT master for Linux. [EB/OL]. [2013-01-29]. http://www.etherlab.org/ download/ ethercat/ethercat-1.5.2.pdf.

[10] TEXAS INSTRUMENTS.TI WIKI[EB/OL]. [2015-04-15], http://processors.wiki.ti.com/index.php/ Main_Page.

[11] 张磊. 基于EtherCAT的主站通信控制器设计[D].广州: 广东工业大学,2013.

[12] 陆小虎,刘玉香,于东,等.基于CORTEX-A8处理器的嵌入式数控系统实时平台的设计与实现[J].小型微型计算机系统,2013, 34 (7) : 1689-1692.

(编辑 李秀敏)

Research and Realization on EtherCAT Master and the Master Communication Protocol

DANG Xuan-ju, LI Shuai-shuai, WU Xi-ru, JIANG Hui

(School of Electronic Engineering and Automation, Guilin University of Electronic Technology, Guilin Guangxi 541004, China)

EtherCAT is currently the highest speed industrial fieldbus networks, which is widely used in numerical control systems recent years due to the advantages of its high utilization rate of bandwidth, low delay of stacks and low switching latency. To satisfy the communication needs between the EtherCAT masters, to further extend the functionalities of EtherCAT network and to provide technical support of complex EtherCAT industrial network, the new protocol is designed to support communication between EtherCAT masters without any affects on the communication function of master and slave, upon which the IGH open source drive function is expanded and the communication between EtherCAT masters is achieved on AM3358 processor hardware platform. In this paper, the design is tested on RT-Patch in real time Linux system and native Linux system, respecttively. The test results show that this program is processed stably and can mutually communicate between the master to slave and master to master to meet different demands of industrial networks. To achieve the establishment of complex EtherCAT numerical control systems networks and rapidly acquisition of big data, the key problem of communication between the masters is solved.

EtherCAT; master; industrial fieldbus; big data acquisition

1001-2265(2017)01-0098-04

10.13462/j.cnki.mmtamt.2017.01.027

2016-03-09

国家自然科学基金项目(61263013);广西信息科学实验中心项目(20130110);广西自然科学基金项目(2014GXNSFBA118275,2015GXNSFAA139297);广西高校科研项目(YB2014128)

党选举(1965—),男,陕西咸阳人,桂林电子科技大学教授,博士,研究方向为工业现场总线,(E-mail)xjd69@163.com。

TH166;TG659

A

猜你喜欢
主站数控系统以太网
中外高端数控系统差距分析及对策
基于FPGA的高性能电离层测高仪数控系统设计
基于1500以太网养猪场的智能饲喂控制系统的设计与实现
基于S7-1200 PLC的DP总线通信技术在马里古伊那水电站泄洪冲沙孔门机上的应用
基于嵌入式Soft-PLC 的三轴数控系统设计
三大因素驱动创新提速以太网快步迈入“灵活”时代
多表远程集抄主站系统
谈实时以太网EtherCAT技术在变电站自动化中的应用
县级配电自动化主站系统的设计
基于以太网的计算机与数控系统通信技术研究