游标编码器为什么一定要互质:数学逻辑解析
首发于公众号「如是有为」 · 查看原文
在编码器行业里,“游标要互质”几乎已经成了一句口头禅。
做磁编码器的人知道,做双磁环时两个极对数最好互质。做电感编码器的人也知道,两组周期数最好互质。做光学双码道的人,讲到最后也常常会落到同一句话上:两个码道最好互质

这句话大家都会说,但很多时候也就停在“知道”这一层。再往下追,往往就只剩下一句“这是原理要求”。至于互质到底是什么,为什么一定要互质,互质到底保证了什么,很多人其实并没有真的把这件事在脑子里想明白。
这篇文章就只讲这一件事,而且只用高中生能跟上的知识来讲。我们不区分磁、电感、光学,因为只要你面对的是“两码道游标”,背后的数学其实是同一件事。
先别讲游标,先讲“重复”
先把一切想简单一点。
假设有一条码道,它在一整圈里重复 m 次。
这意味着什么?意味着你转完一圈,它会把同样的图案、同样的信号、同样的周期,重复出现 m 遍。
如果 m=7,那它每转 圈,信号看起来就会重复一次。
如果 m=32,那它每转 圈,信号也会重复一次。
所以,单独一条高周期码道有一个天然问题:它很细,但它不唯一。
它能告诉你,你现在落在某一类位置上。
但它不能告诉你,这个位置到底是整圈里的第几个。
这就像一条圆形走廊上装了很多扇一模一样的门。你站到某一扇门前,可以看得很清楚,但你不知道这是第 1 扇,还是第 9 扇,还是第 17 扇。因为它们本来就是重复的。
游标真正要做的事,就是把这个“重复”拆开。

两条码道放在一起,真正想要的不是“更细”,而是“唯一”
现在再加一条码道。
第一条,一圈重复 m 次。
第二条,一圈重复 n 次。
这时候系统看到的,不再是一个读数,而是一对读数。
也就是:第一条码道现在走到哪儿了,第二条码道现在走到哪儿了。
绝对位置真正依赖的,不是哪一条码道单独不重复,而是这一对读数在整整一圈里不重复。
只要一圈里每个机械位置对应的“双读数”都不一样,那绝对位置就成立了。
反过来,只要有两个不同机械位置,对应了同一对读数,那绝对位置就失败了。
所以游标问题的本质,其实很朴素:
两条本来都会重复的码道,放在一起以后,能不能让整圈里的每个位置都拿到一个唯一的“双标签”。
互质,解决的就是这件事。

为什么不互质一定不行
假设两条码道一圈分别重复 次和 次,最大公约数为 。
机械角只要前进 圈,第一条码道就走了 个周期,第二条码道走了 个周期。两者都是整数,所以两条码道同时回到原来的相位。
也就是说,组合读数每隔 圈重复一次,一圈里有 个位置无法区分。
例如 32 和 30 的最大公约数是 2。机械角前进半圈,两条码道分别走过 16 和 15 个完整周期,组合读数再次相同。
所以不互质的问题,不只是误差大小,而是在一圈里提前重号。
为什么互质就可以
用一个明确定义的例子:两条码道一圈分别重复 32 次和 31 次。
把整圈分成 格。第一条码道每走 31 格重复,第二条每走 32 格重复。两条同时重复时,格数必须同时是 31 和 32 的倍数,最小正值是 992,恰好一整圈。
一般地,若 ,组合相位的最短重复周期为 圈。互质时 ,所以只有走完整整一圈,才会同时回到原来的双读数。
两条码道各自都会重复,但不会在半路一起重复。这就是一圈内绝对位置能够唯一确定的原因。
互质更深的一层,其实就是“能不能拼出 1”
互质不只是“最大公约数为 1”。它还有一个等价说法:存在整数 ,使得
仍用 32 和 31 举例:,所以取 就能拼出 1。
对于不相邻的互质数,可以用欧几里得算法逐步相除,再反向代入。例如 7 和 32:
反向代入:
这个 1 不是凭空出现的,而是原来两个周期数的整数线性组合。互质保证这样的整数配比存在。
为什么不互质就永远拼不出 1
若 有公因数 ,那么任意整数线性组合 也一定能被 整除,当然不可能等于 1。
例如 32 和 30 都是偶数,无论取多少个 32 加减多少个 30,结果仍是偶数。
这就是互质背后的数学骨架。

这和游标到底是什么关系
现在就能把前面的几层全部连起来了。
两条码道,一条一圈重复 次,一条一圈重复 次。
互质保证的是:这两条码道放在一起以后,一圈里不会提前重号,所以绝对位置唯一。
而更深一层, 又告诉你:这两个周期数经过合适的整数配比,真的能够拼出最基本的“一个单位”。
这句话放到游标里,意思非常直白:
这两条本来都在高速重复的码道,并不是只能各说各话。只要它们互质,它们就有能力通过合适的配比,把最小单位还原出来。
所以互质这件事,不只是“避免提前重复”,它还说明这两个周期数在数学上是“可解开的”。
这就是为什么行业里总在说互质。只是过去很多时候,大家只记住了结论,没有把这件事想成一个完整的画面。
为什么相邻周期数特别顺手,而不相邻的互质数也能用
讲到这里,再顺手把另一个常见混淆拆开。
很多人把“互质”和“差值等于 1”混成一回事。其实不是。
互质解决的是:能不能整圈唯一。
差值等于 1 解决的是:最简单的差分是不是刚好就是机械角本身。
比如 32 和 31,它们互质,而且只差 1。
所以它不但整圈唯一,而且最简单的差分关系也特别漂亮。工程实现、算法表达、直觉理解,都很顺手。
但 32 和 7 也互质,所以同样能做整圈唯一定位。只是它们相差 25,不能只用两路相位直接相减来还原机械角。
所以这里一定要分清楚:
互质,决定能不能唯一。差值小,决定好不好用、简不简单。
先有前者,系统才成立。
后者是成立之后,再去讨论优雅程度和实现成本。
用5与3,看看丢掉一路信息会发生什么
把机械角按一圈归一为1,记作θ。设两路理想码道一圈分别重复5次和3次,先假定方向、零点和有效采样时刻都已对齐。
两路读数分别是:
这里wrap表示按一圈取模。为方便读表,结果放在0到1之间,不含1。
| 机械位置 | 第一条读数p₅ | 第二条读数p₃ | 相位差wrap(p₅−p₃) |
|---|---|---|---|
| 0圈 | 0 | 0 | 0 |
| 1/4圈 | 1/4 | 3/4 | 1/2 |
| 1/2圈 | 1/2 | 1/2 | 0 |
| 3/4圈 | 3/4 | 1/4 | 1/2 |
看最后一列:0圈与半圈得到相同差值,四分之一圈与四分之三圈也相同。只保存相位差,就分不清这些位置。
原因直接写在式子里:
它一圈重复两次。5与3互质这个事实,没有改变差值只剩“两倍角”的结果。
但看中间两列,0圈对应(0,0),半圈对应(1/2,1/2),两对读数不同。只要两路信息都还保留,原来那两个位置就能分开。
联合解算怎样把机械角找回来
因为2×3−5=1,所以在这个理想模型里可以构造:
例如机械角为1/4圈时,两路读数是1/4和3/4。代入后得到2×3/4−1/4=5/4圈,再取模回到1/4圈。半圈时,同样恢复出半圈。
这一步使用了两路信息和合适的整数权重,已经超出了“直接相减”。一般情况下,互质保证存在这样的整数权重;能直接用一减一恢复机械角,则要求两周期数相差1。
也可以从重复周期证明。若两个位置相差Δθ,且两路相位都相同,那么5Δθ与3Δθ都必须是整数。将它们按2×3−5组合,Δθ也必须是整数。所以在一圈以内,没有另一个不同位置能给出完全相同的两路读数。
数学唯一之后,还要过误差这一关
上述表格和公式是无噪声、同轴整数周期的数学示例,不是某款产品的测试结果。
若两路含相位误差ε₅和ε₃,局部解算误差会带入2ε₃−ε₅。实际设计还要处理噪声、周期边界、零点、方向与时间对齐。数学上能唯一恢复,不等于当前误差条件下不会误判。
机械齿轮传动、额外绝对码道和多级融合,需要先写出各路相位对同一机械角的关系,再判断保留了哪些信息。不能把这里两个同轴周期数的结论直接套过去。
最后把这件事压成一句最值得记住的话
游标里所谓“互质”,本质上不是一条行业规定,而是两条本来都会重复的码道,在整整一圈里不能提前重号。
互质保证两路理想相位联合起来能够区分整圈;相差1,则让直接作差成为联合解算的一种简便形式。
所以“游标一定要互质”这句话,说到底不是经验,也不是习惯,而是绝对位置系统能不能站住的地基。
你要是把这一层想明白了,再回头看磁游标、电感游标、光学双码道,很多以前只是“记住了”的规则,就会第一次真正变成你自己的理解。
修订于2026年10月16日:补充5与3的相位表、联合恢复及误差边界。表格与公式为数学推导。

关注公众号「如是有为」
微信扫一扫,新文章先在公众号发出。