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

article/2025/10/9 2:55:23

这里写图片描述

驱动代码中,同步时钟涉及到如下几个概念:
⑴ 本地时钟:每一个支持DC的从站都有一个纳秒级分辨率的本地时钟寄存器。

每次从机上电,则寄存器从0开始计时,这就意味着不同的从机因为上电开机的时间不同而本地时钟也会有差异,所以需要对从机的本地时钟对比参考时钟进行偏移补偿。再者,从机的时钟一般由时钟单元为参考,所以每个从机的时钟频率也会有极小的误差,但是由于这种极小的误差在长时间的工作中会累积,所以想要完全的时钟同步,也要对这种时钟漂移进行补偿。

⑵ 应用时间:应用层为总线提供的基础时间。
用途:
① 配置从站的时钟偏移;
② 为从站的同步脉冲发生器设定开始时间;
③ 为主站时钟同步参考时钟;
偏移补偿:对于偏移补偿,每个从站都有偏移补偿寄存器,偏移补偿值加上从站本地时钟的初始值就是参考时钟的值,数学表达式为:
这里写图片描述
漂移补偿:所谓的漂移误差就是由于DC从站使用各自本地时钟源,它们的计时周期存在一定的漂移,这将导致时钟运行不同步。因为支持DC从站的一个特殊机制使得漂移补偿成为可能,这个机制就是当有一个写系统时间寄存器操作的时候,内部时间控制环路(internal time control loop)去比较写入时间(减去传输延迟)和当前的系统时间,比较的误差将作为时间控制寄存器的输入,依次来增加或减缓本地时钟,从而消除漂移误差。

传输延迟:以太网帧在由从站到从站的传输过程中需要一些时间,假如不作处理,传输的这个时间将会不断的积累,最终可能达到毫秒级误差,因此我们必须在漂移补偿的时候将传输延迟考虑在内。支持DC的EtherCAT从站提供了一个测量传输延迟的方案:对于从站的四个端口都配有一个接收时间寄存器,大部分当数据帧到达每个从站后,从站都会分别保存每个端口接收到的以太网帧的时刻。主站通过读取记录的这个时间值来计算EtherCAT帧在从站之间和从站到参考时钟的传输延迟并把从站到参考时钟的传输延迟写入传输延迟寄存器中,通过这种方法,漂移补偿可以达到纳秒级同步。

检测同步:支持DC的从站提供了32位系统时间寄存器(地址为0x092c),该寄存器以符号幅度码(sign-and-magnitude coding)的形式存放着本地时间与参考时钟之间的差值(纳秒级分辨率)。在linux中,可以使用命令行工具查看该寄存器的值,具体操作为:

$watch -n0 "ethercat reg_read -p4 -tsm32 0x92c"

同步信号:同步时钟仅仅是总线上同步事件的一个必要条件,每个支持DC从站有两个可编程同步事件,事件触发的同步信号以备供应用层调用。每个同步事件可根据应用要求既可以只触发一次也可以循环触发。编程同步信号是一种所谓的设置”AssignActivate“字和设置同步信号的周期和转变时间的问题。”AssignActivate“字的设置方式跟具体的从站有关,而且必须从XML文件中对描述从站对”AssignActivate“字的设置,在典型的同步信号的配置可以找到”OpModes“。


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

相关文章

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…

uniapp中拨打电话

1. 记录日常采坑 刚开始是这样写的 <view class"" tap"call()">联系客服 </view>call(){let phone ‭123456789‬uni.makePhoneCall({phoneNumber:phone,success:function(){console.log(拨打电话成功);},fail() {console.log(打电话失败了…

【uniapp】微信小程序中实现点击拨打电话的功能

手机端运行会直接调起电话按钮&#xff0c;代码如下&#xff1a; <view class"text2_button" click"freeTell"><text>4007-000-000</text> </view>// js部分-联系电话freeTell() {wx.makePhoneCall({phoneNumber: 4007-000-000, …

怎样才能高效的拨打电话—,人工智能系统,呼叫中心,外呼系统建设

外呼平台是一个与通话相关的多功能管理平台&#xff0c;将通信资源与相关应用技术的管理能力平台化&#xff0c;高效利用通信资源&#xff0c;外呼能力赋能产品服务创新和客户响应能力&#xff0c;同时无缝对接业务、数据、AI等其他能力。外呼平台集成了资源隔离和资源分配&…

(一)来自 192.168.xx.xx的回复: TTL 传输中过期。

一、遇到的问题 内网ping不同&#xff0c;情况如下&#xff1a; 二 、解决方法 http://www.myexception.cn/network/246789.html

主机ping不通虚拟机 TTL传输中过期的解决办法

主机ping不通虚拟机 TTL传输中过期的解决办法 Linux 虚拟机设置的自动获取ip地址。 虚拟机ip地址改变之后&#xff0c;虚拟机可以ping通主机&#xff0c;主机ping虚拟机显示TTL传输中过期&#xff0c;CRT连接不上Linux虚拟机了。 我这边的原因是虚拟机的 VMnet8设置的网络地址是…

TIL传输中过期

最开始是连不上测试的数据库&#xff0c;然后用在cmd界面ping数据库的地址ping不通&#xff0c;出现这个报错&#xff0c;一开始按照网上思路&#xff0c;使用ipconfig/flushcdn清除缓存&#xff0c;但是没有用效果。 后来发现其实是自己的电脑跟开发库不是在一个网段里面&…

ttl传输中过期怎么解决_TTL在运输错误和解决方案中过期

ttl传输中过期怎么解决 TTL is the short code for Time To Live. TTL is located in IP packets where it is used to hold the count of intermediate hops. TTL is value is set by source host. Windows operating system set it to 64 where Linux operating systems set …