【控制理论】别急着调PID:一个闭环控制系统到底由什么组成
从这一篇开始我们正式进入专栏的第一层控制理论。暂时不推公式也不将注意力全放在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 该怎么改”不如先沿着闭环思考目标定义是否清晰当前状态测量是否准确偏差计算是否有误控制器给出的动作是否合理执行器真的执行出来了吗输出有没有被重新反馈回来把这六个问题走一遍很多问题的定位会比反复试参数更快。六、把这一节放回整个专栏里看开篇里提到这个专栏会沿着“控制理论—控制算法—嵌入式—机器学习—大模型”五层结构慢慢往上走。这一节实际上是在最底层先搭起共同的语言反馈。后面讲PID、状态反馈、最优控制时我们仍然在研究“怎样根据偏差做出更好的修正”讲嵌入式时我们会关心这条反馈链能不能在有限算力和严格时序下稳定跑起来讲机器学习时梯度下降也是根据损失不断修正参数走到大模型Agent依然能看到“观察—思考—行动—再观察”的更高阶反馈环。技术会越来越复杂但这条线不会断。In the end下一节该看什么现在我们已经知道一个闭环系统不是“给个命令让它动起来”这么简单而是让系统不断比较目标和现实再根据偏差修正自己。但新的问题也随之出现同样施加一个输入为什么有些系统立刻响应有些却要经历一段变化过程为什么输入已经停止系统的输出还会继续变化。下一节就从这里继续系统为什么会“有记忆”从输入输出理解动态过程。