1. XY2-100协议概述

做激光振镜控制这么多年,我一直觉得XY2-100是个很“接地气”的协议。它不像EtherCAT那样需要复杂的网络栈,也不像SPI那样只适合板级通信。说白了,它就是专门为激光扫描振镜量身定做的一套串行总线。

我第一次接触它是在一个打标机项目里。那时客户要求振镜响应速度要达到12位精度、100k位置更新率。我翻遍了手册,发现几乎所有主流振镜驱动器——Cambridge Technology、Scanlab、Raylase——都支持XY2-100。嗯,从那以后我就没换过别的协议。

1.1 发展历史

XY2-100最早由通用扫描(General Scanning)在1990年代提出。当时振镜控制还是±10V模拟电压的天下,模拟信号容易受干扰,而且一根电缆只能传一个轴的位置。

我记得老工程师跟我讲过,以前调试振镜最怕走线长,模拟电压一抖,激光点就在工件上“跳舞”。为了解决这个问题,大家开始在驱动器里集成ADC,直接在控制器侧做数字闭环。但数字传输怎么做?当时没有现成的工业总线适合这种高速、低延迟的应用。

于是XY2-100应运而生。它本质上是把位置数据编码成20位的串行帧,用差分信号(RS-422电平)传输。时钟线、数据线、同步线,就这么简单。后来2000年左右被推广为行业标准,现在几乎所有激光振镜系统都在用。

1.2 应用领域

这协议能干的事挺多,我列几个常见的:

  • 激光打标:光纤、CO₂、紫外打标机里,振镜几乎都是用XY2-100控制的。我做过一个飞行打标项目,传送带速度2m/s,XY2-100的100k更新率完全撑得住。
  • 激光切割和焊接:动力电池极耳切割、白车身焊接,振镜需要高精度轨迹,XY2-100的16位或20位分辨率是关键。
  • 3D打印(SLM/SLA):选区熔化设备里,振镜扫描整个粉床,协议帧的同步信号用于控制激光开关。
  • 医疗美容设备:比如脱毛、祛斑,需要快速扫描大光斑,协议稳定不丢帧就行。
  • 半导体晶圆标记:对精度要求极高,XY2-100配合光学编码器反馈可以实现亚微米级定位。
典型应用场景对比
领域典型帧率分辨率需求我遇到过的问题
激光打标100 kHz16 bit线缆过长导致时钟抖动,后来加了终端电阻解决
激光切割50 kHz20 bit同步信号没对齐,拐角处出现锯齿
3D打印50~100 kHz16 bit多振镜同步需要共用同一时钟源

1.3 基本工作原理

XY2-100的物理层很简单,一共4对差分信号线:

  • CLOCK+/-:主控提供的位时钟,频率通常10~20 MHz。我习惯用16.777 MHz,正好是2^24,方便做精确延时。
  • SYNC+/-:帧同步信号,每个数据帧开始时拉高,持续一个时钟周期。
  • CHANNEL1+/- 和 CHANNEL2+/-:两路数据线,分别传输X轴和Y轴的位置命令。

每个数据帧有20位(bit),格式长这样:

bit 19    18   17:2      1       0
    起始位 标志位 位置数据(16位) 校验位 停止位

说起来有点绕,我用自己的理解捋一遍:

  1. 主控在SYNC上升沿后,开始发送CH1和CH2的20位数据,每位在CLOCK上升沿被驱动器采样。
  2. 起始位固定为1,标志位可以携带激光开关或报警信息(各家定义不同)。
  3. 位置数据默认16位,但有些驱动器支持扩展成20位(比如Scanlab的XY2-100-20)。
  4. 校验位是奇校验,停止位固定为0。为什么要奇校验?因为传输过程偶尔丢一位,奇校验能发现奇数个错误。我吃过亏,一开始没做校验,结果振镜偶尔跑到莫名其妙的位置,后来加了个软件校验就好了。

核心参数速查表

参数典型值说明
波特率10~20 Mbps每位时钟对应一个比特
帧长20 bit可根据驱动器配置为20/24/26位
更新率50~100 kHz取决于时钟频率和帧长
差分电平RS-422Vod≥2V,共模范围-7V~+7V

1.4 为什么它能活到现在?

你想想看,一个1990年代提出的协议,到2025年还在用,为什么?我觉得就三个字:确定性。XY2-100是纯硬件实时协议,没有软件协议栈的随机延迟。每一帧的16位数据,从主控发出到振镜执行,延迟固定且只有几个微秒。

我曾经尝试用SPI加DMA模拟XY2-100,虽然逻辑正确,但一旦系统中断响应变慢,振镜就开始抖动。后来乖乖用专用硬件(FPGA或ASIC)来实现。说白了,这个协议的优点就是没有“惊喜”。

个人经验:如果你用软件模拟XY2-100(比如STM32的定时器+PWM),一定要确保CPU不被其他中断打断超过一个时钟周期。否则帧上的某个位会拉长,驱动器直接丢弃整帧。我踩过这个坑,后来用DMA+双缓冲解决了。

注意:不同厂家的XY2-100实现有细微差异。比如Cambridge Technology的帧格式里,标志位用来传输报警状态;而Scanlab的则用标志位控制激光开关。配套前一定要仔细看驱动器的数据手册。

1.5 系统结构总览

下面这张图展示了XY2-100协议在典型振镜控制系统中的位置。画图时我特意把信号流向和帧结构放在一起,方便理解。

XY2-100 协议系统结构图 主控 (MCU/FPGA) 生成时钟 & 帧数据 RS-422 差分驱动 CLOCK+/-, SYNC+/-, DATA+/- 振镜驱动 (Galvo Driver) 解帧 & DAC 输出 数据帧结构 (20 bit) 起始位 标志位 位置数据 (16-bit: X 或 Y 位置) 校验位 停止位 • 起始位 = 1 • 标志位:激光开关/报警(厂家定义) • 校验位:奇校验 bit18~2 的异或结果取反 时序示意(一个完整帧周期) CLOCK … 20个上升沿采样数据 SYNC 帧开始位置,持续1个时钟高电平 DATA 每个时钟上传1位,共20位 💡 实际应用中,CH1和CH2的数据在同一个SYNC帧内同时传输

从图里可以看到,主控生成CLOCK和SYNC,同时把CH1、CH2数据通过RS-422差分驱动发到振镜驱动器。驱动器内部根据SYNC锁存数据,解码后送到DAC控制电机转动。整个过程没有软件中断参与,延迟只取决于传输线的长度和DAC的建立时间。

好了,这一章把XY2-100的来龙去脉讲清楚了。后面我会详细拆解每个信号线的时序要求、帧校验的计算方法,还有常见的调试技巧——比如怎么用示波器抓波形来判断通信是否正常。嗯,这些内容干货更多,我们慢慢来。