3. 位置环数学模型:PID控制器的位置环模型,传递函数与误差分析

各位工程师朋友,咱们今天聊聊位置环的数学模型。说实话,很多做电机控制的同行,调参全靠“试”,试出来能跑就算完事。但你要想做到精准定位,尤其是无感启动那种场景,不懂模型是不行的。

我刚开始带项目那会儿,也吃过这个亏。一个伺服项目,位置环怎么调都有静差,后来回头一算,发现是积分项的参数跟系统带宽压根不匹配。从那以后,我养成了一个习惯——动手调参之前,先把数学模型在脑子里过一遍。

3.1 位置环的典型结构

位置环说白了,就是一个外环。它把目标位置和实际位置的差值算出来,然后输出一个速度指令给速度环。结构其实很简单:

  • 输入:目标位置 θref
  • 反馈:实际位置 θact(通常来自编码器或观测器)
  • 控制器:PID(最常用的是P或PI)
  • 输出:速度指令 ωref
  • 被控对象:速度环 + 电机 + 负载(可简化为一个积分环节)

你想想看,位置环的输出是速度,而速度积分就是位置。所以被控对象天然就带一个积分器。这个特性很重要,后面讲误差分析时会用到。

核心要点:位置环的传递函数中,被控对象包含一个纯积分环节(1/s),这是位置系统区别于速度系统的根本所在。

3.2 PID控制器的位置环模型

咱们先写出最通用的PID形式。位置误差 e(t) = θref(t) - θact(t),控制器的输出为:

u(t) = Kp * e(t) + Ki * ∫e(t)dt + Kd * de(t)/dt

写成传递函数就是:

C(s) = Kp + Ki/s + Kd * s

被控对象呢?速度环的闭环特性可以近似为一阶惯性环节,再加上位置本身的积分:

G(s) = (1 / (Tv * s + 1)) * (1 / s)

其中 Tv 是速度环的等效时间常数。这个值怎么来?我一般直接从速度环阶跃响应里读,63%上升时间就是 Tv。

那么整个位置环的开环传递函数就是:

G_open(s) = C(s) * G(s) = (Kp + Ki/s + Kd * s) * (1 / (Tv * s + 1)) * (1 / s)

嗯,这里要注意,实际工程中Kd项很少用。为什么?因为位置误差的微分对噪声太敏感了,尤其是无感启动阶段,观测器出来的位置本身就有波动,再微分一下,整个系统会抖得厉害。我个人的习惯是,位置环只用P或者PI。

3.3 传递函数化简与带宽分析

如果只用P控制(Ki=0, Kd=0),开环传递函数简化为:

G_open(s) = Kp / (s * (Tv * s + 1))

这是一个典型的I型系统。它的穿越频率(也就是带宽)大约在:

ωc ≈ Kp  (当 Tv * ωc << 1 时)

这个近似成立的条件是位置环带宽远低于速度环带宽。我一般把位置环带宽设为速度环的1/5到1/10,这样系统稳定性好,调试也省心。

如果加上积分项,变成PI控制:

G_open(s) = (Kp * s + Ki) / (s^2 * (Tv * s + 1))

系统变成了II型。这时候可以消除稳态误差,但相位裕度会下降。你需要把积分转折频率 ωi = Ki/Kp 放得比穿越频率低很多,一般低3-5倍。

实战技巧:调试时先只加Kp,让系统能稳定跟踪斜坡信号。然后慢慢加Ki,观察阶跃响应的静差是否消失。如果出现超调或震荡,说明Ki太大了,往回退。

3.4 误差分析:到底差在哪?

误差分析是调参的“眼睛”。你得知道误差从哪来,才能对症下药。

输入信号类型 P控制稳态误差 PI控制稳态误差 说明
阶跃信号(定点定位) 0 0 I型系统对阶跃无静差
斜坡信号(匀速跟踪) v / Kp 0 P控制有常值静差,PI可消除
加速度信号(匀加速) ∞(发散) a / Ki PI控制有常值静差

从这张表你能看出来:

  • 如果只是做定点定位(比如机械臂抓取),P控制就够了,稳态误差为零。
  • 如果要跟踪匀速运动(比如传送带同步),必须加积分项,否则会有跟速度成正比的静差。
  • 如果要跟踪匀加速运动(比如电梯启停),PI控制也会有静差,这时候可能需要前馈补偿。

我曾经在一个贴片机项目里遇到过一个问题:位置环用P控制,跟踪匀速运动时总是差一段距离。后来一算,就是 v/Kp 这个静差。加上Ki之后,问题立刻解决。

避坑指南:积分项不是万能的。积分饱和(Integral Windup)是常见问题——当位置误差长时间存在时,积分项会积累到很大的值,导致系统超调甚至震荡。我一般会加积分限幅,或者用条件积分(只在误差小于某个阈值时才积分)。

3.5 位置环模型结构图

下面这张图把整个位置环的数学模型串起来了,从参考输入到实际位置,每个环节的传递函数都标在上面。你可以对照着看,调参时心里就有谱了。

位置环PID控制数学模型结构图 位置环PID控制数学模型结构图 θ_ref ⊗ PID控制器 C(s)=Kp+Ki/s+Kd·s (常用P或PI) 速度环等效 1/(Tv·s+1) 一阶惯性 积分环节 1/s 位置→速度 θ_act 反馈 误差 e(s) = θ_ref - θ_act 开环传函:G_open(s)=C(s)·1/(Tv·s+1)·1/s 闭环传函:G_close(s)=G_open/(1+G_open) 带宽由Kp决定,积分项消除静差

3.6 从模型到调参:我的实战流程

模型看完了,怎么落地?我一般按这个步骤来:

  1. 先测速度环带宽:给速度环一个阶跃指令,记录上升时间Tv。这个值决定了位置环能跑多快。
  2. 设定位置环带宽:取速度环带宽的1/5~1/10。比如速度环带宽100Hz,位置环就设10~20Hz。
  3. 计算初始Kp:Kp ≈ 2π * 位置环带宽。这是从穿越频率近似公式反推的。
  4. 试跑斜坡信号:给一个匀速指令,看跟踪误差。如果误差是常值,说明需要加Ki。
  5. 加入积分项:Ki = Kp / (3~5) * 位置环带宽。这个比例能保证相位裕度。
  6. 检查阶跃响应:看超调量,一般控制在5%以内。超调大了就降Kp或Ki。

一句话总结:位置环的数学模型告诉我们,P控制决定响应速度,I控制消除稳态误差,而D控制——嗯,我建议你在无感启动场景下慎用。