Bang-Bang 控制:为什么控制量只有“开”和“关”

写在前面

Bang-Bang 控制是一种非常朴素但很重要的控制思想。

它的核心特点是:控制量不连续调节,而是在两个极限值之间切换。

也就是说,控制器通常只会给出两种动作:

  • 全力正向控制。
  • 全力反向控制。

或者更简单:

  • 开。
  • 关。

所以它也常被称为 开关控制、继电控制、两位式控制。

1. Bang-Bang 控制是什么

假设我们要控制一个系统状态 xx 接近期望值 xdx_d。

普通连续控制可能会根据误差大小输出不同强度的控制量:

u=K(xd−x)u = K(x_d-x)

误差大,控制量大;误差小,控制量小。

但 Bang-Bang 控制不这么做。它只关心误差在目标的哪一侧,然后直接给最大控制量:

u={umax⁡,e>0,umin⁡,e<0. u = \begin{cases} u_{\max}, & e > 0,\\ u_{\min}, & e < 0. \end{cases}

其中:

e=xd−xe=x_d-x

如果当前位置低于目标,就全力往上推;如果当前位置高于目标,就全力往下拉。

这就是 Bang-Bang:不是温柔地调,而是直接打满。

2. 一个最简单的例子:恒温控制

生活里最常见的例子是恒温器。

假设目标温度是 25∘C25^\circ C:

  • 温度低于 25∘C25^\circ C,加热器打开。
  • 温度高于 25∘C25^\circ C,加热器关闭。

控制量只有两个状态:

u∈{0,1}u\in\{0,1\}

这里的 11 表示加热,00 表示不加热。

这类控制简单、便宜、容易实现,所以在很多工程系统里都能看到。

3. 数学形式

更一般地,Bang-Bang 控制可以写成:

u(t)={umax⁡,s(x,t)>0,umin⁡,s(x,t)<0. u(t)= \begin{cases} u_{\max}, & s(x,t)>0,\\ u_{\min}, & s(x,t)<0. \end{cases}

其中 s(x,t)s(x,t) 是一个切换函数。

最简单时,切换函数就是误差:

s(x,t)=xd−x(t)s(x,t)=x_d-x(t)

但在更复杂的问题里,切换函数可能由状态、协态、约束或优化条件决定。

这也是为什么 Bang-Bang 控制不只是“土办法”,它在最优控制里也很重要。

4. 为什么它经常是时间最优的

Bang-Bang 控制和时间最优控制关系很密切。

如果系统输入受限,例如:

u∈[−umax⁡,umax⁡]u\in[-u_{\max},u_{\max}]

目标是用最短时间把系统从初始状态送到目标状态,那么直觉上最合理的做法往往是:

  1. 一开始用最大控制量加速。
  2. 到某个切换点后,用最大反向控制量减速。
  3. 刚好在目标处停下来。

这就是典型的 Bang-Bang 结构。

例如一维双积分系统:

x¨=u,∣u∣≤umax⁡\ddot{x}=u,\qquad |u|\le u_{\max}

如果要从静止移动到另一个位置,并且希望时间最短,最优策略通常就是:

u={+umax⁡,前半段加速,−umax⁡,后半段减速. u= \begin{cases} +u_{\max}, & \text{前半段加速},\\ -u_{\max}, & \text{后半段减速}. \end{cases}

也就是说,控制量只有一次切换:先油门踩到底,再反向刹车踩到底。

5. 在运动控制里的直观理解

在运动控制里,Bang-Bang 控制可以理解为一种“极限动作策略”。

比如位置控制中,如果执行器最大加速度有限,要尽快到达目标位置:

  • 离目标远时,使用最大加速度。
  • 接近目标时,切换为最大减速度。
  • 到目标时速度刚好降为零。

从速度曲线看,它可能形成三角速度规划:

  • 速度先线性上升。
  • 到切换点后线性下降。

如果中间达到最大速度并保持一段时间,则会变成梯形速度规划:

  • 最大加速度加速。
  • 匀速。
  • 最大减速度减速。

所以 Bang-Bang 控制和轨迹规划里的 最大加速度/最大减速度约束 有很直接的联系。

6. Bang-Bang 控制的问题

Bang-Bang 控制虽然简单直接,但缺点也很明显。

1)容易抖动

如果系统在目标附近有噪声,控制量可能频繁切换:

+umax⁡↔−umax⁡+u_{\max}\leftrightarrow -u_{\max}

这种现象可能导致执行器抖动、继电器频繁吸合、机械结构磨损。

2)控制不平滑

Bang-Bang 控制量是突变的。

实际系统中,电机、电流、液压阀、机械结构都不喜欢无限快的突变。突变可能带来冲击、振动和噪声。

3)对模型和切换点敏感

如果切换点算得不准,就可能:

  • 刹车太早,到不了目标。
  • 刹车太晚,冲过目标。

因此在精密控制里,Bang-Bang 常常需要和反馈、滞回、滤波或轨迹规划结合使用。

7. 加一点滞回:避免疯狂抖动

为了解决目标附近频繁切换的问题,常见做法是加入滞回区间。

例如恒温控制不要在 25∘C25^\circ C 这个点立刻切换,而是设置上下阈值:

  • 低于 24.5∘C24.5^\circ C,打开加热。
  • 高于 25.5∘C25.5^\circ C,关闭加热。

数学上可以写成:

u={1,T<Tmin⁡,0,T>Tmax⁡,保持上一状态,Tmin⁡≤T≤Tmax⁡. u= \begin{cases} 1, & T<T_{\min},\\ 0, & T>T_{\max},\\ \text{保持上一状态}, & T_{\min}\le T\le T_{\max}. \end{cases}

这样系统不会在一个点附近来回跳,而是在一个区间内保持状态。

这就是典型的 hysteresis control,也就是带滞回的开关控制。

8. Bang-Bang、PID、MPC 的区别

可以简单这样理解:

控制方法 输出特点 优点 问题
Bang-Bang 只有几个离散值 简单、快、容易实现 抖动、冲击、不平滑
PID 连续调节 工程常用、调参直观 对强约束和复杂系统不够直接
MPC 在线优化 能处理约束、多变量、预测 计算量大,实现复杂

Bang-Bang 控制很像一个果断的人:

不是最大,就是最小;不是开,就是关。

PID 更像一个会根据误差轻重调节力度的人。

MPC 则像一个会提前看未来几步、带着约束做规划的人。

9. 什么时候适合用 Bang-Bang 控制

Bang-Bang 控制适合这些场景:

  • 执行器本来就只有开关状态。
  • 对平滑性要求不高。
  • 目标是快速到达。
  • 系统模型简单,切换点容易计算。
  • 可以接受一定范围内的振荡。
  • 有滞回机制避免高频切换。

不太适合这些场景:

  • 精密位置控制。
  • 对振动、噪声、冲击很敏感。
  • 执行器不能频繁切换。
  • 系统有明显延迟和不确定性。
  • 需要平滑轨迹和舒适运动。

总结

Bang-Bang 控制的核心是:

控制量只在极限值之间切换。

它的优点是简单、直接、响应快;缺点是容易抖动、不平滑、对切换点敏感。

在时间最优控制和运动规划里,Bang-Bang 思想非常常见。典型策略就是:

  1. 最大加速。
  2. 到切换点。
  3. 最大减速。

如果只作为工程控制器使用,通常需要加入滞回、死区、滤波或与其他控制方法结合,避免执行器在目标附近疯狂切换。

一句话记住:

Bang-Bang 控制不是“精细地调”,而是“在约束允许范围内果断打满”。

知识共享许可协议