3. 电子齿轮原理
做多轴同步控制,电子齿轮是绕不开的基础。说白了,它就是通过软件算法,让两个或多个电机轴按照设定的比例关系运动。我最早接触这个概念是在做印刷机套色系统的时候,那时候机械齿轮箱又重又吵,换成电子齿轮后,整个设备都清爽了。
3.1 电子齿轮比的概念
电子齿轮比,就是主动轴与从动轴之间的位置比例关系。举个例子:
- 如果电子齿轮比设为 2:1,主动轴转 2 圈,从动轴就转 1 圈
- 如果设为 1:2,主动轴转 1 圈,从动轴就转 2 圈
- 如果设为 1:1,那就是同步运动,两根轴转得一模一样
嗯,这里要注意:电子齿轮比可以是整数,也可以是小数。我在做包装机项目时,就遇到过需要 1.732:1 这种非整数比的情况,因为机械结构本身有减速比,必须用小数来补偿。
核心公式:
从动轴位置 = 主动轴位置 × 电子齿轮比
从动轴速度 = 主动轴速度 × 电子齿轮比
3.2 电子齿轮的数学模型
数学上,电子齿轮可以看作一个比例环节。但实际工程中,不能简单乘个系数就完事。你想想看,如果主动轴突然加速,从动轴要立刻跟上,这中间就有延迟和误差。
我习惯用这样的模型来描述:
// 位置域模型
θ_slave(t) = K_gear × θ_master(t) + θ_offset
// 速度域模型
ω_slave(t) = K_gear × ω_master(t)
// 加速度域模型
α_slave(t) = K_gear × α_master(t)
其中:
- K_gear 是电子齿轮比
- θ_offset 是初始位置偏移量
- t 是时间
为什么会需要 θ_offset?我在做飞剪控制时,两把刀必须错开一定角度才能正常剪切,这个偏移量就是靠它实现的。
实战经验:
实际系统中,建议在位置域做电子齿轮,而不是速度域。因为位置域天然带有积分作用,能消除累积误差。我曾经在速度域做过一次,结果跑了一个小时后,两根轴差了半圈多。
3.3 电子齿轮的软件实现方式
软件实现电子齿轮,主要有三种方式:
方式一:主从跟随模式
这是最直接的方式。从动轴不断读取主动轴的位置,乘以齿轮比后作为自己的目标位置。代码大概长这样:
void ElectronicGear_Task(void)
{
// 读取主动轴当前位置
int32_t master_pos = GetMasterPosition();
// 计算从动轴目标位置
int32_t slave_target = master_pos * GEAR_RATIO_NUM / GEAR_RATIO_DEN;
// 设置从动轴位置环
SetSlavePosition(slave_target);
}
注意这里用了整数除法,避免浮点运算带来的性能开销。GEAR_RATIO_NUM 和 GEAR_RATIO_DEN 分别是齿轮比的分子和分母。
方式二:虚拟主轴模式
所有轴都跟随一个虚拟的数学轴。这个虚拟轴由软件生成,不受物理限制。我在做龙门同步时特别喜欢用这种方式,因为两个轴都能独立补偿,不会互相干扰。
void VirtualMaster_Task(void)
{
// 虚拟主轴位置
static int32_t virtual_pos = 0;
virtual_pos += VIRTUAL_SPEED * CONTROL_PERIOD;
// 轴1跟随
SetAxis1Position(virtual_pos * GEAR1_NUM / GEAR1_DEN);
// 轴2跟随
SetAxis2Position(virtual_pos * GEAR2_NUM / GEAR2_DEN);
}
方式三:电子凸轮表
当齿轮比不是固定值,而是随位置变化时,就需要电子凸轮了。比如在飞剪中,剪切段需要同步,非剪切段需要快速回位。这种变比关系,用查表法最合适。
避坑指南:
我曾经在电子凸轮表上吃过亏。凸轮表的点数太少,导致运动不平滑,机器振动得厉害。后来把点数从 360 点增加到 3600 点,问题才解决。建议凸轮表点数至少是 1024 点以上。
3.4 电子齿轮的优缺点
| 优点 | 缺点 |
|---|---|
|
|
我个人觉得,电子齿轮最大的优势是灵活性。以前做机械齿轮,改一个速比就要重新加工齿轮,周期长、成本高。现在改个参数就行,几分钟搞定。但缺点也很明显,就是通信延迟。我做过一个测试,当通信周期从 1ms 变成 2ms 时,同步误差直接翻了一倍。
我的建议:
如果对同步精度要求极高(比如误差小于 0.01mm),建议用机械齿轮或直连。如果要求灵活性和可调性,电子齿轮是不二之选。大多数工业场景,电子齿轮完全够用。
这张图把电子齿轮的知识体系梳理清楚了。从概念到数学,从软件实现到优缺点,每个分支都有对应的子项。做项目时,我习惯先看这张图,确认自己当前卡在哪个环节,然后针对性解决。
最后说一句:
电子齿轮不是什么高深的技术,但用好了能解决很多实际问题。关键是理解它的本质——一个带延迟的比例环节。只要抓住这个本质,调试起来就有方向了。
公众号:蓝海资料掘金营,微信deep3321