【控制理论】别急着调PID:一个闭环控制系统到底由什么组成
2026/8/27 9:53:52 网站建设 项目流程

从这一篇开始,我们正式进入专栏的第一层:控制理论。暂时不推公式,也不将注意力全放在PID的调参上。比起“怎么调”,更重要的问题是:一个控制系统到底在控制什么?它又是怎么知道自己有没有控制对?

写在前面

刚开始接触控制时,本人曾陷进一个误区:看到电机转得不稳、机械臂末端抖动,第一反应就是“是不是PID没调好”。

但后来发现,PID 只是控制系统里的一个环节,甚至只是“控制器”这个环节里最常见的一种实现。传感器有没有把真实状态测回来、执行器能不能真的把指令变成动作、目标本身合不合理。这些问题没想清楚,单独盯着三个参数,很多时候都是在做无用功。

所以这一节先把公式放一边,从最直观的角度,把一个闭环控制系统真正的骨架搭起来。

一、控制这件事,本质上是在“让结果靠近目标”

先想一个特别生活化的场景:你把空调设成 24℃。

这里你真正想要的,不是让压缩机一直高功率运转,也不是让风扇转得越快越好。你关心的始终是最后那个结果:房间里的温度能不能稳定在24℃附近。

控制问题基本都可以这么理解:

  • 我希望系统最后达到一个什么状态;
  • 系统现在实际处于什么状态;
  • 两者之间差了多少;
  • 我应该做什么动作,才能把这个差距慢慢补回来。

电机调速是这样,平衡车保持不倒是这样,机械臂准确抓取也是这样。再之后到强化学习、具身智能,本质上也还是在不断看结果、做动作、再根据结果修正动作。

这就是控制里最朴素的一条线:目标—偏差—修正。

二、开环和闭环,差的不是一根线,而是“会不会看结果”

最容易理解闭环的方法,是先看它的反面:开环。

比如给电机固定一个 PWM 占空比,不管它当前转得快还是慢,都不再调整;或者给加热器固定通电十分钟,不管房间本来有多冷、中途有没有开窗,也照着十分钟执行。这种“发出指令后就不再看结果”的方式,就是开环。

开环并不一定没用。洗衣机按既定程序转动、定时浇水、简单的流水灯,这些场景里目标不高、环境变化不大,开环就足够直接。

但只要环境开始变化,问题就来了:

  • 电机负载变重,原来的占空比不够了;
  • 房间突然开窗,原来的加热时间不够了;
  • 机械臂抓到的物体比预想更重,原来的力矩不够了。

这时候系统若还只会机械执行旧指令,就没办法保证最终结果。

闭环多做了一件关键的事:把结果重新测回来。

它不是“我发出一次命令,然后等着看运气”,而是“我做完一次动作,看看结果离目标还有多远,再决定下一次怎么做”。有了这条反馈通道,控制才真正开始具备纠错能力。

三、一个完整闭环,到底由哪些部分组成?

看上面的图,一个看起来抽象的闭环系统,其实可以拆成六个很具体的角色。

1. 给定值:我到底想要什么?

给定值也常被叫作参考输入。它描述的是目标,而不是动作。

例如:

  • 电机希望稳定在 1500r/min;
  • 房间希望维持在 24℃;
  • 无人机希望飞到 2m 高度;
  • 机械臂末端希望移动到某个坐标点。

这一步听起来很简单,但它其实决定了控制系统的方向。目标如果没有被表达清楚,后面的“控制得好不好”也就没有判断标准。

2. 比较器:目标和现实,到底差了多少?

系统需要把“想要的结果”和“当前的结果”放在一起比较,得到一个偏差。

用最简洁的符号写,就是:e(t)=r(t)−y(t)e(t)=r(t)-y(t)e(t)=r(t)y(t)其中,r(t)r(t)r(t)是目标,y(t)y(t)y(t)是实际输出,e(t)e(t)e(t)就是当前误差。

这里不需要把它想得多神秘。温度还差 2℃,这就是误差;电机比目标慢了 200r/min,这也是误差;机械臂末端离目标位置还有一小段距离,同样还是误差。

控制系统后面做的所有事,归根到底都是围绕这个偏差展开的。

3. 控制器:看到偏差以后,应该怎么改?

控制器是闭环里负责“做决定”的部分。

它接收到偏差后,需要回答的问题是:现在力该加大还是减小、是否要考虑过去一段时间积累下来的误差、外界干扰是否变大?

PID、状态反馈、LQR、MPC,这些后续会讲到的算法,本质上都属于控制器的不同思路。它们解决的不是“系统有没有目标”,而是“面对偏差时,到底用什么策略修正最合适”。

所以:PID不是整个控制系统,它只是控制器的一种实现。

4. 执行器:把“决定”真的变成动作

控制器算出来的是一个指令,但指令本身还不会改变真实世界。

真正把指令变成物理动作的是执行器:

  • 电机驱动器把电信号变成转矩;
  • 加热器把功率变成热量;
  • 液压缸把控制量变成位移;
  • 舵机把角度指令变成机械臂的关节运动。

这也是为什么控制算法从仿真走到实机时,常常会遇到落差。数学里的一条控制量,落到硬件上以后,会受到饱和、死区、延迟、功率限制等各种现实约束。这个问题我们后面再展开。

5. 被控对象:真正需要被改变的那个系统

被控对象就是你真正想控制的东西。

电机、房间温度、无人机姿态、机械臂关节、液位高度,都可以是被控对象。它有自己的惯性、延迟、非线性,也会受到环境影响。

控制最难的地方,往往就在这里:对象不会完全按人的想法行动。你给了电机一个电压,它不会瞬间到达目标转速;你打开加热器,温度也不会立刻上升;机械臂关节之间还可能相互耦合。

所以控制理论首先研究的,不是“怎么写一行控制代码”,而是“这个对象本身有什么规律”。

6. 传感器与反馈:系统怎么知道自己做对了没有

最后一块是传感器。

传感器把被控对象现在的状态重新告诉系统:编码器测转速,温度计测温度,IMU测姿态,相机或力传感器帮机械臂感知外部环境。这个测量值再回到比较器,和目标重新比较,于是新的控制动作又开始生成。

从这个角度看,闭环最核心的能力并不是“会输出控制量”,而是会根据结果持续修正自己。

四、把这条闭环放进恒温场景里,会清楚很多

回到房间恒温这个例子。
如果目标是 24℃,但温度计测回来只有 21.3℃,温控器就知道当前温度偏低,于是提高加热器功率。过一段时间,室温慢慢升到 23.5℃,偏差变小,加热器也就没必要继续全力工作。

要是这时有人开窗,热风灌进来,房间温度开始上升。闭环系统不会因为“原来已经调过一次”就停止工作,它会通过温度计再次看到新的偏差,然后继续修正。

这就是反馈真正有价值的地方:它不是假设环境永远不变,而是在变化里不断把系统拉回目标附近。

五、少了任何一环,盲目调PID都很难解决问题

很多实机问题最后看起来像“PID没调好”,但往前追一层,根因可能根本不在PID。

例如:

  • 传感器噪声很大,系统看到的误差本身就在乱跳;
  • 执行器已经到最大功率,再怎么加控制量也没有用;
  • 采样频率太低,系统总是看到过时的信息;
  • 模型理解错了对象的特性,调参方向从一开始就偏了;
  • 外界扰动太强,原本的控制裕度根本不够。

所以遇到控制效果不好时,与其问“P、I、D 该怎么改”,不如先沿着闭环思考:

  1. 目标定义是否清晰
  2. 当前状态测量是否准确
  3. 偏差计算是否有误
  4. 控制器给出的动作是否合理
  5. 执行器真的执行出来了吗
  6. 输出有没有被重新反馈回来

把这六个问题走一遍,很多问题的定位会比反复试参数更快。

六、把这一节放回整个专栏里看

开篇里提到,这个专栏会沿着“控制理论—控制算法—嵌入式—机器学习—大模型”五层结构慢慢往上走。

这一节实际上是在最底层先搭起共同的语言:反馈。

后面讲PID、状态反馈、最优控制时,我们仍然在研究“怎样根据偏差做出更好的修正”;讲嵌入式时,我们会关心这条反馈链能不能在有限算力和严格时序下稳定跑起来;讲机器学习时,梯度下降也是根据损失不断修正参数;走到大模型Agent,依然能看到“观察—思考—行动—再观察”的更高阶反馈环。

技术会越来越复杂,但这条线不会断。

In the end:下一节该看什么

现在我们已经知道,一个闭环系统不是“给个命令让它动起来”这么简单,而是让系统不断比较目标和现实,再根据偏差修正自己。

但新的问题也随之出现:同样施加一个输入,为什么有些系统立刻响应,有些却要经历一段变化过程;为什么输入已经停止,系统的输出还会继续变化。

下一节就从这里继续:系统为什么会“有记忆”:从输入输出理解动态过程。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询