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 kHz | 16 bit | 线缆过长导致时钟抖动,后来加了终端电阻解决 |
| 激光切割 | 50 kHz | 20 bit | 同步信号没对齐,拐角处出现锯齿 |
| 3D打印 | 50~100 kHz | 16 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位) 校验位 停止位
说起来有点绕,我用自己的理解捋一遍:
- 主控在SYNC上升沿后,开始发送CH1和CH2的20位数据,每位在CLOCK上升沿被驱动器采样。
- 起始位固定为1,标志位可以携带激光开关或报警信息(各家定义不同)。
- 位置数据默认16位,但有些驱动器支持扩展成20位(比如Scanlab的XY2-100-20)。
- 校验位是奇校验,停止位固定为0。为什么要奇校验?因为传输过程偶尔丢一位,奇校验能发现奇数个错误。我吃过亏,一开始没做校验,结果振镜偶尔跑到莫名其妙的位置,后来加了个软件校验就好了。
核心参数速查表
| 参数 | 典型值 | 说明 |
|---|---|---|
| 波特率 | 10~20 Mbps | 每位时钟对应一个比特 |
| 帧长 | 20 bit | 可根据驱动器配置为20/24/26位 |
| 更新率 | 50~100 kHz | 取决于时钟频率和帧长 |
| 差分电平 | RS-422 | Vod≥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协议在典型振镜控制系统中的位置。画图时我特意把信号流向和帧结构放在一起,方便理解。
从图里可以看到,主控生成CLOCK和SYNC,同时把CH1、CH2数据通过RS-422差分驱动发到振镜驱动器。驱动器内部根据SYNC锁存数据,解码后送到DAC控制电机转动。整个过程没有软件中断参与,延迟只取决于传输线的长度和DAC的建立时间。
好了,这一章把XY2-100的来龙去脉讲清楚了。后面我会详细拆解每个信号线的时序要求、帧校验的计算方法,还有常见的调试技巧——比如怎么用示波器抓波形来判断通信是否正常。嗯,这些内容干货更多,我们慢慢来。