这篇文章的标题虽然是关于EtherCAT EOE,但其实主要内容是关于整个EOE网络结构,属于计算机网络原理。而EtherCAT EoE只是简单介绍,并不是文章的重点。需要注意的是,我们的描述主要基于Linux操作系统,但在Windows或其他RTOS上的原理也是类似的,大家可以自行类比迁移。

为了避免混淆,文中将会使用"EtherNet"或"以太网"来指代TCP/IP网络,以区分EtherCAT网络和普通的以太网。

一、EoE

EtherCAT是一种实时以太网总线协议,是以以太网为基础的现场总线系统,EtherCAT已成为工业自动化领域中最受欢迎的总线协议之一,被广泛应用于机器人、自动化生产线、运动控制等场景。

EtherCAT使用标准的IEEE802.3以太网帧,单从以太网角度看,ETherCAT是二层网络,常说的MAC层,以太网帧头使用以太网类型0x88A4来和其他以太网帧相区别。

一个完整EtherCAT帧如下所示。

EtherCAT采用主从结构进行访问控制,通信关系始终由主站发起。主站使用标准的以太网接口,从站使用专门的ETherCAT从站控制器ESC(Ethercat Slave Controller)芯片来处理子报文

整个EtherCAT网络形成一个环状,主站向各个从站发送EtherCAT以太网帧,该帧的数据区包含了多个ETherCAT子报文。这些子报文包含地址信息,用于定位每个从站,主站通过这些子报文与每个从站进行交互。每个从站ESC可以从数据帧中提取或插入数据。

工业通信必须满足不同要求的数据传输特性,这些数据大致可分为两类,一类是对通信时间要求严格的过程数据(实时数据),另一类是对时间要求相对不重要的非过程数据(非实时数据),如参数数据、诊断数据、批量数据等,EtherCAT支持多种服务和协议来满足这些不同的要求。支撑这两类数据的底层硬件主要是ESC的邮箱FMMU

因为ETherCAT修改了原来的二层以太网网络,为了实现从站接入普通以太网,有了EoE。EOE是EtherNet Over EtherCAT(EtherCAT上的以太网)的缩写,它是一种将标准以太网帧通过EtherCAT传输的解决方案。使用EOE技术,可以将EtherCAT从站接入互联网,并使其能够与其他设备通过互联网进行交互,具体能用通过从站EtherNet来做什么,就看各位的想象力了。

这里说到邮箱,简答介绍一下邮箱报文的结构,详细的请查阅ETG相关文档

EOE使用邮箱协议传输,ETherCAT中不仅有EOE,还有CoE(CANopen Over EtherCAT)、FoE(File Over EtherCAT)、SoE(SERCOR Over EtherCAT)、VoE等非实时数据通信,其底层都是是通过EtherCAT邮箱交互数据。主站通过一个个ETherCAT子报文读写邮箱,不同的协议数据类型通过邮箱(mailbox)协议来区别,邮箱协议数据在子报文数据区中,结构如下。

邮箱协议数据包含邮箱头和邮箱数据,邮箱头主要表示邮箱数据区的数据类型,结构如下:

在邮箱数据区中,进一步包含有COE、EOE、FOE等协议规范的数据。以EOE为例,通常情况下,EtherNet帧的大小为1514/1518字节(不包括前导码和FCS校验)。但从站的邮箱大小有限,每次传输只能传输几百字节的数据。因此,在通过邮箱协议传输EtherNet帧之前,需要将其分成多个段传输,这就需要一定的协议和规范。此外,从站EtherNet网络还设计MAC、IP、网关地址等参数配置,也需要通过邮箱进行配置,统一需要一定的协议和规范。因此,ETG定义了EoE服务规范来应对这些需求,它被放置在邮箱数据区中。整个ETherCAT数据帧就和TCP/IP网络帧一样分层,像套娃一样,一层协议套一层协议。其他的COE、FOE、VOE等服务规范也类似。

二、EoE服务规范

按照ETG官方文档中对EoE应用服务的定义,EoE服务请求规范如下:

  • 初始化EoE请求(Initiate EoE),部分从站需要主站发送Initiate EoE来触发从站初始化从站EOE,如网络协议栈初始化等等,请求-响应模式(主站发起请求,然后查询从站响应,根据响应确定从站是否执行成功)。

request:EOE frameType 0x02

response: EOE frameType 0x03

  • EoE帧传输请求(EoE Fragment),用于传输主站与从站的标准以太网数据,只有请求,没有响应。

request:EOE frameType 0x00

  • 设置IP参数请求(Set IP Parameter),设置从站的IP地址、网关等配置信息,请求-响应模式。

request:EOE frameType 0x02

response: EOE frameType 0x03

  • 设置MAC过滤器请求(Set MAC Filter),请求-响应模式。暂未见到应用场景。

request:EOE frameType 0x04

response: EOE frameType 0x05

以上均是通过邮箱协议来与从站交互,关于EOE服务的数据结构规范大家可参考ETG官方文档《ETG1000.6.应用层协议规范》5.7小节,这里不再详细贴出。

EtherCAT主站如何提供EoE服务?

通过上面对EoE的描述,EtherCAT主站提供EOE功能有:

  • 为每个从站配置IP、MAC、网关等IP参数。
  • 外部发送给从站的EtherNet 帧,需要主站通过EoE Fragment发送给从站;同时主站要接收从站发送的EtherNet 帧,然后向外发送。
  • 可选的MAC过滤器请求、初始化EoE请求。

Set IP Parameter requestSet MAC Filter requestSDO upload/download请求机制类似,EtherCAT主站内部通过一系列状态机来为应用层提供这些服务。不是本文的重点,具体大家可参考开源EtherCAT协议栈(igh、soem...虽然有些bug)源码和文档,在此不再说明。

最重要的是,EtherCAT主站需要提供一个基于ETherCAT邮箱协议的EtherNet“物理层”通道,用于从站与PLC外部网络之间的通信。本文关注的是网络层面部分,即如何处理EtherNet帧并传递给从站,以及从站如何处理并向外界发送数据。对于EtherCAT主站如何进行邮箱通信并不是本文的重点,自行查阅相关资料。

三、EoE网络

EOE网络

一个典型的EOE网络通常如下图所示:PLC(或其他运行EtherCAT主站的主机)至少配备两个网卡。其中,一个网卡完全由EtherCAT主站管理,连接着EtherCAT从站(假设有64个从站且全部支持EOE)。另一个网卡则是PLC的普通以太网网卡,用于连接到外部网络。

基于这个结构,我们考虑如下问题(本文暂且关注基本问题):

  • 如何将各个从站的网络和外部网络连接起来?

    • 外部网络作为服务端如何才能连接?
    • 从站作为服务端时如何才能连接?
  • 如何实现EtherCAT网络中,从站之间通过EtherNet相互通信?
  • ETherCAT网络中的从站会经常拔插(创建、删除)如何灵活管理?
  • 从站作为服务端接入外部网络,如何保障基本安全?

在解决这些问题之前,我们再次看看这个网络。首先,从站EOE就像一个完整的EtherNet设备。ESC EOE邮箱相当于网卡,每个EOE从站则相当于网卡+TCP/IP协议栈。在TCP/IP协议栈的上层,是具体的Ethernet应用程序(如TFTP、HTTP等)。

从PLC的角度看,PLC与这64个EOE从站直接'连接',只不过这64个网口共用一条EtherCAT网线作为总线,说到这大家有没有联想到什么?

这种网络结构让人想起了在电脑上创建虚拟机时使用的网络结构,就和我们在电脑上创建几个虚拟机的网络结构是一样的!看下面这个图你就明白了。

网络结构上,PLC中的EtherCAT EOE网络与我们在电脑上创建多个虚拟机的网络结构非常相似!PLC相当于我们的物理机,而EOE从站则相当于物理机里创建的虚拟机。每个虚拟机都有自己的网卡,并且安装有操作系统,每个虚拟机对外要互联互通。

在自己电脑上创建虚拟机只是多种虚拟化技术和应用场景之一。

因此,EtherCAT主站EOE网络的工作机制与虚拟化场景下的网络工作机制类似,EtherCAT主站EOE网络问题可以使用类似虚拟化场景下的网络解决方式去解决。不同之处在于数量上存在差异,由于ETherCAT网络有多个ETherCAT从站,需要灵活管理(如创建、删除),在EtherCAT上会根据应用场景简化处理。

虚拟化网络底层原理是计算机网络技术和操作系统技术,这方面的知识这部分内容留到下篇文章(浅谈EtherCAT主站EOE(下)-虚拟化网络与EOE网络)介绍。

【原创】浅谈EtherCAT主站EOE(上)-EOE网络的更多相关文章

  1. [原创]浅谈移动互联网App兼容性测试

    [原创]浅谈移动互联网App兼容性测试 今天要谈的话题,估计各位测试都有感受,移动互联网App兼容性测试,我们到底测试覆盖如何去挑选机型?具体移动App兼容性测试如何开展?是不是应引进像testin这 ...

  2. [原创]浅谈IT人如何做理财规划

    [原创]浅谈IT人如何做理财规划 鱼哥博客上多数写的是技术和管理相关,但很少有理财等话题,今天抽空来谈谈IT人如何做理财规划,如果要想学习理财,我想很有名的“标准普尔家庭资产象限图”上值得每个学习和理 ...

  3. [原创]浅谈H5页面性能优化方法

    [原创]浅谈H5页面性能优化方法 前阶段公司H5页面性能测试,其中测试时也发现了一些性能瓶颈问题,接下来我们在来谈谈H5页面性能优化,仅仅是一些常用H5页面性能优化措施,其实和Web页面性能优化思路大 ...

  4. [原创]浅谈H5页面测试介绍

    [原创]浅谈H5页面测试介绍 目前移动互联网非常火热,除了各种App,H5也是非常热,由于H5跨平台,且版本更新容易,做为引流或获客是非常好的一种简单低成本平台:今天来谈谈H5页面测试都要测试什么? ...

  5. [原创]浅谈在创业公司对MVP的理解

    [原创]浅谈在创业公司对MVP的理解 目前自已所处的公司类似一个创业平台,我们内部会不断的去孵化不同方向的产品,产品经理经常谈到的一个词就是MVP,所以有必需要去了解下什么是MVP? 1 什么是MVP ...

  6. [原创]浅谈对任务分解法WBS应用

    [原创]浅谈对任务分解法WBS应用 1.WBS是什么? 即Work Breakdown Structure如何进行WBS分解:目标→任务→工作→活动 2.WBS分解的原则:将主体目标逐步细化分解,最底 ...

  7. 浅谈线程池(上):线程池的作用及CLR线程池

    原文地址:http://blog.zhaojie.me/2009/07/thread-pool-1-the-goal-and-the-clr-thread-pool.html 线程池是一个重要的概念. ...

  8. [原创]浅谈如何使用gcc开发NT核心驱动程序

    原文链接:[原创]浅谈如何使用gcc开发NT核心驱动程序 一谈到在 Win NT 下开发核心驱动程序,可能不少人首先都会想到微软“正统”的VC来.诚然,用VC 配合 WINDDK 的确工作的不错,但或 ...

  9. [原创]浅谈Web UI自动化测试

    [原创]浅谈Web UI自动化测试 Web UI自动化测试相信大家都不陌生,今天来谈谈这个,我最早接触自动化测试时大约是在2004年,2006年当时在腾讯财付通算是开始正式接触自动化测试,之所以是正式 ...

  10. [原创] 浅谈ETL系统架构如何测试?

    [原创] 浅谈ETL系统架构如何测试? 来新公司已入职3个月时间,由于公司所处于互联网基金行业,基金天然固有特点,基金业务复杂,基金数据信息众多,基金经理众多等,所以大家可想一下,基民要想赚钱真不容易 ...

随机推荐

  1. 正则表达式(cases)

    匹配不含'aaa'和'bbb'的字符串: ^(?!.*aaa)(?!.*bbb).*$ To be continue...

  2. STL常用容器用法总结

    vector 变长数组,倍增的思想 size() 返回元素个数 empty() 返回是否为空 clear() 清空 front()/back() push_back()/pop_back() begi ...

  3. Windows系统下载最新版Windows10 iso映像

    在电脑PC端如何下载最新版的完整Windows10 iso映像?打开https://www.microsoft.com/zh-cn/software-download/windows10/页面,是不能 ...

  4. Host key verification failed的问题解决 (亲测有效)

                一.描述 scp拷贝远程内容时失败,出现以下问题: 翻译: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ...

  5. Proxmox VE镜像分析与定制

    Proxmox VE(Proxmox Virtual Environment,简称PVE)是一个开源的服务器虚拟化环境Linux发行版,基于Debian,使用给予Ubuntu的定制内核.相比于其他虚拟 ...

  6. 6.理解Jwt代码

    1.昨天主要是对Jwt的代码里面不熟悉的代码进行了简要的理解,发现其实有些流程并不是普通程序员自己写的,而是自己进行拓展,这些流程是开源程序员写的开发流程:我发现这些代码一般要么是父类的方法实现,要么 ...

  7. Anaconda 安装 PyTorch 和 DGL

    安装 PyTorch Anaconda 是 PyTorch 官方推荐的包管理工具,它会帮助安装所有的依赖项.当使用 conda 安装的时候,可能会出现下载过慢的问题,需要更换清华源来代替默认的cond ...

  8. day49:django:wsgrief&模板渲染Jinjia2&django的MTV/MVC框架&创建/启动一个django项目

    目录 1.自定义web框架wsgiref版 2.自定义web框架wsgiref版-优化版 3.模板渲染JinJa2 4.MTV和MVC框架 5.django:下载安装&创建启动 自定义web框 ...

  9. iOS16新特性 | 灵动岛适配开发与到家业务场景结合的探索实践

    作者:京东零售 姜海 灵动岛是苹果在iPhone 14 Pro和iPhone 14 Pro Max上首次提出的全新UI交互形式,创新性的让虚拟软件和硬件的交互变得更为流畅.当有来电.短信等通知时,灵动 ...

  10. Dapr和Rainbond集成,实现云原生BaaS和模块化微服务开发

    背景 Dapr 是一个开源的分布式应用运行时,帮助开发者构建松耦合的分布式应用程序,具有良好的可扩展性和可维护性.Rainbond 是一款企业级的云原生应用管理平台,提供了丰富的功能和工具,方便开发者 ...