EtherCAT 之邮箱

article/2025/10/9 2:19:41

EtherCAT特点

由于工作需要, 最近在学习EtherCAT总线,对于主站和从站的通信,发表一下我个人的理解。

1. EtherCAT为保证低延迟高响应,不可能像MODBUS一样用软件解析数据包再转发的模式,而是采用“高速火车”不停车上下车的方式,不停车指的是底层转发完全靠硬件实现流处理,自动加载和提取数据,上层需配置相应的寄存器即可。

2. 通信兼容,最大化兼容以太网现有的设备,配置好上位机软件,可以直接使用电脑控制(需要一些实时性优化)。

从站协议状态机(硬件)

底层由硬件状态机处理,上层软件负责通信调度和管理。

 

                                                                                   硬件工作原理简图 

端口状态机PSM

用于处理MAC帧并将其以八位位组的长度送到上一层处理。

①信息以一个八位位组的序列传输,而不是直接传输整个帧

②自动模式下端口自动开闭,或者由指令关闭该回路。

DLPDU处理状态机 (DHSM)

DLPDU为数据链路层处理数据单元,是一种特定的实时EtherType或特定的UDP目的端口的以太网帧解释器。包含EtherCAT处理循环帧的检测和自动增量地址的处理,更新WKC和FCS检测等功能。当该“解释器”识别到与本地内存和寻址,将产生与更高一层状态机的交互。

同步信号管理器状态机(SYSM)

同步信号管理器用作邮箱和缓存存储器的存储区域。邮箱服务将被转发到一个邮箱处理重试的状态机(PMSM),一般EtherCAT从机有四个同步管理器,每个同步管理器都对应一个SYSM。如果有一个特殊的内存地址对应到一个SYSM,则将有一个对应存储区域或者寄存器的请求。

恢复邮箱状态机(RMSM)

RNSM负责在操作读邮箱过程中进行重试操作和检查写邮箱指令的序列号。

从站信息访问状态机(SIISM)

负责读写和更新特定的从站寄存器接口。

邮箱介绍

                                                                      EtherCAT数据流

邮箱位于同步管理器之上(SYSM), 对大多数从机应用的核心是邮箱的数据和过程的处理,一般使用邮箱封装CiA301协议(对象字典,CoE)的方式实现。以下为主站从站邮箱通信的说明。

邮箱是双向工作的:由主站到从站,及由从站到主站,它支持两个方向以上独立全双工通信和多数据链路用户协议。从站从站间的通信通过类似路由器的主站进行管理。邮箱首部包含了一个允许主站进行重定向服务的地址字段(上图Address)。
邮箱使用了两个同步管理器通道(SM),每个方向一个通道(如通道0用于主机发送到从站,通道1位从站到主站)。邮箱的通信一般是非周期性的,并对单个从站进行寻址。因此不需要FMMU(现场总线内存管理单元)的逻辑地址,而是使用物理寻址。

邮箱主站与从站的通信过程中,主站必须检查从站邮箱应答命令中的工作计数器,如果工作计数器没有增加(通常因为从站没有完全读取上一条命令)或在规定时间内没有响应,主站必须重发该邮箱命令。

重发命令后,如果命令响应丢失(主站没有收到应答),主站发送写SM_activate命令(反转repeat)后,不再读取邮箱。从站检查SM_activate检测出邮箱重复请求,将psRepeatMbx(上次发送的备份)缓存再次放入邮箱,并反转SM_read_toggle。 此时主站周期性的读取SM DL_user的CTRL,检查从站是否结束请求,当检查的到SM DL_user的CTRL反转时,主站再次读取发送邮箱。

从站到主站的通信,主站必须确定从站是否使用邮箱命令填满了同步管理器(从站预存数据),并尽快发送适当的读命令。从站接收到邮箱读事件,需保存发送缓冲器以用于可能的重复 (psRepeatMbx = psReadMbx)。

 

 


http://chatgpt.dhexx.cn/article/IbFA1S9b.shtml

相关文章

IgH详解八、EtherCAT SDO原理

主站通过使用 SDO对对象字典进行读取/写入操作,完成对从站设备进行参数设置、状态监视等。 从站SDO的读写是非实时的,所以需要多次访问来确保数据操作的正确性。 如下图写入操作,主站把数据发送到从站,从站返回WC确保数…

Ethercat学习笔记

1、EtherCAT原理介绍 EtherCAT从站设备在报文经过其节点时读取相应的数据报文,同样输入数据也是在报文经过时插入到报文中。整个过程报文只有几纳秒的时间延迟,实时性获得极大提高 EtherCAT作为一种工业以太网总线,充分利用了以太网的全双工…

igh ethercat主站文档(中文翻译上)

此翻译主要是用翻译软件翻译,部分自己修改,若有不当之处,可以下方评论或私聊我提醒修改,若转载,请注明出处 本文是1-4章节。 1 The IgH EtherCAT Master 本章介绍有关EtherCAT主站…

EtherCAT设备协议详解五、Modular Device Profile

ETG.5001.1: General MDP Device ModelETG5001定义了通用的模块设备模型,现在远程可扩展的IO模块基本都使用本协议实现 从总线上看是一个从站,实际上可以扩展多个卡片式IO模块 一个从站对应多个插槽,插槽可随机插入不同型号的卡片IO&#xff…

[工业互联-17]:常见EtherCAT主站与实现方法

目录 第1章 EtherCAT入门 1.1 简介 1.2 EtherCAT通信架构 第2章 EtherCAT主站方案 2.1 方案概述 2.2 主站配置步骤 2.3 EtherCAT主站软件 第3章 Windows操作系统支持EtherCAT的基本步骤 第4章 常见主站软件介绍:TwinCAT 4.1 简介 4.2 软件架构 4.3 应…

EtherCAT设备协议详解二、EtherCAT状态机及配置流程

EtherCAT状态机(ESM) EtherCAT状态机定义了每个EtherCAT从站设备的分步设置,并指示了可用的功能。设备可以拒绝来自主站的状态请求,并通过错误指示(AL 状态寄存器中的错误标志)和相关错误代码(A…

Ethercat解析(十一)之分布时钟

驱动代码中,同步时钟涉及到如下几个概念: ⑴ 本地时钟:每一个支持DC的从站都有一个纳秒级分辨率的本地时钟寄存器。 每次从机上电,则寄存器从0开始计时,这就意味着不同的从机因为上电开机的时间不同而本地时钟也会有…

EtherCAT简介

EtherCAT(用于控制自动化技术的以太网)是Beckhoff(倍福)在2003年开发的实时以太网网络。它基于CANOPEN协议和以太网,但是与Internet通信或网络通信不同之处在于,它专门针对工业自动化控制进行了优化。这些标…

倍福EtherCAT通信协议详细解析

简介 1.1 运动控制 1.2 实时以太网 1.3 EtherCATEtherCAT原理介绍 2.1 实时性 2.2 端口管理 2.3 EtherCAT网络拓扑 2.4 EtherCAT网络协议栈 2.5 EtherCAT数据帧格式 2.6 EtherCAT设备寻址方式 2.7 分布式时钟(Distribute Clock) 2.8 应用层(Application Layer) 2.9 设备配置(De…

EtherCAT (学习笔记)

文章目录 1. 简介1.1 运动控制1.2 实时以太网1.3 EtherCAT 2. EtherCAT原理介绍2.1 实时性2.2 端口管理2.3 EtherCAT网络拓扑2.4 EtherCAT网络协议栈2.5 EtherCAT数据帧格式2.6 EtherCAT设备寻址方式2.7 分布式时钟(Distribute Clock)2.8 应用层(Application Layer)2.9 设备配置…

拨打电话功能

1.html方式 界面效果&#xff1a;直接跳转到拨号界面 实现方法 <a href"tel:18212345678">在线客服</a> 2.ts方式 界面效果&#xff1a;下面有弹窗&#xff0c;选择后&#xff0c;直接拨打出去 实现方法 2.1调用与html同名的ts文件内方法 步骤 1&#x…

Axure实现模拟拨打电话和真实拨打电话

Axure模拟拨打电话 Axure RP是一个专业的快速原型设计工具&#xff0c;让负责定义需求和规格、设计功能和界面的专家能够快速创建应用软件或Web网站的线框图、流程图、原型和规格说明文档。作为专业的原型设计工具&#xff0c;它能快速、高效的创建原型&#xff0c;同时支持多…

uniapp 实现拨打电话

uniapp 实现拨打电话 实现代码真机调试 参数必须是一个对象(object)&#xff0c;它包含一些属性(参数)&#xff1a; 实现代码 <!-- 电话图标 需要在哪点击实现打电话在哪加 --> <view class"flex diygw-col-3" click"phone(item)"><view …

uniapp实现点击拨打电话功能

uniapp实现点击拨打电话 使用uniapp自带的api&#xff1a;uni.makePhoneCall 以下是具体实现的代码&#xff1a; <view class"btn" click"telFun()">电话咨询</view>methods: {//拨打电话&#xff1a;telFun() {uni.makePhoneCall({phoneNum…

JS调用拨打电话功能

1.通过window.location.href 示例&#xff1a; window.location.hreftel://123456789&#xff1b; 2.通过a标签 示例&#xff1a; uniapp调用拨打电话功能&#xff1a;使用uni.makePhoneCall 示例&#xff1a;uni.makePhoneCall({ phoneNumber: Phone, success(){ console.l…

Xamarin.Android实现拨打电话的功能

目录 1、说明2、效果实现3、实现过程3.1 Manifest配置3.2 界面设置3.3 String资源3.4 具体实现 4、 代码下载5、参考资料 1、说明 通过Xamarin.Android实现拨打电话的功能。VS2019社区版 2、效果实现 3、实现过程 3.1 Manifest配置 必须得有拨打电话的权限设定。 <?xm…

flutter-拨打电话功能

使用插件:url_launcher 添加插件 命令行添加&#xff1a; flutter pub add url_launcher 这会自动在pubspec.yaml添加 url_launcher: ^6.0.20 建议直接命令行添加&#xff0c;这样就不用关心版本号是不是写对了&#xff0c;或者配置文件里配置错误什么的问题出现 导包 在…

拨打电话

拨打电话是手机常用的功能&#xff0c;Android中可以通过Intent启动android.intent.action.CALL&#xff0c;然后设置Uri参数&#xff0c;拨打电话的prefix为“tel”&#xff0c;所以如果要拨打电话1388888&#xff0c;Uri的字符串应为“tel:1388888”&#xff0c;即&#xff1…

uni-app 实现拨打电话功能(android)

最近项目中需要拨打电话功能&#xff0c;项目中实现拨打电话的代码如下&#xff0c;包括微信和真机拨打电话两种方式&#xff0c;特此记录便于日后查阅。 //#ifdef MP-WEIXIN uni.makePhoneCall({phoneNumber: 18354789632 }); //#endif //#ifdef APP-PLUS plus.device.dial(18…

Android入门篇(四):自动拨打电话、手动拨打电话

Android入门篇&#xff08;四&#xff09;&#xff1a;自动拨打电话、手动拨打电话 一、前言 最近在做的项目需要用到自动拨号的这一功能&#xff0c;17年写了一个&#xff0c;最近拿出来用发现不能使用了&#xff0c;后面查资料据说是因为Android 6&#xff08;api23&#xf…