IgH详解十、EtherCAT DC(1)理论

article/2025/10/9 2:20:52

(Distributed Clocks) 分布式时钟

        分布式时钟相当于每个节点都有一个时钟,在同一时刻,触发所有节点做给定的动作,要达到同一时刻触发就要求大家的时钟保持一致,也就是同步。

        比如每个人都有手机,只要手机接入网络,就会进行时间同步,获得一致的时间,比如早上9点上班,网购的整点秒杀,如果我们的手机时间不同步,可能就上班迟到了,点开网页秒杀已经结束了。

        比如买了两个打印机,左边的1万,右边的9.9包邮,现在要在纸上打印一条斜线,左边的完全同步,X,Y同时动画了一条斜线,右边的没有同步,X轴收到移动信号先动了,过了1S,Y轴也收到信号开始动了,X轴发现到坐标点了,就停止了,Y轴发现还没到坐标点就继续运动等到了坐标点停止运动。左边按照要求画了直的斜线,右边有明显的错位。

        从图中可以看到,虽然都达到了最终的点位,但是中间走过的路径却不一样,用机器人加工作业也是一样,同步性越好做出来的东西就更符合设计规划。

        下面介绍EtherCAT DC

        EtherCAT主站上接了如下设备,一般会选择第一个带DC功能的从站作为参考时钟,利于参考时钟的往后传播(后面介绍)。

      引起时钟不同步的有:

1、传播延迟(Propagation Delay),

        比如第一个从站为参考时钟,第一个从站收到报文的时间是 9:00:00.000,000,000,第二个从站收到报文的时间9:00:00.000,000,500,第一个从站处理转发报文到第二个从站中间产生了500ns的延迟,当总线上设备很多的时候就会累积比较大的延时

2、偏移(Offset compensation)

        两个从站不是同时启动的,第一个从站启动了一个小时后,第二个从站才上电,就会出现1h的时间偏移

3、漂移(Drift compensation)

        每个从站的晶振的振动频率会有差异,比如第一个从站1S 振 1000000010,第二个从站1S振999999990,这样1S就会产生20ns的差异,累积起来会是一个很大的差异。

DC同步就是要解决上述存在的问题。

        先计算出传输延时,再计算出时间偏移,就能得到一个基本准确的时间了,再通过周期性的补偿漂移,就能得到很准确的同步时钟。

EtherCAT理论上时钟同步可以控制在100ns内。

DC计算

EtherCAT DC时钟计算方法

 

延迟时间写入

主站的时钟偏移

偏移时间写入

上述的计算还不是特别的精确,不精确的部分可以通过漂移补偿来消除

漂移补偿需要参考时钟的从站每个周期广播自己的时间,从站根据时间来进行微调

ARMW/FRMW  0x910寄存器

        两个命令功能是一样的就是参考时钟从站把自己的时间读出来写入包文,其他从站从报文中读出时间写入从站(只是寻址方式不一样),这也就是为什么选第一个从站作为参考时钟,选择其他从站会带来前面从站同步的问题。


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

相关文章

EtherCAT 之邮箱

EtherCAT特点 由于工作需要, 最近在学习EtherCAT总线,对于主站和从站的通信,发表一下我个人的理解。 1. EtherCAT为保证低延迟高响应,不可能像MODBUS一样用软件解析数据包再转发的模式,而是采用“高速火车”不停车上下…

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…