3. 系统建模

MPC(模型预测控制)的核心是“模型”。控制器在每个采样周期内,利用系统模型预测未来若干步的输出轨迹,并通过求解带约束的优化问题得到当前控制量。因此,模型的质量直接决定了MPC的预测精度、约束满足能力和闭环稳定性。本章围绕工程中最常用的建模路径展开:机理建模与数据驱动建模两条主线,状态空间与传递函数两种描述形式,以及线性化与离散化两项落地处理。

一、两条建模主线:机理建模与数据驱动建模

机理建模从物理规律出发,利用质量守恒、能量守恒、牛顿定律、电路定律等建立微分方程。它的优点是物理意义明确、外推能力强、参数可解释;缺点是复杂对象(如强非线性、多相流、时变工况)难以精确刻画,且建模周期长。

数据驱动建模则通过实验或历史数据辨识模型,常见方法包括阶跃响应辨识、最小二乘/子空间辨识、ARX/ARMAX、神经网络与高斯过程等。它的优点是能快速贴合实际输入输出特性;缺点是对激励信号质量敏感,外推能力弱,且模型可能缺乏物理可解释性。

工程实践中常采用“灰箱”策略:以机理模型为骨架,用数据辨识修正关键参数或补偿未建模动态,兼顾可解释性与精度。

二、状态空间与传递函数:两种等价描述

连续时间线性系统常用两种形式描述。传递函数描述输入输出关系,适合单入单出(SISO)系统的频域分析与控制器设计;状态空间描述内部状态演化,天然适合多入多出(MIMO)系统、初值非零和现代控制方法。

传递函数形式:
G(s) = Y(s)/U(s) = b_m s^m + ... + b_0 / (a_n s^n + ... + a_0)

状态空间形式:
x_dot = A x + B u
y     = C x + D u

两者可以相互转换:由状态空间求传递函数为 G(s)=C(sI−A)⁻¹B+D;由传递函数可构造能控标准型或能观标准型状态空间。MPC通常采用状态空间形式,因为它便于处理多变量耦合、状态约束和预测递推。

三、线性化与离散化:从非线性连续到线性离散

真实对象多为非线性连续系统。MPC落地前通常需要两步处理:线性化与离散化。

  • 线性化:在工作点 (x₀, u₀) 处对非线性模型做泰勒展开,保留一阶项,得到增量线性模型 Δx_dot = A Δx + B Δu,其中 A=∂f/∂x、B=∂f/∂u 在平衡点处求值。
  • 离散化:将连续模型转换为离散时间模型 x(k+1)=A_d x(k)+B_d u(k)。常用方法包括零阶保持(ZOH)、一阶保持(FOH)、前向/后向欧拉和Tustin变换。

零阶保持法假设控制量在一个采样周期内保持不变,最符合数字控制器实际输出特性,因此是MPC中最常用的离散化方法:A_d=e^{AT},B_d=∫₀ᵀ e^{Aτ}B dτ。

线性化只在工作点附近有效。若工况大范围变化,应使用多工作点线性化+调度,或直接采用非线性MPC(NMPC)。

四、方法对比与选型清单

建模/处理方法适用场景优点局限
机理建模物理规律清晰、可解析可解释、外推强复杂对象难精确
数据驱动建模机理复杂或未知贴合实测、周期短依赖激励、外推弱
传递函数SISO、频域分析结构简单、直观MIMO与初值处理弱
状态空间MIMO、现代控制便于预测与约束状态需可测或估计
线性化弱非线性、工作点附近可复用线性MPC大范围误差大
ZOH离散化数字控制器实现匹配实际输出采样过快时精度受限

五、案例:一阶温度系统建模流程

考虑一个电加热温度系统,输入为加热功率 u,输出为温度 y。机理模型可写为 C dT/dt = u − (T−T_env)/R。在工作点 T₀ 处线性化并整理为 ΔT_dot = −(1/RC)ΔT + (1/C)Δu。取采样周期 T_s=1s,用ZOH离散化得到 ΔT(k+1)=a ΔT(k)+b Δu(k),其中 a=e^{−T_s/(RC)},b=(1−a)R。该离散模型即可直接用于MPC的预测方程。

# Python 示例:连续模型离散化
import numpy as np
from scipy.signal import cont2discrete

A = np.array([[-1/(R*C)]])
B = np.array([[1/C]])
C_ = np.array([[1.0]])
D = np.array([[0.0]])
Ad, Bd, Cd, Dd, dt = cont2discrete((A, B, C_, D), T_s, method='zoh')

六、常见误区与复盘

  • 误区1:直接用连续模型设计MPC。数字控制器必须使用离散模型,否则预测步长与实际执行不一致。
  • 误区2:忽略工作点选择。线性化点偏离实际工况会导致模型增益和动态显著失真。
  • 误区3:数据辨识激励不足。输入信号幅值小或频带窄,会得到“看似拟合好、实际不可用”的模型。
  • 误区4:状态不可测却直接使用状态空间MPC。应配合状态观测器(如Kalman滤波)或改用输入输出模型。
建模检查清单:① 模型是否覆盖主要工况;② 线性化点是否合理;③ 离散化方法是否匹配执行器;④ 模型验证是否使用独立数据集;⑤ 预测误差是否满足MPC鲁棒性要求。
MPC系统建模路径与转换关系 机理建模 质量/能量/牛顿定律 微分方程 数据驱动建模 阶跃/子空间/ARX 神经网络/高斯过程 非线性连续模型 x_dot = f(x,u) y = h(x,u) 线性化 工作点泰勒展开 Δx_dot = AΔx + BΔu 离散化 ZOH / FOH / Tustin x(k+1)=A_d x(k)+B_d u(k) 状态空间模型 MIMO / 状态约束 适合MPC预测 传递函数模型 SISO / 频域分析 G(s)=C(sI−A)⁻¹B+D 工程落地顺序:机理/数据建模 → 非线性连续模型 → 工作点线性化 → 离散化 → 状态空间/传递函数 → MPC预测模型 关键校验:模型验证用独立数据;线性化点覆盖主要工况;离散化方法匹配执行器保持特性

综上,MPC建模不是单一方法的选择,而是一条从物理机理或数据出发,经过线性化、离散化,最终落到状态空间或传递函数的完整链路。理解每一步的适用条件与误差来源,才能在工程中构建出既准确又可用于实时优化的预测模型。