1. 编码器基础与信号类型
各位好,我是老张。在工控这行摸爬滚打十几年,编码器信号丢失这坑,我踩过不止一次。今天咱们就从最基础的编码器原理讲起。你想想看,连信号怎么来的都不清楚,出了问题怎么排查?
1.1 增量式编码器原理
增量式编码器,说白了就是给运动“数格子”。它内部有个码盘,上面刻着明暗相间的条纹。光通过码盘,被光电器件接收,就产生了脉冲信号。
我习惯把增量式编码器比作一个计数器。它不告诉你现在在哪儿,只告诉你“走了多少步”。每次上电,位置都是未知的,必须回零校准。
核心要点:增量式编码器输出的是脉冲序列,需要外部计数器来累加位置。断电后位置信息丢失。
输出信号最常见的是A/B两相,相位差90°。通过判断哪一相超前,就能知道旋转方向。Z相是零位脉冲,每转一圈输出一个,用于回零校准。
我的经验:选型时别只看分辨率。我在一个包装机上用过2000线的编码器,结果振动太大,信号抖得没法看。后来换了带差分输出的,问题才解决。
1.2 绝对式编码器原理
绝对式编码器就高级多了。它每个位置都有唯一的编码值,上电就知道当前位置。不需要回零,不怕断电。
它的码盘是多圈刻线,用格雷码或二进制码来编码。格雷码有个好处——相邻位置只变化一位,不会出现大跳变。嗯,这在抗干扰上很有优势。
| 特性 | 增量式 | 绝对式 |
|---|---|---|
| 断电记忆 | 无 | 有 |
| 上电位置 | 未知 | 已知 |
| 抗干扰能力 | 较弱 | 较强 |
| 成本 | 低 | 高 |
| 典型应用 | 速度反馈、简单定位 | 绝对位置、安全相关 |
注意:绝对式编码器虽然不怕断电,但信号线断了照样丢位置。我曾经在一条生产线上遇到过,编码器本身没问题,但接头松了,导致位置跳变。排查了两天才找到原因。
1.3 信号输出形式
编码器信号怎么传出来?这里分几种常见接口。
A/B/Z相(推挽/差分)
这是增量式编码器最传统的输出方式。A相和B相是正交脉冲,Z相是零位脉冲。推挽输出适合短距离,差分输出(RS-422)能传更远,抗干扰也更好。
我建议:距离超过5米,或者现场有变频器、电机等强干扰源,一定要用差分输出。别省那点钱,信号丢了损失更大。
SSI(同步串行接口)
SSI是绝对式编码器常用的接口。它用时钟线和数据线,主站发时钟,编码器回数据。优点是简单可靠,但速度不快。
SSI的帧格式一般是:起始位 + 位置数据 + 状态位 + 校验位。时钟频率通常在100kHz到2MHz之间。
// SSI读取示例(伪代码)
uint32_t ReadSSI(void) {
uint32_t data = 0;
for (int i = 0; i < 25; i++) { // 25位数据
CLK_HIGH();
delay_us(1);
data = (data << 1) | MISO_READ();
CLK_LOW();
delay_us(1);
}
return data;
}
BiSS(双向同步串行接口)
BiSS是SSI的升级版,速度更快,还支持双向通信。它可以在读取位置的同时,写入参数或状态信息。
BiSS的时序比SSI复杂,但好处是能实时监测编码器健康状态。比如信号质量、温度、警告标志等。
我的建议:如果做安全相关的应用,优先考虑BiSS。它带CRC校验,还能读诊断信息。我在一个伺服驱动器项目里用过,确实比SSI放心。
1.4 常见故障模式分析
编码器出问题,无非就那几种情况。我列个清单,大家对照排查。
- 信号丢失:完全没信号。原因可能是断线、电源故障、编码器损坏。
- 信号跳变:位置突然变化。通常是干扰、接触不良、或编码器内部故障。
- 信号毛刺:脉冲宽度异常。可能是码盘脏了、光电器件老化、或电缆屏蔽层接地不良。
- 相位错误:A/B相顺序不对。一般是接线错误,或者编码器方向与机械方向不匹配。
- 零位偏移:Z相位置不准。可能是安装松动,或者码盘移位。
避坑指南:我曾经遇到一个案例,编码器信号偶尔丢失,但查线、查电源都没问题。最后发现是编码器电缆和动力电缆走同一个线槽,干扰串进来的。从那以后,我要求编码器电缆必须单独走管,屏蔽层单端接地。
下面这张图,是我自己总结的编码器故障排查思路,大家可以参考。
好了,编码器的基础知识就讲到这里。记住,信号丢失不是玄学,一定有原因。按流程排查,大部分问题都能找到根因。