伺服运动控制实战:从电子齿轮比到增益整定的调试要点
发布时间:2026/9/17 11:26:48 作者:尧图编辑部 阅读量:1,286

很多做自动化设备的朋友第一次接触伺服系统时几乎都会被那一堆参数和术语搞到头皮发麻。尤其是当你手里的项目从步进电机升级到伺服电机老板丢给你一台汇川或者三菱的驱动器扔下一句“把这个调通”然后你就得面对电子齿轮比、刚性、增益、前馈这些概念。我在这个行业摸爬滚打了十几年从最早的脉冲串控制到现在的总线通讯从国产伺服到日系、德系驱动也踩过无数个坑。这篇东西就是想把伺服运动控制里那些最磨人、最容易让人绕晕的点结合我实际调试过的汇川、三菱、西门子这些主流设备一次性讲透。这篇文章不是为了复述手册里的参数表而是想把那些手册里不讲、但现场调试又必然会遇到的东西讲明白。核心会围绕几个关键词展开伺服驱动器的通讯接口定义、电子齿轮比的计算逻辑、编码器线数到底能不能改、增益与滤波的调试顺序以及三菱FX3U和西门子1200这两种主流PLC控制伺服时的差异。适合正在做非标设备、自动化产线或者刚接触伺服选型和调试的工程师也适合那些已经能跑通基本动作、但一遇到震动和噪音就不知道从何下手的进阶玩家。1. 从脉冲到总线伺服控制的通信选型逻辑很多人在选型初期就跑偏了一上来就问“这个驱动器支不支持脉冲控制”其实这是最基础的问题。真正应该先想清楚的是你的控制系统架构到底适合哪种通讯方式。1.1 脉冲控制老而弥坚的硬连接方案脉冲控制是伺服控制里面的老兵了。工作原理极其简单PLC发脉冲驱动器收脉冲然后根据脉冲个数和频率去驱动电机转对应的角度和速度。说句实话哪怕是在2025年的今天脉冲控制依然占据了中小型非标设备的大半壁江山。原因无他因为便宜、直观、好调试。日常用得最多的就是差动脉冲加方向信号也就是PULSE和DIR两路信号再配上使能。接线的时候要注意很多国产伺服比如汇川的IS620系列它的CN1接口定义里高速输入口和低速输入口的滤波时间不一样。如果你把脉冲接到了低速光耦隔离输入上最高输入频率可能只有200kHz而接到高速口上能到500kHz。这个细节在调试高速定位时非常致命我曾经遇到过一个项目客户自己接线把脉冲接到了低速口一跑到3000转就丢脉冲查了半天才发现是接口接错了。脉冲控制还有个暗坑就是地线问题。PLC和驱动器之间最好用双绞屏蔽线屏蔽层单端接地。我见过太多现场因为地电位差导致脉冲丢失或者误触发的两根脉冲线走线槽里跟动力线并排走几米那画面太美我不敢看。1.2 总线控制从RS485到EtherCAT的进化之路如果你的设备节拍要求高、轴数多、或者需要实时读取伺服的位置和电流信息那脉冲控制就不太够用了。这时候就得考虑总线控制。目前市面上主流的总线方案大概分三个层级。第一层是RS485这种老式串口通讯多用于参数读写和简单点动控制因为实时性差很少用来做插补运动。第二层是中间派比如三菱的CC-Link IE Basic或者西门子的PROFINET这类总线在PLC层面集成度高走的是标准以太网帧不需要额外加昂贵的运动控制卡通过PLC内置的定位指令就能控制伺服。第三层就是真正的实时运动总线比如EtherCAT这个在汇川、固高、雷赛这些国产系统里很常见周期能做到1ms甚至更低适合多轴同步和插补。这里要特别说一下博途配置汇川伺服这件事。很多人以为西门子只能配西门子的伺服其实不是。汇川的伺服在近几年做了很大改进很多型号都支持PROFINET协议。在博途里配置的时候你可以直接导入汇川提供的GSDML文件然后像配置西门子V90一样配置报文。但是有个坑是汇川的报文类型和西门子原生的报文类型并不完全一致你要根据汇川的说明书选择对应的报文映射比如标准报文1是控制字加状态字加速度给定而汇川常用的报文里可能多了个touch probe功能。如果你报文选错PLC报错根本找不出原因。1.3 通讯接口定义看不懂针脚定义就是灾难不管是脉冲还是总线都需要面对驱动器上的通讯接口。以汇川A4伺服驱动器为例CN1是控制信号接口CN2是编码器接口CN3是通讯接口。很多人第一次拿到手册就懵了上面的针脚标号密密麻麻几十个根本不知道哪些必须接、哪些悬空就行了。我的经验是先分清楚哪些是“命根子”信号。对于位置模式至少需要接PULSE、PULSE-、DIR、DIR-这四根线再加一个SON使能信号。如果你需要读回报警信号那还要接ALM输出。如果你需要实时读取位置那就要考虑通讯口。剩下的那些DO信号比如到位信号、抱闸释放信号按需接即可不用全部接满。关于CN1针脚定义我强烈建议你拿到驱动器后第一件事就是把官方接口定义表打印出来然后用荧光笔把实际用到的针脚标出来再和PLC侧的IO表一一对应。不要凭记忆接线因为哪怕同品牌不同功率段针脚定义都可能变化。比如汇川的老款A4和新款MS1H4系列的CN1定义就有差异接错一根线轻则报警重则烧毁IO口。2. 编码器线数262144背后的电子齿轮比算法接下来聊一个非常热门而且很多人会搞错的话题编码器线数尤其是汇川MS1H4系列驱动器默认的编码器线数是262144。很多人在参数里看到这个数字第一反应是“能不能改小一点我只要10000脉冲转一圈就行”。2.1 编码器线数为什么是262144先说结论这个数值在绝大多数情况下不允许改也没必要改。262144等于2的18次方也就是说编码器每转一圈会输出262144个脉冲。注意这里说的是驱动器内部从编码器读到的正交计数不是说PLC每转一圈只能发这么多脉冲。这个数字是由编码器的物理光栅决定的。现在的伺服电机编码器基本都是17位或者23位的绝对值编码器MS1H4用的就是17位即131072线到18位262144线级别的编码器。驱动器读取编码器的精度是固定的它决定了电流环和速度环的反馈分辨率。如果你试图在驱动器参数里降低编码器分辨率相当于你让驱动器“忽略”一部分反馈脉冲这会直接导致两个后果一是低速的时候转矩波动变大因为反馈精度变低了二是位置环的实际定位精度下降。你做非标设备如果只是要求0.1mm的重复定位精度也许感觉不出来但如果你做半导体设备或者精密点胶机0.01mm级别的误差就是致命问题。2.2 电子齿轮比才是你真正该调的参数既然编码器线数不能改那如果我想让PLC发10000个脉冲电机就走一圈该怎么办答案就是电子齿轮比。电子齿轮比的本质是脉冲指令的分频和倍频。驱动器会把你实际发过来的指令脉冲数乘以分子、除以分母再换算成“反馈脉冲数”来对应一圈。公式很简单电机转一圈所需指令脉冲数 编码器反馈脉冲数 ×分母/分子举例说明。如果你的编码器是262144脉冲/圈你想让10000个指令脉冲对应一圈那就需要设置电子齿轮比分子 / 电子齿轮比分母 262144 / 10000 32.768但很多国产驱动器不支持小数所以你要把32.768拆成整数比比如分子设32768分母设1000那就相当于32.768。又比如三菱MR-JE系列里的PA05参数就是用来设定每转指令脉冲数的你把PA05直接设为10000它就会自动算出对应的齿轮比这个设计相比某些国产驱动器需要自己算分子分母要人性化不少。这里有个非常容易踩的坑电子齿轮比设置不当会导致指令脉冲频率溢出。比如编码器反馈是262144你把电子齿轮比设得极小比如1/100那PLC发一小串脉冲电机就跑很多圈如果PLC的脉冲频率上限是200kHz那就相当于PLC侧的指令频率乘以齿轮比后的值不能超过驱动器的最大指令频率一般是4Mpps到8Mpps。一旦超出驱动器就会报脉冲误差过大或者跟随误差报警。2.3 实际案例三菱FX5U通过CC-Link IE Basic控制伺服讲到电子齿轮比就不得不提三菱FX5U通过CC-Link IE Basic控制伺服的应用。在这个架构里伺服不是靠脉冲控制的而是靠通讯周期性发送指令值和实际值齿轮比的作用就变成了“伺服电机每转对应的指令单位”。CC-Link IE Basic的特点在于它走的是标准千兆以太网物理层但是协议在应用层所以不需要昂贵的专用网卡FX5U本体网口就能用。你在GX Works3里配置网络的时候要注意每个从站的站号设置不能冲突。然后定位数据是在PLC程序里通过定位指令控制的伺服那边的电子齿轮比一般设为默认值就好因为位置指令单位已经是用户自定义的mm或者度了不需要再经过脉冲分频这层换算。这套系统相比脉冲方案最大的优势在于能回读很多东西比如伺服当前的实际位置、跟随误差、转矩百分比。调试的时候用GX Works3的监视画面同时看指令位置和实际位置可以一目了然地看到伺服是不是跟丢了。这种“可视性”在修机器的时候真的是救命级别的功能。3. Klipper与RepRap当开源3D打印遇上运动控制聊完工业伺服我们把目光转到创客圈。这几年Klipper固件在3D打印圈子里非常火还有RepRap这种经典开源项目也一直活跃。很多人不理解一个3D打印机的运动控制跟前面说的伺服驱动有什么关系关系大了。3.1 Klipper的运动控制为什么快Klipper最大的特点是利用树莓派或者上位机来做运动规划的复杂计算而把实时性要求高的脉冲发送任务交给单片机固件通常跑在STM32上来执行。这种架构下Klipper的运动前瞻也就是lookahead能做到比传统的8位单片机固件大得多的缓冲深度。它核心的算法是输入整形Input Shaper和压力提前补偿Pressure Advance。输入整形这个概念其实就是自动化的前馈控制思想。打印头或者热床是一个质量块皮带是有弹性的如果你快速加减速机械结构就会震荡表现在打印件上就是振纹。Klipper不会像传统固件那样只调整加速度来控制震荡而是通过对运动指令进行逆滤波预先抵消机械结构的谐振频率。这种思路跟伺服驱动器的陷波滤波器异曲同工。伺服驱动器在检测到机械共振的时候会配置一个陷波滤波器把共振频率附近的增益拉低从而抑制震荡。Klipper的Input Shaper算法在数学本质上就是做了类似的事只不过它是在指令侧做文章而不是在反馈侧。3.2 RepRap的开放生态对运动控制普及的影响RepRap这个项目对运动控制的贡献是巨大的。它最大的优势在于开放了硬件结构和固件代码让一大批人第一次意识到“原来步进电机同步带光杆控制器”就能搭出一台机器而且控制逻辑并不神秘。但它的问题也很明显就是开源固件默认的控制精度和稳定性远不如商业伺服系统。RepRap通常用的是开环步进这意味着只要力矩不够或者丢步整个位置就错了而且没有反馈能告诉你错了。很多人觉得把步进电机换成闭环步进就能解决问题比如张大头闭环伺服这种产品在创客圈很火它的原理其实就是给步进电机加了一个编码器反馈通过闭环算法来实时修正位置误差。但是我要给想从步进升级到闭环的朋友提个醒闭环步进本质上是“半闭环”它只能修正电机轴端的误差因为真正的定位目标点在负载端如果机械连接有间隙或者皮带打滑电机轴端编码器是感知不到的。这也是为什么真正的伺服系统强调的是刚性连接尽量减小传动环节的原因。3.3 从开源社区学到的伺服调试思路我在调试工业伺服的时候有些思路其实是从Klipper社区学来的。比如在伺服系统里很多人遇到机械振动第一反应是降低增益但降低增益会导致跟随误差变大道。开源社区则会先做一次频率扫描找到共振峰然后对症下药地做滤波。回到伺服这边现在的汇川和台达驱动器都内置了自动共振抑制功能但自动不一定适合所有工况。我建议的做法是先用驱动器的示波器功能几乎所有主流驱动器都有手动扫描一下速度环的频率响应看共振峰在哪个频段。如果共振峰在机械固有频率附近就加陷波滤波器如果是在高频出现的毛刺有可能是编码器信号受到了干扰先处理屏蔽和走线问题再去调滤波。这个思路写出来很简单但在现场能省你两个小时以上的盲目试参时间。4. 三菱FX3U与西门子1200两种典型PLC控制伺服的方式聊实际接线和编程之前先摆一个常见的认知误区很多人以为PLC控制伺服就是发脉冲其实不同PLC对伺服控制的支持方式差异很大搞清楚这些差异能让你选型的时候少走弯路。4.1 三菱FX3U伺服控制实例脉冲输出与定位指令FX3U是老当益壮的代表。它在三菱家族里是FX3G的升级版自带三路最高100kHz的脉冲输出配合定位指令比如PLSY、DRVI、DRVA、ZRN能实现非常经典的伺服控制。有一个经典配置是FX3U控制三菱MR-JE-20A伺服。MR-JE-20A是一个很常见的200W驱动器方案用来驱动小型输送带或者定位机构。具体步骤如下把MR-JE-20A设为位置模式也就是参数PA01设为0000表示位置控制模式。把电子齿轮比设好如果通过PA05直接设置每转脉冲数那这个参数最省事。根据三菱FX3U的输出类型选漏型或源型接线。FX3U晶体管输出一般是漏型输出也就是输出低电平有效而MR-JE的脉冲输入接口通常接收差动脉冲或者集电极开路脉冲。接法可以参考手册上“差动驱动”和“集电极开路”两种图的区别。程序里用DRVI指令执行相对定位用DRVA执行绝对定位。如果回原点用ZRN指令要设置好DOG信号。这个DOG信号尤其关键回原点的可靠性直接影响整个设备的重复定位精度。我调试这类系统比较多经验是启动前先用点动功能确认方向正确性再跑定位程序不然正负方向接反会直接撞机。然后一定要确认伺服那边设置的“旋转方向”跟PLC脉冲方向一致如果PLC方向没变但伺服方向接返了很多新手会去程序里改方向标志其实直接调伺服参数里Pt40旋转方向选择更简单可靠。4.2 西门子S7-1200控制伺服从运动控制指令到报文西门子S7-1200控制伺服跟三菱完全是两个思路。1214C是1200系列里的主力型号它控制伺服有两种方式。第一种是通过PTO脉冲也就是在CPU本体或者信号板上组态运动轴用组态好的轴对象去执行运动指令。这种方式适合低成本的第三方步进或脉冲伺服设置相对简单但精度和功能受限。第二种是通过PROFINET总线连接伺服驱动器比如西门子自家的V90或者汇川伺服。这种方案组态复杂很多但功能和性能强得多。比如S7-1200的Motion Control指令库里MC_MoveAbsolute、MC_MoveRelative、MC_Home这些指令配合轴对象使用可以实现真正的闭环控制并且PLC能实时读取位置和速度反馈。以西门子1214C控制三菱MR-JE-20A为例这种方式比较少见但确实有人用。因为MR-JE本身没有PROFINET接口要实现PROFINET控制就需要通过第三方网关或者其他方式转换协议。我能想到一个相对稳定的方案是通过三菱的FR-E700系列变频器那类支持PROFINET的替代型号或者如果坚持用MR-JE就只能走脉冲路线。这也说明了选型时不要只看电机性能还是要通盘考虑通讯协议的匹配性不然就会遇到“PLC是西门子伺服是三菱两边都不愿意让步最后只能回到脉冲”的窘境。要给提个具体的建议如果你的控制系统是西门子伺服尽量选原生支持PROFINET的型号如果你的控制系统是三菱伺服尽量选支持CC-Link或者CC-Link IE Basic的型号。跨品牌混用总线总会在某个环节把你折腾到怀疑人生。4.3 200Smart的脉冲控制与运动控制时序另一个常见的低端PLC是西门子200Smart它的脉冲控制逻辑比S7-1200更接近三菱FX3U那种传统方式。200Smart集成了高速脉冲输出通过运动向导配置轴参数和运动子程序。200Smart的运动控制时序有一个比较经典的要求先复位、再回原点、后运动。编程时要特别注意轴忙信号和停止信号的状态不能让下一个运动指令抢在上一个运动指令执行完之前发出去不然会出现定位不准或者脉冲丢失。这跟操作系统的信号量有点像你得通过PLC程序里的“正在运动”标志位来互斥访问运动指令块。在调试多轴设备时我还会做一个“心跳”检测比如每个轴运动完成后置位一个完成标志主逻辑判断所有轴都完成后再进入下一步。这个简单的互锁机制能避免很多因为时序问题引发的撞机事故。5. 伺服增益、滤波、前馈的调试逻辑聊完协议和接线把我们拉回伺服调试最核心的领域增益、滤波、前馈。这也是让无数工程师头疼的地方因为参数多、相互作用大、调参像玄学。但其实掌握了逻辑后这也就是一个有序的过程。5.1 增益整定的先后顺序先电流环再速度环后位置环伺服驱动器里面有三个闭环从内到外分别是电流环、速度环、位置环。电流环是响应最快的负责把给定电流转换成实际转矩速度环居中负责调节电机转速位置环最外负责把位置误差收敛到零。调试的黄金法则是先内后外。也就是说先保证电流环不动把速度环调稳再开位置环。很多人喜欢一上来就猛调位置环比例增益结果就是电机嗡嗡响或者啸叫这种噪音实际上就是速度环或者电流环的极限震荡表现。以汇川伺服为例它的参数里速度环增益通常标为Pn103速度环积分时间常数为Pn104位置环增益为Pn102。调的时候我一般先给定一个较小的速度环增益比如30然后逐步往上加每加一次用驱动器自带的示波器功能看一下速度阶跃响应是不是有过冲和震荡。如果没有过冲继续加一旦出现过冲就退回一点然后调积分时间去消除静差。当速度环稳定之后再调位置环增益目标是在定位完成时位置曲线没有明显的超调。注意位置环增益是跟整体机械刚性相关的如果机械结构本身比较软比如同步带传动那位置环增益不宜过高否则定位后会来回微动。5.2 滤波找到共振峰比盲目降增益更重要增益调不下去很多时候不是因为增益不够高而是某个频率段出现了共振。伺服系统常见共振有两种低频共振和高频共振。低频共振往往来自于机械负载惯量比过大或者联轴器弹性变形表现为电机轴端位置不动但机台末端在摆动。这种共振一般通过增大速度环滤波时间、降低速度环增益或者调高速度环积分时间去抑制。高频共振通常来自机械固有模态表现为尖锐的叫声这种情况最适合用伺服驱动器的陷波滤波器。陷波滤波器的工作方式是设定一个中心频率和深度将系统在该频率点的增益急剧压低。大多数驱动器都有自动共振抑制功能但我建议还是手动确认一下中心频率再启用不然它定了一个看似合理的频率实际抑制效果可能并不好。调试时我会用驱动器的示波器功能“在线FFT”观察速度反馈信号里的频谱先找出最高峰在哪个频率再把这个频率输入到陷波滤波器参数里。5.3 前馈让轨迹“贴手”的关键前馈在伺服系统里是一个立竿见影的参数。它的本质是预测未来控制量而不是等误差产生了再去纠正。这个思想可以类比成开车过弯如果你看到弯道再打方向一定会有误差但如果你能提前打方向前馈过弯会非常流畅。在伺服里最常见的是速度前馈和转矩前馈。速度前馈PID控制中是相对比较重要的参数当位置指令快速变化时速度前馈项直接给速度环一个基本的速度给定从而减小位置环的滞后误差。调速度前馈的典型表现就是看跟随误差曲线——如果误差在加减速时突然变大说明前馈不够如果误差过冲变成反向说明前馈过大。转矩前馈更高级一点它根据负载模型预先给出一个转矩指令抵消重力和摩擦力矩。在龙门双驱结构里转矩前馈对两侧同步性有很重要的影响。我见过很多大型龙门设备调不好前馈两侧电机的跟随误差差异很大跑起来整个龙门架就拧着时间长了连机械结构都伤掉了。所以顺着这个逻辑增益、滤波、前馈可以概括成一句话先把内环调稳定再找共振峰做滤波最后用前馈提升跟踪精度这是一个不进则退的系统工程跳跃式的调参只能让你陷入无穷无尽的试错。6. 伺服波形与视觉伺服的进阶视角当我们把基础功课做完之后如果还想在运动控制这条路上继续深入有两个方向值得关注一个是波形分析能力另一个是视觉伺服。这两样东西听起来高大上但本质上都是我们之前聊到的反馈和控制思想的延伸。6.1 学会看波形示波器是伺服调试的照妖镜很多工程师调试伺服只看两个判断指标它够不够快它稳不稳。但真正有经验的工程师会承认伺服调试如果只看结果不看过程很可能会把隐患留给量产阶段。示波器在这里的价值就是让你看到过程中到底发生了什么。现代伺服驱动器基本都内置了虚拟示波器功能可以记录速度反馈、位置反馈、指令位置、转矩指令、位置误差等等。我建议你养成每次修改参数后顺手录一段波形的习惯。比如位置定位动作完成前后录一段位置误差和速度波形如果速度曲线有回冲说明位置环参数还有问题如果速度曲线平稳而位置误差超调说明速度环可能有积分饱和。举个例子我之前调试一台汇川四轴设备位置指令从A点到B点看起来定位很快速度波形也正常但是声音有那种闷闷的“嗡嗡”声。录波形看转矩电流发现转矩指令在震荡从FFT谱看峰值在120Hz左右。这个频段不像是机械固有频率更像是电流环的采样引入了抖动。后来在驱动器参数里调整了电流环的阻尼系数震荡消失声音立刻干净了。这种问题如果不用波形工具几乎不可能定位到原因。6.2 视觉伺服从“定位”到“追踪”视觉伺服Visual Servoing主要是将摄像头的信息引入反馈环节让运动控制系统以图像信息作为误差的来源。这跟前面说的编码器反馈有着本质的不同编码器反馈告诉你电机轴在哪里而视觉反馈告诉你工件或者目标在哪里。视觉伺服在工程上落地最成功的场景之一是“运动控制与追踪”。比如流水线上有一个运动的传送带上面有工件随机排列机器人或者运动平台需要在传送带高速运动中精准抓取。传统做法是用编码器跟踪传送带位置再提前计算抓取点。这可以但视觉系统会更直接摄像头直接拍摄工件实际位置然后伺服系统根据这个位置差异实时调整。视觉伺服的实现方式大致分两种Image-Based Visual ServoingIBVS和Position-Based Visual ServoingPBVS。IBVS直接在图像特征空间做误差计算对相机标定精度要求低但对图像噪声敏感PBVS要在3D笛卡尔空间算位姿误差更直观但依赖标定精度。实际项目里用PBVS的比较多因为跟现有的机器人坐标系统好对接。需要提醒的是视觉伺服的响应速度归根到底受制于视觉系统的帧率和图像处理延迟。如果你的视觉处理要50ms才给一次位置更新那伺服环路调得再快也发挥不出来。现在的趋势是往“预测滤波”方向走比如用卡尔曼滤波去预测目标在下一帧的位置这样即使视觉帧率不高运动控制也能平滑追踪。6.3 人形机器人运动控制带来的通俗启发最近人形机器人的热度非常高很多人问伺服运动控制跟人形机器人有什么关系。其实人形机器人是伺服运动控制行业最高难度的综合试验场。一个成年人形机器人身上恐怕有二三十个甚至更多关节每个关节都是一个微型伺服系统通常是无框电机加高精度减速器加双编码器还要同时保证整机动态平衡和协调运动。人形机器人运动控制里面有些思路很值得工业伺服借鉴比如模型预测控制MPC和阻抗控制。MPC的思想是不仅看当前状态还要预测未来几步的系统状态然后选择一个最优的控制序列。这种思路其实跟我们前面调前馈是相通的只不过MPC更系统化可以处理多变量耦合的问题。阻抗控制则是对柔顺性的直接回应。在人形机器人上如果机器人跟环境接触比如手扶桌子硬位置控制会导致接触力失控甚至损坏设备。阻抗控制核心是调整机器人末端的位置和力的动态关系让它在接触时表现得像弹簧阻尼系统一样。这种思路在工业场景也越来越有需求比如打磨、装配这些精密接触作业单纯的位置控制已经不够用了。当然如果你想扎进运动控制这个方向也不必非得上人形机器人这种复杂系统。把工业伺服得参数摸透把通讯协议吃熟再学会用波形去观察动态过程你已经能在大部分非标自动化项目里游刃有余了。人形机器人将来能吃香的部分也不是纯粹的控制理论而是怎么把控制算法在嵌入式系统中实现得又快又稳——这一块的底层能力跟调试伺服是完全相通的。