XY2-100协议简介

先说说背景。我刚接触激光振镜控制那几年,市面上主流的同步串行协议就那么几种,XY2-100是其中用得最广的一个。它由德国公司最早提出,专门用于高速激光扫描系统中控制器与振镜电机之间的实时位置同步。说白了,就是让主控板告诉振镜“你现在该转到哪个角度”,并且保证每一微秒的指令都准时到达。

核心要点: XY2-100是一种全双工、差分同步串行通信协议,时钟频率通常在2 MHz~16 MHz之间,数据帧固定为20比特。它不依赖复杂的协议栈,用简单的硬件状态机就能实现,非常适合对实时性要求苛刻的闭环控制场景。

1.1 从何而来——协议背景

上世纪90年代,激光加工行业开始爆发。传统的模拟信号控制振镜存在噪声大、漂移严重的问题。我遇到过一些老设备,模拟信号线稍微挪个位置,光束定位就偏了十几个微米。后来XY2-100被提出来,用差分数字信号替代单端模拟,抗干扰能力直接上了两个台阶。它本质上是一个简化的HDLC帧结构,但去掉了地址和校验,只保留数据、时钟和同步信号,目的就是——快。

协议特性值
信号类型LVDS差分(通常RS-422电平)
数据帧长20位(1位起始 + 16位数据 + 3位控制/校验)
同步方式上升沿同步,NRZ编码
最大速率16 Mbps(常见12 MHz、8 MHz)
传输距离通常10米内(取决于线缆质量)

1.2 谁在用——应用领域

你想想看,所有需要高速、高精度、低抖动的运动控制场景,几乎都能见到XY2-100的影子。我列几个典型领域:

  • 激光打标:振镜每秒需要响应几万次位置修正,模拟方式跟不上了。
  • 激光切割/焊接:飞行光路中,振镜必须与激光脉冲精确同步,错一个时钟周期,切缝就歪了。
  • 3D打印(SLM/SLA):振镜扫描路径需要与浆料/粉末铺层时序配合,XY2-100的确定性延迟是优势。
  • 高速视觉定位:配合编码器反馈,实现实时追踪。

曾经踩过的坑: 有一回我帮客户调试一台双振镜拼接系统,两边控制器用的都是XY2-100,但时钟源不同步,导致拼缝处出现周期性错位。后来强制用同一时钟源才解决。所以,多轴系统中时钟同源是第一原则。

1.3 怎么传——基本通信模式

XY2-100使用四根差分信号线:CLOCK(时钟)、SYNC(同步)、DATA(数据)、DATA_DIR(方向,可选)。通信过程非常简单:

  1. Master(控制器)持续输出CLOCK和SYNC。
  2. 当SYNC拉低时,表示新一帧开始。
  3. 在随后的20个CLOCK上升沿,Master逐位发送数据(MSB first)。
  4. Slave(振镜)在同一个时钟沿采样,并在第20位之后开始处理指令。

这就是它的全部。没有应答,没有重传。为什么能这么简单?因为振镜是硬实时设备,它只需要最新的指令,旧帧直接丢弃。我建议大家测试时重点抓取三个点:SYNC下降沿到第一个数据位的建立时间、时钟占空比、数据保持时间。

信号定义与典型时序

信号方向功能
CLOCK+ / CLOCK-Master→Slave差分时钟,频率2~16 MHz,占空比45%~55%
SYNC+ / SYNC-Master→Slave帧同步,低电平有效,宽度至少1个时钟周期
DATA+ / DATA-双向(半双工)数据:Master在SYNC期间发送位置指令,Slave在随后的时钟沿返回状态

这里有个细节:数据方向。早期版本是单向的(只发指令),后来增加了DATA_DIR信号来切换方向,实现半双工反馈。我测试过的多数振镜驱动器都支持双向模式,但反馈延迟需要在时序预算里算进去。

个人习惯: 我会在SYNC信号上串联一个22Ω电阻,靠近驱动器端。这个电阻能抑制过冲,尤其在长线缆时效果明显。别问我怎么知道的——是在一次老化测试中,SYNC过冲把驱动芯片的输入端打坏了,换了一片才发现的。

知识结构图:XY2-100通信系统

下面这张图展示了从主控到振镜的完整信号链路与协议分层。注意,物理层是差分对,数据链路层就是20帧格式,应用层是位置/状态映射。

XY2-100 通信系统架构 主控制器 (Master) MCU / FPGA 差分收发器 RS-422 / LVDS 差分传输线 双绞屏蔽线 CLOCK+ / - SYNC+ / - DATA+ / - (可选)DIR+ / - 差分接收器 RS-422 / LVDS 振镜驱动器 (Slave) DSP / 硬件状态机 编码器 (反馈) 位置 / 速度 半双工反馈 图例说明: ● 蓝色主控 → 绿色收发器 → 橙色传输线 → 绿色接收器 → 紫色振镜驱动 ● 反馈路径(青色编码器)经半双工方式回传,通常使用DATA线在时钟空闲时段传输 ● 箭头方向表示数据流方向,虚线表示可选或半双工路径

协议帧格式详解

每一帧20位,结构如下:

位序号:  19   18   17   16   15 ... 0
含义:    START  C1   C0   D15 ... D0
C1, C0 = 控制位 (00=位置数据, 01=状态请求, 10=配置, 11=保留)
D15-D0 = 16位数据 (位置值或状态)

注意:START位始终为0,用于帧同步检测。我在项目中看过一些实现偷懒,没检查START位,结果偶尔出现帧错位导致振镜乱跳。建议你们在FPGA或MCU接收端,一定要做START位验证。

时序关键参数(典型值,8 MHz时钟):

时钟周期125 ns
SYNC低电平宽度≥ 1 时钟周期 (125 ns)
数据建立时间 (tSU)≥ 20 ns
数据保持时间 (tHD)≥ 5 ns
帧周期20 × 125 ns = 2.5 μs

为什么要关注保持时间?我曾经遇到一块FPGA的I/O时序约束没做对,数据在时钟沿之后只保持了3 ns,接收器采样失败。后来在数据线上串了10 pF电容,人为增加延迟才搞定。嗯,这是野路子,正规做法应该调整PCB走线长度或增加输出驱动强度。

好了,第一章就到这里。记住,XY2-100的核心是“简单、可靠、实时”。后面章节我们会深入到具体的波形测试方法、示波器设置、抖动分析等内容。