【原创】浅谈EtherCAT主站EOE(上)-EOE网络

news2024/11/26 0:30:02

版权声明:本文为本文为博主原创文章,未经同意,禁止转载。如有问题,欢迎指正。博客地址:https://www.cnblogs.com/wsg1100/

文章目录

    • 一、EoE
    • 二、EoE服务规范
      • EtherCAT主站如何提供EoE服务?
    • 三、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可以从数据帧中提取或插入数据。

动态图:https://wsg-blogs-pic.oss-cn-beijing.aliyuncs.com/xenomai/EthercatOperatingPrinciple.svg

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0Ll91gnL-1685239279362)(.\浅谈EtherCAT主站EOE\image-20230524192502670.png)]

因为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网络)介绍。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/578611.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

我用GPT搭建了一个虚拟女友!

Datawhale干货 作者:仲泰,Datawhale成员 1. 作者知乎:https://www.zhihu.com/people/yong-tan-39-67 2.我用GPT搭建了一个虚拟女友-哔哩哔哩:https://b23.tv/GYYwMcq 3. 五月学习:ChatGPT应用组队学习来了&#xff01…

原生canvas标签画线——直线、平行线(设置不同颜色和宽度)

1.一条直线 效果图如下&#xff1a; 代码如下&#xff1a; <!--* Author: your name* Date: 2023-05-24 17:50:28* LastEditTime: 2023-05-24 18:06:39* LastEditors: localhost* Description: In User Settings Edit* FilePath: /canvas/day01/体验canvas.html --> &l…

Python潮流周刊#3:PyPI 的安全问题

△点击上方“Python猫”关注 &#xff0c;回复“1”领取电子书 你好&#xff0c;我是猫哥。这里记录每周值得分享的 Python 及通用技术内容&#xff0c;部分为英文&#xff0c;已在小标题注明。&#xff08;标题取自其中一则分享&#xff0c;不代表全部内容都是该主题&#xff…

网站部署与上线(2)远程连接云服务器或虚拟机

文章目录 搭建服务器部署环境配置pm2 可能听说过Windows系统提供的远程桌面。实际上&#xff0c;Linux中也提供了类似的功能&#xff0c;其远程连接基于命令行。 在Windows端连接Linux需要使用SSH软件&#xff0c;最流行的有Xshell和SecureCRT。 首先确定需要连接的云服务器或虚…

Pyside6-第一篇-创建第一个窗口

Hi&#xff0c;今天起开始更新Pyside6教程了&#xff0c;从0-1开始更新&#xff0c;过程比较的久&#xff0c;一点点来。 今天&#xff0c;我们先来搭建环境。 我的环境&#xff1a; ❝ pycharm 2021.3.3(版本随意&#xff0c;只要不是很低就行)Python版本3.95Pyside版本6.50 ❞…

【FreeRTOS】——中断优先级设置中断相关寄存器临界段代码保护调度器挂起与恢复

目录 前言&#xff1a; 一、中断优先级设置 二、中断相关寄存器&#xff08;STM32-Cortex M3&#xff09; 三、临界段代码保护 四、任务调度器的挂起和恢复 总结&#xff1a; 前言&#xff1a; 博客笔记根据正点原子视频教程编辑&#xff0c;仅供学习交流使用&#xff0…

电子器件系列38:mos管散热片

板子上需要用到一个封装为to220的mos管&#xff0c;还得立起来散热&#xff0c;得要加一个散热片。 散热片简介&#xff0c;分类&#xff1f;用途&#xff1f;如何使用&#xff1f;封装&#xff1f;使用注意事项&#xff1f; 简介&#xff1a; mos散热片是一种给电器中的易发热…

线程池实现

一、线程池介绍 1&#xff09;应用场景 当并发数很多的时候&#xff0c;并且每个线程执行时间很短的任务&#xff0c;这样就会频繁创建线程&#xff0c;而这样的频繁创建和销毁线程会大大降低系统的执行效率。对于这种场景我们可以使用线程池来复用之前创建的线程&#xff0c…

Linux—基础篇:目录结构

1、基本介绍 1、linux的文件系统是采用级层式的树状目录结构&#xff0c;在此结构的最上层是根目录“/”,然后在此目录下创建其他目录 2、在Linux的世界里&#xff0c;一切皆文件&#xff01;&#xff01;&#xff01; 2、具体的目录结构 不用背&#xff0c;知道即可 2.1、…

价值1000元的稀有二开版的无限坐席在线客服系统源码+教程

demo软件园每日更新资源,请看到最后就能获取你想要的: 1.价值1000元的稀有二开版的无限坐席在线客服系统源码教程 价值1000元的稀有二开版的无限坐席在线客服系统源码 直接一键安装的&#xff0c;启动两个端口就行了&#xff0c;安装倒是简单 类型&#xff1a;在线客服系统 …

MathType7精简版数学公式编辑器

许多简单的数学公式&#xff0c;我们可以使用输入法一个个找到特殊符号并输入&#xff0c;但是对于高等数学中较多复杂的公式符号&#xff0c;是很难使用输入法完成的。那么&#xff0c;我们就需要借助公式编辑器&#xff0c;这里推荐一款我自己正在使用的MathType。 MathType是…

Redis单机数据库

文章目录 一、Redis数据库Redis数据库redisDb数据库键空间——dict过期字典——expires设置键的生存时间移除键的过期时间返回键的生存时间 Redis的过期删除策略1、定期删除2、惰性删除3、内存淘汰机制 过期键处理1、RDB功能对过期键的处理2、AOF功能对过期键的处理3、复制功能…

chatgpt赋能python:Python隐藏变量:探秘程序内部的“奥秘”

Python 隐藏变量&#xff1a;探秘程序内部的“奥秘” 作为一门高级编程语言&#xff0c;Python备受程序员的欢迎。但是&#xff0c;你是否了解Python隐藏变量&#xff1f;这些看似神秘的变量对程序员的编码工作有哪些影响呢&#xff1f;本篇文章将为您详细介绍Python隐藏变量的…

Hive 实现ACID

Hive官方提示&#xff0c;Hive在版本0.14之后可以支持对表数据的UPDATE和DELETE&#xff1a; 具体操作如下&#xff1a; -- 环境参数设置 set hive.support.concurrencytrue; set hive.txn.managerorg.apache.hadoop.hive.ql.lockmgr.DbTxnManager;-- 建表&#xff0c;以ORC的…

【MySQL新手到通关】第六章 时间日期函数

文章目录 1.获取日期时间函数1.1 获取当前日期时间1.2 获取当前日期1.3 获取当前时间 2.日期格式化★★★2.1 日期转指定格式字符串2.2 字符串转日期 3.日期间隔3.1 增加日期间隔 ★★★3.2 减去一个时间间隔★★★3.3 日期相差天数&#xff08;天&#xff09;3.4 相差时间&…

VSLAM视觉里程计总结

相机模型是理解视觉里程计之前的基础。视觉里程计&#xff08;VIO&#xff09;主要分为特征法和直接法。如果说特征点法关注的是像素的位置差&#xff0c;那么&#xff0c;直接法关注的则是像素的颜色差。特征点法通常会把图像抽象成特征点的集合&#xff0c;然后去缩小特征点之…

Docker容器 和 Kubernetes容器集群管理系统

一、快速了解Docker 1. 什么是Docker的定义 Docker 是一个开源的应用容器引擎&#xff0c;基于Go语言并遵从 Apache2.0 协议开源。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中&#xff0c;然后发布到任何流行的 Linux 机器上&#xff0c;也可以…

C#,码海拾贝(23)——求解“复系数线性方程组“的“全选主元高斯消去法“之C#源代码,《C#数值计算算法编程》源代码升级改进版

using System; namespace Zhou.CSharp.Algorithm { /// <summary> /// 求解线性方程组的类 LEquations /// 原作 周长发 /// 改编 深度混淆 /// </summary> public static partial class LEquations { /// <summary&g…

【C++】利用游戏壳实现飞机大战(设计类图、开发实现)

文章目录 飞机大战飞机大战类图分析背景类&#xff08;CBackGround&#xff09;成员属性成员函数 程序类&#xff08;CPlaneApp&#xff09;成员属性成员函数 玩家类&#xff08;CPlayer&#xff09;成员属性成员函数 炮弹类&#xff08;CGunner&#xff09;成员属性成员函数 炮…

AI周报-一周发生两次Ai事件;DragGAN 问世

&#x1f680; AI 图像编辑技术 DragGAN 问世&#xff0c;用户可以通过拖拽改变汽车大小或人物表情等 近日&#xff0c;马克斯・普朗克计算机科学研究所研究者们推出了一种控制GAN的新方法DragGAN&#xff0c;用户可以通过拖拽改变汽车大小或人物表情等。 DragGAN类似于Photo…