EtherCAT笔记(六)—— 分布时钟之一

目录

[1. 分布时钟的功能](#1. 分布时钟的功能)

[2. 分布时钟涉及到的概念](#2. 分布时钟涉及到的概念)

[2.1 系统时间](#2.1 系统时间)

[2.2 参考时钟 & 从时钟](#2.2 参考时钟 & 从时钟)

[2.3 主站时钟](#2.3 主站时钟)

[2.4 本地时钟](#2.4 本地时钟)

[2.4.1 本地时钟的初始偏移量](#2.4.1 本地时钟的初始偏移量)

[2.4.2 本地时钟的时钟漂移](#2.4.2 本地时钟的时钟漂移)

[2.5 本地系统时间](#2.5 本地系统时间)

[2.6 传输延时](#2.6 传输延时)

人们理解知识的一个阻碍就是那些从没见过的概念和这些概念的随意使用。

分布时钟(Distributed Clock)绝对是EtherCAT的重头戏。从字面的概念来讲,分布时钟是可以分成两个部分来理解。一个是名词 "时钟",时钟是一个计时或表示时间的概念。时钟(clock,timepiece)简称钟,所有计时装置都可以称为计时仪器https://zh.wikipedia.org/zh-cn/%E6%99%82%E9%90%98#:~:text=%E6%97%B6%E9%92%9F%EF%BC%88clock%EF%BC%8Ctimepiece%EF%BC%89%E7%AE%80%E7%A7%B0,%E7%9A%84%E6%9C%89%E9%92%9F%E6%91%86%E7%9A%84%E9%92%9F%E3%80%82

另一个名词是 "分布",分布就是散落在各个角落的一种描述(词穷了)。两个东西组合到一起:"分布时钟",也就是散落在各个设备里面的计时装置。分布时钟有时也用 DC 来简称。

++EtherCAT的分布时钟总是伴随着一些神秘色彩,由浅入深,勿忘初心。++

1. 分布时钟的功能

分布时钟在EtherCAT中可以使所有的设备使用同一个系统时间,这些设备之间的系统时间相同的程度可以达到纳秒级。

系统时间,从2000年1月1日0点开始,使用64bits,精确的1ns,即每ns增加一个计数。最大可计 2^64-1ns 约584年,所以不要担心你的分布时钟计崩了。

分布时钟有以下主要功能:

(1)实现从站之间的时钟同步:由于各个支持DC的设备计时的时钟源、漂移等一系列原因,可能使这些设备计时并不是完全相同,即使他们确实是对同一时刻开始的计时。因此支持分布时钟功能的从站就可以通过调整来使所有设备使用相同的时钟。

(2)实现主站与从站的时钟同步:主站的计时装置可以使用与从站相同的时间。

(3)为各个从站同时产生输出事件:当到达某个时间后,所有从站共同执行输出动作,从而使所有从站在同一时刻执行某些动作,如输出一个电流。

(4)为输入事件打精确的时间戳:为同时输入的数据标记相同的时间。例如我想测量一个从一个数字量输出命令的下发开始,到某个数字量输入接口获取到这个跳变开始的点的总延时。就可以通过这种时间戳的方式去计算。

(5)产生同步的中断:中断常被用来做紧急处理、同步处理等操作,而多个设备之间通过通信方式来达到纳秒级的同步中断几乎是不可能的。分布时钟可以完成这个任务。

2. 分布时钟涉及到的概念

2.1 系统时间

定义:2000年1月1日0时0分0秒,使用一个64bit的数据来表示系统时间,单位为ns,即每过1ns,该值增加1.

2.2 参考时钟 & 从时钟

参考时钟定义:EtherCAT通常规定在整个EtherCAT链路中,第一个具有分布时钟功能的从站作为参考时钟。

从时钟定义:EtherCAT环路中除了参考时钟的分布时钟都是从时钟。

一个类比:4个人坐在一起喝下午茶,赵大戴了块儿童玩具表,钱二戴了块大米手环,张三戴了块劳力士,王五没有表。他们四个想要明天一起来上班,体现出他们已经是公司牢不可破的铁四角,并拜张三为大哥。于是他们约定明天早上8点52分19秒准时左脚迈进公司。为确保大家同时迈进公司,几个人就选大哥张三的劳力士作为最准的时间,都调到与张三相同的时间点,分秒不差。而王五没表,大家都说他差不多时间到就行。第二天上班,三个人同时迈进公司,王五迟到3秒迈进公司。

在这个故事中:

张三的劳力士就是参考时钟,因为他是大哥。

赵大和钱而的表就是从时钟,因为他们以大哥的时间为准和大哥对齐了时间。

王五没有表,因此他晚到了3秒,但不影响他上班。

公司的时钟也已经被张三调成和劳力士一样的了。公司的时间就是主站时间。

从上面的例子也可以看出,在分布时钟里,并不在乎谁的时钟是准确的、一定表示了从2000年第一个纳秒开始的,而是谁在第一个从站,就以谁的为准。这个第一个从站也就是参考时钟。

2.3 主站时钟

主站时钟是具备计时功能的主站的时钟。主站时钟本质上是从时钟。

2.4 本地时钟

本地时钟是相对于设备自身的,每个支持DC的从站从自身的角度触发来看自己在计时的时钟就是本地时钟。而这个本地时钟相对于参考时钟的角度就是从时钟。本地时钟是独立运行的。

2.4.1 本地时钟的初始偏移量

系统上电时,独立运行的本地时钟本身就可能与参考时钟之间存在一定的差异,这个差异就是初始偏移量。

2.4.2 本地时钟的时钟漂移

时钟初始偏移量对于上电那一刻是一个状态量,也就是说这个偏移量是固定的差值。而在持续运行过程中,由于时钟源等原因,可能导致计时周期的差异逐渐累积,从而产生漂移。

2.5 本地系统时间

本地系统时间定义:每个DC从站的本地时钟经过补偿和同步之后产生本地系统时间。

2.6 传输延时

数据帧在从站之间传输会产生延迟,这个延迟可能包括物理传输上的延时,设备内部本身的延迟。

系统初始化阶段,为使各个具备分布时钟功能的从站使用相同的时钟,需要对上述中的传输延时和时钟偏移量进行测量和补偿。

相关推荐
微刻时光16 分钟前
Redis集群知识及实战
数据库·redis·笔记·学习·程序人生·缓存
chnyi6_ya1 小时前
一些写leetcode的笔记
笔记·leetcode·c#
青椒大仙KI112 小时前
24/9/19 算法笔记 kaggle BankChurn数据分类
笔记·算法·分类
liangbm32 小时前
数学建模笔记——动态规划
笔记·python·算法·数学建模·动态规划·背包问题·优化问题
GoppViper2 小时前
golang学习笔记29——golang 中如何将 GitHub 最新提交的版本设置为 v1.0.0
笔记·git·后端·学习·golang·github·源代码管理
Charles Ray3 小时前
C++学习笔记 —— 内存分配 new
c++·笔记·学习
重生之我在20年代敲代码3 小时前
strncpy函数的使用和模拟实现
c语言·开发语言·c++·经验分享·笔记
我要吐泡泡了哦4 小时前
GAMES104:15 游戏引擎的玩法系统基础-学习笔记
笔记·学习·游戏引擎
骑鱼过海的猫1234 小时前
【tomcat】tomcat学习笔记
笔记·学习·tomcat
贾saisai6 小时前
Xilinx系FPGA学习笔记(九)DDR3学习
笔记·学习·fpga开发