Ether CAT 主站与主站通信协议的研究与实现
2019-8-14 来源: 桂林电子科技大学 电子工程与自动化学院 作者:党选举,李帅帅,伍锡如,姜 辉
摘要: Ether CAT 是目前最高速的工业现场总线网络。由于其高带宽利用率,低堆栈延迟、低交换机延迟等优点,近些年被广泛应用于数控机床系统。为满足 Ether CAT 主站间的通信,进一步扩展 Ether CAT 组网功能,为构建 Ether CAT 工业复杂网络提供技术支持,在不影响原有主站与从站通信功能情况下,设计了支持主站与主站之间通信的新协议,扩充 IGH 开源驱动功能,在 AM3358 处理器硬件平台上实现了Ether CAT 主站与主站的通信。
分别在实时 RT-Patch linux 系统和原生 linux 系统中对设计方案进行测试,结果表明该方案运行稳定且可以满足主从、主主之间相互通信,满足了工业组网需求。为实现 Eth-er CAT 数控系统复杂网络的建立和大数据的快速采集,解决了主站与主站之间通信的关键问题。
关键词: Ether CAT; 主站; 现场总线; 大数据采集
0 引言
实时以太网是常规以太网技术的延伸,为满足控制领域的实时通信要求,德国倍福自动化公司提出了 Ether CAT 实时工业以太网技术。在数控系统领域,沈阳机床 i5 智能数控机床使用 Ether CAT 总线系统显著提高了工业效益。
现有的大量研究都集中在主从的构建或者主从间通信中,如在 ARM 构架上构建支持主从 通 信 的 Ether CAT 主 站,高 性 能 从 站 的 设计,从站同步时钟的优化及其 Ether CAT 时序特性分析等。其所研究的 Ether CAT 总线结构主要是单个主站独立控制多个从站,主站各有属于自身的从站单元,主站与主站间无法交换共享数据。
为构建工业数控系统复杂网络,实现数控系统多轴信息的快速传输,进行工业大数据的采集,独立的主站与从站通信并不能完全满需求,难以真正的实现分布式架构,不利于对于数控系统中大数据的传输。因此该文深入研究Ether CAT 总线通信协议,采用 Ether CAT 协议中的保留数据类型,进行主站与主站之间的通信。
如今为解决大数据难以传输处理问题一般系统采用分布式架构。主站与从站通信,是分布式架构一个局部基本单元,只有局部基本单元之间相互通信,才可以为构建Ether CAT 工业数控系统复杂网络提供基础保障。主站与主站通信正是为搭建复杂网络提供了可行方案。
为了提高普适性,选用 linux 系统作为开发平台。德国 IGH 公司提供的 Ether CAT Master for Linux 主站驱动,其遵循 GPLv2 开源协议,但此代码仅支持主站与从站之间的通信,因此该文在 IGH 发布的主站开源代码的基础上,通过协议补充,扩充驱动功能,构建了支持主站与主站之间通信的系统。
1 、程序运行环境的实现
1. 1 实现 Ether CAT 主站的软件结构
IGH 公司提供的主站驱动支持原生非实时 linux 操作系统和实时扩展如 RTAI、XENOMAI、RT-Patch 等实时linux 系。如图 1 所示主站基本通信结构图,其主要由包含各种连接硬件接口的硬件层,负责 linux 调度、算法处理的内核层,供应户调用的应用层三部分组成。
图 1 主站基本通信结构图
1. 2 实现主站的硬件平台
AM3358 是基于 ARM Cortex-A8 内核带有 NEON协处理器高性能处理器。其最高主频可达 1GHz; 集成2 个可编程实时单元 pRU,PRU 可配置成为 Ether CAT从站功能模块; 具有单错检测( 奇偶校验) 的 32KB /32KB L1 指令 / 数据高速缓存; 集成 2 个工业用千兆以太网 MAC( 10 /100 /1000MHZ)。文中把其中一个网口作为从站连接口,另外一个作为主站与主站之间通信连接口,主站连接示意图如图 2 所示。
图 2 主站连接示意图
2 、主站驱动扩展与实现方法
2. 1 Ether CAT 数据帧分析
Ether CAT 数据基于以太网数据帧进行传输,数据帧类型为 0x88A4,其部分帧结构示意图如图 3 所示。
图 3 Ether CAT 部分帧结构示意图
图 3 中,对于 Ether CAT 头部分,其中的 Ether CAT数据长度为整个 Ether CAT 报文部分的数据长度,对于类型,其值为 1 表示主站与从站通信的数据帧,其余值保留。但为了主站之间进行通信,文中规定在 Ether-CAT 头中的类型为 2 表示该数据帧为主站与主站通信数据帧,因此只需补充并完善驱动代码,使之在接收数据时识别该以太网帧的类型位就可以识别是发往从站的数据帧还是主站间通信的数据帧。
2. 2 主站运行阶段
Ether CAT Master for Linux 主站驱动按照功能不同的划分,可划分为孤儿阶段、空闲阶段和可操作阶段三个阶段,其示意图如图 4所示。
图 4 主站驱动运行阶段
图 4 中,在孤儿阶段,主站等待以太网设备连接;在空闲状态,主站已经连接了以太网设备,但是应用空间并没有对主站请求。此时主站会自动扫描从站总线并等待应用空间的操作。同时,命令行工具可以访问总线,但是由于缺少总线配置,不能进行过程数据的交换。
文中修改驱动代码后,在此阶段,主站除扫描总线上的从站外,主站另一端口还需要扫描对应总线上的其它主站设备; 在操作状态,主站被应用层请求,此时可对总线上从站进行配置也可进行过程数据的交换。
2. 3 主站对数据帧的访问
在空闲阶段,每个主站将通过不同的端口自动扫描识别总线上从站和其它主站,根据 Ether CAT 协议,当主站对从站的扫描时,由于 Ether CAT 帧在从站之间传输是顺序的,因此一个子报文可以完成对多个从站的访问,在数据帧的长度允许范围内,一个数据帧可完成多个从站的扫描。但是在主站识别其它主站时,主站之间并行,所以每个数据帧只能完成对一个主站的访问。
3 、主站的实现技术
3. 1 主站对总线的扫描流程
在主站代码中,主站对总线的扫描是在空闲线程中进行的,在没有应用请求的状态下,主站驱动只会运行在空闲线程,在该阶段执行的具体函数由状态机根据不同的判断条件执行不同的回调函数,进而有序的循环执行。其运行基本流程如图 5 所示。
图 5 空闲线程运行流程图
3. 2 主站数据结构的扩充
原生的驱动代码中,描述主站的结构体中没有针对其它主站的描述,文中对于描述主站结构体 structec_master 进行扩充,需在该结构体内添加如下代码:
文中对 struct ec_master 额外增加了两数据报,其中数据报 to_master_datagram 为主站与主站间通信的数据报。exchange_master_datagra 为主站接收到通信数据报后处理信息的缓存数据报。
3. 3 主站发送数据帧
IGH 发布原生的代码中,有冗余支持,但是冗余通信端口也是主站与从站通信端口,为使代码支持主站与主站间通信,文中将冗余端口的功能修改为主站与主站通信端口,因此在主站空闲阶段中,文中主站间通信数据报 to_master_datagram 的发送设备应指定为冗余端口,具体发送函数可为:
3. 4 主站接收数据帧发送数据帧
接收数据帧的底层驱动函数无需任何的改变,处理函数进行修改,修改后的接收处理函数流程图如图6 所示。
图 6 接收处理函数流程图
对于接收到的主站间通信数据,只需要把接收到的数据帧的数据存储在指定内存中,然后加入到链表,使用时遍历该链表即可。文中定义函数 ec_master_queue_master ( ) 用来将其它主站信息放入链表,主要代码如下:
4 、主站驱动安装配置
由于在主站之间通信与主从之间通信分别使用不同的网卡端口,因此文中使用了冗余端口的功能,因此在安装驱动时要设定使能冗余端口。安装配置时执行如下命令:
其中,参数 - - enable - generic = yes 指明使用通用网卡,参数 - - with - devices = 2 指明本驱动安装 2 个以太网设备。参数为 - - enable - wildcards 表明目的地址为 0xffffffff 将会匹配所有的厂商 ID 或者产品码。
5 、主站驱动通信实验验证
5. 1 测试硬件平台
中分别选用三个主站模块,一个从站测试模块进试验。其中主站模块 IAC-335X-Kit 评估板集成 2 个工业用千兆以太网 MAC。另外两个为开源可扩展硬件平台 Beagle Bone Black,因其仅有一个以太网 MAC,仅配置为主站通信,不再连接其它的从站设备。实验平台实物图如图 7 所示。
图 7 实验平台实物图
5. 2 Ether CAT 多主站间通信测试
文中分别将主站驱动配置到不同的 linux 版本进行测试。文中测试过程中,主站模块在 IAC-335X-Kit评估板安装的嵌入式系统为 linux-3. 2. 21 并修补了实时补丁 RT-Preempt,为主站驱动提供一个硬实时运行环境。Beagle Bone Black 平台安装的嵌入式系统为linux-3. 14,为非实时操作系统。对于驱动的测试,在 linux 应用层,编写代码以 1秒为周期向从发送数据。
文中是使用修改过的 IGHEther CAT 提供的命令行工具,执行后会显示相应端口扫描到的总线上的其它主站或者从站的信息,以双网口的主站为例,则主站统计信息如图 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 主站通信端口,实际接收到的数据要比实际发送的帧数要多,以致统计工具中接收数据出现负值,实际则满足主站通信要求。
投稿箱:
如果您有机床行业、企业相关新闻稿件发表,或进行资讯合作,欢迎联系本网编辑部, 邮箱:skjcsc@vip.sina.com
如果您有机床行业、企业相关新闻稿件发表,或进行资讯合作,欢迎联系本网编辑部, 邮箱:skjcsc@vip.sina.com
更多相关信息