分布式时钟 (DC)
什么是 DC?
DC (Distributed Clocks) 是 EtherCAT 从站控制器 (ESC) 中的硬件单元,用于将不同 EtherCAT 设备的本地时钟同步到一个共同的系统时间。
分布式时钟是实现精确同步的硬件基础,确保所有从站在微秒级精度下协同工作。
为什么需要 DC?
在高精度运动控制和同步应用中,多个设备必须精确同步动作:
DC 的应用场景
| 应用 | 说明 |
|---|---|
| 多轴运动控制 | 多个伺服轴精确同步运动,用于印刷、包装、电子装配等 |
| 分布式 I/O | 分布在不同位置的 I/O 模块同步采样和输出 |
| 高速测量 | 多个传感器同步采样,确保数据时间一致性 |
| 同步输出 | 多路 PWM、脉冲等信号精确同步输出 |
DC 工作原理
设备角色
从 DC 同步的角度,使用 DC 的设备分为两种角色:
- 参考时钟 (Reference Clock - R): 持有系统时间,为所有其他同步设备提供时间基准
- 从时钟 (Slave Clocks - S): 根据参考时钟调整,跟随系统时间并保持在容许偏差范围内
参考时钟始终是第一个使用 DC 的从站(按帧传播顺序)。配置工具会自动选择,用户不应手动更改。
同步过程
DC 硬件同步分为两个阶段:
初始同步
将各个从站的本地时钟(初始时彼此独立)对齐到系统时间:
漂移补偿
持续补偿本地时钟相对系统时间的偏差(由于石英振荡器参数差异、温度漂移、老化等因素):
漂移补偿命令会与过程数据帧一起发送,持续保持同步精度。
SYNC 信号
DC 单元可以生成两个同步信号:SYNC0 和 SYNC1。
SYNC0 和 SYNC1 的用途
| 信号 | 典型用途 |
|---|---|
| SYNC0 | 触发输入数据采样,确保所有从站同时读取输入 |
| SYNC1 | 触发输出数据更新,确保所有从站同时更新输出 |
通过 SYNC0 和 SYNC1 的配合,可以实现:
- 所有从站在精确的时间点同步采样输入
- 所有从站在精确的时间点同步更新输出
- SYNC1 相对于 SYNC0 的偏移可以预留数据处理时间
DC 配置参数
DC 配置分为主站配置和从站配置两部分。
主站配置(全局)
适用于整个网络的配置:
| 参数 | 说明 |
|---|---|
| Reference Clock | 参考时钟设备(自动选择,不应手动更改) |
| SYNC Shift Time | 主站控制任务启动时间与 SYNC0 事件生成的时间关系 |
从站配置(单个从站)
每个从站的独立配置(来自 ESI 文件):
SYNC0 配置:
- Cycle Time: SYNC0 周期时间(可与通信周期成比例,或固定周期)
- Shift Time: 该从站的额外偏移时间
SYNC1 配置:
- Cycle Time: SYNC1 周期时间(可与通信周期或 SYNC0 同步)
- Shift Time: SYNC1 相对于 SYNC0 的偏移
从站 DC 配置由 ESI 文件定义,是设备制造商根据应用需求设置的默认值。用户不应手动更改从站配置,以免影响设备正常工作。
DC 同步模式
基于 DC 的同步模式称为 DC-Synchronous 模式,只有在 ESI 文件中定义了 DC 支持的从站才会被同步。
可用状态
| 同步机制 | PREOP | SAFEOP | OP |
|---|---|---|---|
| DC 时钟同步 | ✓ | ✓ | ✓ |
| SYNC 信号 | ✗ | ✓ | ✓ |
DC 时钟同步在所有状态下都会进行,但 SYNC 信号只在 SAFEOP 和 OP 状态下有效。
同步精度
DC 可以实现微秒级以下的同步精度:
| 指标 | 典型值 |
|---|---|
| 时钟同步精度 | < 1 µs |
| SYNC0/SYNC1 抖动 | < 100 ns(取决于 ESC 型号) |
| 多轴同步误差 | < 1 µs |
这种高精度使得 EtherCAT 能够满足最严格的运动控制和同步要求。
主站循环时间对 DC 同步的影响
主站的循环时间(Cycle Time)对 DC 同步有重要影响,是影响系统整体同步性能的关键因素。
循环时间的影响
SYNC0/SYNC1 周期配置
SYNC0 和 SYNC1 的周期通常配置为与主站循环时间成比例关系:
| 配置方式 | 说明 | 适用场景 |
|---|---|---|
| 同步于循环时间 | SYNC0 = N × 主站循环时间 | 大多数应用(推荐) |
| 固定周期 | SYNC0 独立于主站循环时间 | 特殊应用(如高速采样) |
在大多数应用中,SYNC0 周期配置为与主站循环时间相同(1:1),这样确保每个通信周期都有一次同步事件。
循环时间抖动的影响
主站循环时间的**抖动(Jitter)**会直接影响 DC 同步性能:
理想循环时间:
周期1 周期2 周期3 周期4
|---1ms---|---1ms---|---1ms---|---1ms---|
稳定,抖动 < 1µs
有抖动的循环时间:
|--0.98ms--|--1.02ms--|--0.99ms--|--1.01ms--|
↑ 抖动较大,影响同步精度
| 循环时间抖动 | 对 DC 同步的影响 |
|---|---|
| < 1 µs | 优秀,可实现最佳同步性能 |
| 1-10 µs | 良好,适合大多数运动控制应用 |
| > 10 µs | 较差,可能影响高精度同步 |
| > 100 µs | 不可接受,无法保证同步精度 |
循环时间选择建议
| 应用类型 | 推荐循环时间 | 说明 |
|---|---|---|
| 高速运动控制 | 250 µs - 500 µs | 多轴伺服、印刷机械 |
| 通用运动控制 | 1 ms | 最常用,平衡性能和负载 |
| 分布式 I/O | 1 ms - 4 ms | I/O 模块、传感器采集 |
| 低速过程控制 | 10 ms - 100 ms | 温度、压力等慢速控制 |
主站必须保证循环时间的稳定性,否则会导致:
- DC 同步精度下降
- SYNC0/SYNC1 信号不稳定
- 从站应用层同步失败
- 运动控制抖动
主站循环时间与 SYNC Shift Time 的关系
SYNC Shift Time 定义主站控制任务启动与 SYNC0 事件的时间关系。
时间关系说明
| 时间点 | 事件 | 说明 |
|---|---|---|
| t = 0 | 主站任务启动 | 开始处理控制逻辑,准备输出数据 |
| t = Shift Time | SYNC0 触发 | 从站同步采样输入/更新输出 |
| t = 循环周期 | 下一周期开始 | 主站任务重新启动 |
计算公式
SYNC Shift Time = 循环周期 × (50% ~ 80%)
示例:循环周期 = 1000 µs
- 推荐范围: 500 ~ 800 µs
- 典型值: 600 µs (60% 循环周期)
不同 Shift Time 的影响
| Shift Time | 占比 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|---|
| < 50% | 过小 | - | 数据可能未准备好 | 不推荐 |
| 50% - 60% | 适中 | 平衡处理时间和同步延迟 | - | 通用应用 |
| 60% - 80% | 较大 | 充足的数据处理时间 | 略增加延迟 | 复杂控制逻辑 |
| > 80% | 过大 | - | 可能与下周期冲突 | 不推荐 |
Shift Time 的作用
- 数据处理时间: 预留足够时间让主站完成控制逻辑计算
- 通信保障: 确保输出数据在 SYNC0 触发前已发送到从站
- 避免冲突: 防止当前周期的通信与下周期任务启动冲突
- 同步精度: 保证从站在精确时刻采样/输出,实现多设备同步
实际配置示例
| 循环周期 | 推荐 Shift Time | 说明 |
|---|---|---|
| 125 µs | 70 - 100 µs | 高速应用,需要快速响应 |
| 250 µs | 140 - 200 µs | 超高速多轴同步 |
| 500 µs | 280 - 400 µs | 高速运动控制 |
| 1000 µs | 600 - 800 µs | 标准运动控制(最常用) |
| 4000 µs | 2500 - 3200 µs | 分布式 I/O |
循环时间监控
为保证 DC 同步质量,建议实时监控主站循环时间:
| 监控指标 | 目标值 | 说明 |
|---|---|---|
| 平均循环时间 | = 设定值 ± 0.1% | 确保循环时间准确 |
| 最大抖动 | < 1 µs | 控制抖动在可接受范围 |
| 最大/最小循环时间 | < ±1% 偏差 | 检测异常情况 |
| 循环超时次数 | 0 | 避免任何超时 |