【原创】浅谈EtherCAT主站EOE(上)-EOE网络
这篇文章的标题虽然是关于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 request、Set MAC Filter request与 SDO 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网络的更多相关文章
- [原创]浅谈移动互联网App兼容性测试
[原创]浅谈移动互联网App兼容性测试 今天要谈的话题,估计各位测试都有感受,移动互联网App兼容性测试,我们到底测试覆盖如何去挑选机型?具体移动App兼容性测试如何开展?是不是应引进像testin这 ...
- [原创]浅谈IT人如何做理财规划
[原创]浅谈IT人如何做理财规划 鱼哥博客上多数写的是技术和管理相关,但很少有理财等话题,今天抽空来谈谈IT人如何做理财规划,如果要想学习理财,我想很有名的“标准普尔家庭资产象限图”上值得每个学习和理 ...
- [原创]浅谈H5页面性能优化方法
[原创]浅谈H5页面性能优化方法 前阶段公司H5页面性能测试,其中测试时也发现了一些性能瓶颈问题,接下来我们在来谈谈H5页面性能优化,仅仅是一些常用H5页面性能优化措施,其实和Web页面性能优化思路大 ...
- [原创]浅谈H5页面测试介绍
[原创]浅谈H5页面测试介绍 目前移动互联网非常火热,除了各种App,H5也是非常热,由于H5跨平台,且版本更新容易,做为引流或获客是非常好的一种简单低成本平台:今天来谈谈H5页面测试都要测试什么? ...
- [原创]浅谈在创业公司对MVP的理解
[原创]浅谈在创业公司对MVP的理解 目前自已所处的公司类似一个创业平台,我们内部会不断的去孵化不同方向的产品,产品经理经常谈到的一个词就是MVP,所以有必需要去了解下什么是MVP? 1 什么是MVP ...
- [原创]浅谈对任务分解法WBS应用
[原创]浅谈对任务分解法WBS应用 1.WBS是什么? 即Work Breakdown Structure如何进行WBS分解:目标→任务→工作→活动 2.WBS分解的原则:将主体目标逐步细化分解,最底 ...
- 浅谈线程池(上):线程池的作用及CLR线程池
原文地址:http://blog.zhaojie.me/2009/07/thread-pool-1-the-goal-and-the-clr-thread-pool.html 线程池是一个重要的概念. ...
- [原创]浅谈如何使用gcc开发NT核心驱动程序
原文链接:[原创]浅谈如何使用gcc开发NT核心驱动程序 一谈到在 Win NT 下开发核心驱动程序,可能不少人首先都会想到微软“正统”的VC来.诚然,用VC 配合 WINDDK 的确工作的不错,但或 ...
- [原创]浅谈Web UI自动化测试
[原创]浅谈Web UI自动化测试 Web UI自动化测试相信大家都不陌生,今天来谈谈这个,我最早接触自动化测试时大约是在2004年,2006年当时在腾讯财付通算是开始正式接触自动化测试,之所以是正式 ...
- [原创] 浅谈ETL系统架构如何测试?
[原创] 浅谈ETL系统架构如何测试? 来新公司已入职3个月时间,由于公司所处于互联网基金行业,基金天然固有特点,基金业务复杂,基金数据信息众多,基金经理众多等,所以大家可想一下,基民要想赚钱真不容易 ...
随机推荐
- POI Excel单元格样式超过最大数(4000或64000)的解决方案
aliases: [] tags : " #QA #Java " summary: [POI生成Excel超出的单元格样式的最大数量] author : [yaenli] note ...
- JVM——锁
对象头[每个对象都具有对象头] Mark:对象头的标记(32位),描述对象的 hash.锁信息.垃圾回收标记.年龄:内容包括:①.指向锁记录的指针:②.指向 monitor 的指针:③.GC 标记:④ ...
- 递推求解DAG最长路径长度及最长路径条数
说明 在一般图中,求解最长路或最短路只能通过最短路算法解决 但是在DAG中,由于不存在环,因此可以通过递推,以线性复杂度计算处最长路或最短路.当然需要首先对有向图进行Tarjan缩点转化为DAG 例题 ...
- Redis事件机制(未写完)
Redis服务器是一个事件驱动程序,服务器需要处理以下两类事件: 文件事件:Redis通过套接字与客户端连接,文件事件是服务器对套接字操作的抽象. 时间事件:Redis服务器中的一些操作需要给定的时间 ...
- dart基础---->函数传值
1. string type main(List<String> args) { String name = "huhx"; changIt(name); print( ...
- ByteHouse MaterializedMySQL 增强优化
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 前言 社区版 ClickHouse 推出了MaterializedMySQL数据库引擎,用于将 MySQL 中的表 ...
- MySQL相关知识点思维导图整理
MySQL相关知识点思维导图整理 Xmind思维导图下载地址: 蓝奏云:https://shuihan.lanzoui.com/iXZw7frkn5a
- 中心极限定理的模拟—R实现
中心极限定理,是指概率论中讨论随机变量序列部分和分布渐近于正态分布的一类定理.这组定理是数理统计学和误差分析的理论基础,指出了大量随机变量近似服从正态分布的条件.它是概率论中最重要的一类定理,有广泛的 ...
- Redis缓存高可用集群
作者:京东零售 王雷 1.Redis集群方案比较 • 哨兵模式 在redis3.0以前的版本要实现集群一般是借助哨兵sentinel工具来监控master节点的状态,如果master节点异常,则会做主 ...
- ZR.Admin小改和VUE3版本体验
前言 孔乙己显出极高兴的样子,将两个指头的长指甲敲着柜台,点头说:"对呀,对呀!......回字有四样写法,你知道么?" 大家好,我是44岁的大龄程序员码农阿峰.阿峰从事编程二十年 ...