29、伺服驱动接口:位置环、速度环、扭矩环、指令脉冲生成
各位做运动控制的朋友,今天我们来聊聊伺服驱动接口。这个话题,说白了就是控制器和电机之间的「翻译官」。你给电机发指令,它得听懂;电机反馈状态,你得看懂。我这些年调试过的伺服系统不下几十种,从脉冲型到总线型,从低端到高端,踩过的坑真不少。
我个人习惯把伺服驱动接口拆成四个核心模块:位置环、速度环、扭矩环,还有指令脉冲生成。这四个东西,你搞明白了,伺服系统的基本功就算扎实了。
一、位置环:让电机走到该去的地方
位置环,顾名思义,就是管位置的。你给一个目标位置,电机就得老老实实走到那里去。它怎么做到的?靠的是位置误差。
位置环的输入是位置指令和实际位置的差值,输出是速度指令。这个差值越小,说明电机跟得越紧。我在项目中遇到过一个问题:位置环增益调得太高,电机一启动就「嘎嘎」响,像要散架一样。后来发现是增益太大,系统产生了震荡。
位置环的核心参数:
- 位置比例增益(Kpp):决定响应速度,越大越快,但容易震荡
- 位置前馈增益(Kpf):减少跟踪误差,适合高速运动
- 位置积分时间常数:消除稳态误差,但会降低响应
你想想看,位置环其实就是一个比例控制器,或者比例加前馈。为什么不用积分?因为位置环本身就有积分作用——位置误差累积,电机就会一直走,直到误差为零。所以位置环通常只用P控制,或者P+前馈。
我的调试习惯:先给一个很小的Kpp,比如1,然后慢慢往上加。每次加0.5,观察电机有没有抖动。一旦出现抖动,就回调20%。这个办法虽然土,但很管用。
二、速度环:控制电机转多快
速度环是位置环的内环。位置环输出速度指令,速度环就负责让电机实际速度跟上这个指令。速度环的响应速度要比位置环快得多,一般是位置环的5到10倍。
速度环用的是PI控制器。比例部分负责快速响应,积分部分负责消除稳态误差。我曾经调试一台高速贴片机,速度环的积分时间设得太短,结果电机在低速时一抖一抖的,像在跳舞。后来把积分时间拉长,问题就解决了。
注意:速度环的带宽不能太高。带宽太高,系统容易受噪声干扰。我见过有人把速度环带宽调到500Hz,结果电机嗡嗡响,电流波形全是毛刺。一般来说,200-300Hz是比较稳妥的范围。
速度环还有一个重要参数——速度前馈。这个参数可以补偿位置环的滞后。举个例子,你让电机走一个S曲线,如果没有前馈,电机实际位置会一直落后指令位置。加上前馈后,这个滞后就小多了。
三、扭矩环:控制电机出多大力
扭矩环是速度环的内环,也是最底层的一环。它直接控制电机的电流,也就是扭矩。扭矩环的响应速度最快,通常是速度环的5到10倍。
扭矩环用的是PI控制器,但它的PI参数和速度环不一样。扭矩环的积分时间通常很短,因为电流响应要快。比例增益也不能太大,否则电流会震荡。
我记得有一次调试一个机器人关节,扭矩环的增益设得偏高,结果电机一启动就「嗡嗡」响,电流波形像锯齿一样。后来把比例增益从0.5降到0.3,积分时间从5ms调到10ms,问题就解决了。
三个环的响应速度对比:
| 控制环 | 典型带宽 | 响应时间 |
|---|---|---|
| 位置环 | 20-50 Hz | 20-50 ms |
| 速度环 | 200-300 Hz | 3-5 ms |
| 扭矩环 | 1-2 kHz | 0.5-1 ms |
你可能会问:为什么扭矩环的带宽这么高?因为电流变化很快,电机电感很小,电流可以在几微秒内变化。所以扭矩环的采样频率通常很高,一般在10kHz以上。
四、指令脉冲生成:控制器怎么告诉伺服
指令脉冲生成,就是控制器把位置指令转换成伺服驱动器能识别的信号。最常见的两种方式:脉冲方向和AB相脉冲。
脉冲方向模式:一个脉冲信号(PUL)和一个方向信号(DIR)。每来一个脉冲,电机走一步。方向信号决定正转还是反转。这种方式简单,但精度有限。我早期做步进电机控制时,用的就是这种方式。
AB相脉冲模式:两个相位差90度的脉冲信号(A相和B相)。通过判断哪个相先到,就知道方向。这种方式抗干扰能力强,还能做四倍频,提高分辨率。
避坑指南:我曾经遇到一个问题,脉冲频率太高,伺服驱动器跟不上。后来发现是脉冲频率超过了驱动器的最大输入频率。所以选型时一定要看驱动器的规格书,别盲目追求高频率。
现在很多高端伺服都用总线通信了,比如EtherCAT、CANopen。总线通信的好处是:可以传输更多数据,比如位置、速度、扭矩、状态等。而且抗干扰能力强,布线也简单。
但总线通信也有坑。我记得有一次调试EtherCAT,从站一直报错,查了半天发现是网线质量不好。换了根屏蔽网线,问题就解决了。所以,总线通信对硬件要求更高,别省那点线材钱。
五、三个环的配合:怎么调才顺
三个环是嵌套的,从内到外依次是:扭矩环→速度环→位置环。调试时,一定要从内到外调。先调扭矩环,再调速度环,最后调位置环。顺序不能乱,否则你根本不知道问题出在哪。
我一般这样调:
- 先把位置环和速度环的增益设得很小,只调扭矩环。让电机空转,观察电流波形。波形平滑了,扭矩环就算调好了。
- 然后调速度环。给一个阶跃速度指令,观察速度响应。响应快、超调小、稳态误差小,就算合格。
- 最后调位置环。给一个位置阶跃,观察位置响应。位置误差小、不震荡、不超调,就算调好了。
重要提醒:调环时一定要带负载。空载调好的参数,带上负载后可能完全不能用。我吃过这个亏,空载调得挺好,一上负载电机就抖。后来老老实实带负载调,一次搞定。
好了,关于伺服驱动接口的四个核心模块,我就讲这么多。位置环管位置,速度环管速度,扭矩环管电流,指令脉冲生成管通信。这四个东西搞明白了,伺服系统的基本功就算扎实了。下一章我们聊聊插补算法,那个更有意思。