4. 常用控制系统模块深度解析

在 Simulink 中搭建控制系统,真正决定模型“像不像”被控对象的,往往不是连线是否整齐,而是几个基础模块的参数是否配置正确。Gain、Sum、Integrator、Transfer Fcn、State-Space、Zero-Order Hold 这六类模块几乎覆盖了连续系统建模、控制器实现和离散化采样的全部基础环节。本节从“模块在数学上代表什么”出发,说明参数配置要点,并给出选用原则。

Gain:比例关系的直接表达

Gain 模块实现 y = K·u,其中 K 是增益。参数配置的核心是 Gain 值、Multiplication(Element-wise 或 Matrix)以及 Sample time。当输入是标量时,Gain 就是简单乘法;当输入是向量或矩阵时,必须明确是逐元素相乘还是矩阵相乘,否则会得到维度不匹配的错误。例如把增益设为 [2 0; 0 3] 并选择 Matrix 模式,就实现了一个对角增益矩阵,常用于多变量系统的通道缩放。

选用原则:Gain 适合表达比例控制器、传感器量程换算、单位转换、执行机构增益。若增益本身随工况变化,应改用 Product 或 Lookup Table,而不是在 Gain 中硬编码。

Sum:加减运算与符号约定

Sum 模块实现输入信号的加权和,参数 Icon shape 决定外观,List of signs 决定每个输入的符号,例如 |+- 表示第一个输入取正、第二个取负。这里必须强调参照约定:Simulink 中 Sum 的符号顺序与端口从上到下的顺序一致,误差信号通常写成 e = r − y,对应符号列表 +-。若符号写反,闭环会变成正反馈,仿真结果会发散。

选用原则:Sum 用于误差计算、前馈叠加、多路信号合成。当输入超过三个时,建议用矩形图标并适当增大字号,避免端口拥挤导致连线错误。

Integrator:状态与初始条件

Integrator 实现 y(t) = y(0) + ∫u(τ)dτ,参数包括 Initial condition、Limit output、Upper/Lower saturation limit、External reset。初始条件决定仿真开始瞬间的状态值,对电机转速、位置等物理量必须与实际初始状态一致。启用输出限幅可以模拟执行机构饱和,例如把积分器输出限制在 [0, 10] 表示阀门开度范围。

选用原则:Integrator 适合表达具有记忆效应的物理量,如速度、位置、电容电压。若需要纯积分控制器,可直接使用 Integrator;若需要带限幅的抗积分饱和,应启用 Limit output 并配合外部复位。

Transfer Fcn:传递函数与系数顺序

Transfer Fcn 模块用分子分母多项式系数描述线性时不变系统,参数 Numerator coefficients 和 Denominator coefficients 均按 s 的降幂排列。例如 G(s) = 10/(s² + 2s + 10),分子填 [10],分母填 [1 2 10]。若分子分母阶次不同,Simulink 会自动补零,但建议显式写出完整系数,便于核对。

选用原则:Transfer Fcn 适合单输入单输出、已知传递函数的场合,如滤波器、一阶惯性环节、二阶振荡环节。它不便于设置非零初始条件,若系统需要从非零状态启动,应改用 State-Space。

State-Space:状态方程与矩阵维度

State-Space 模块实现 ẋ = Ax + Bu,y = Cx + Du,参数为 A、B、C、D 四个矩阵以及 Initial conditions。矩阵维度必须自洽:若状态数为 n、输入数为 m、输出数为 p,则 A 为 n×n,B 为 n×m,C 为 p×n,D 为 p×m。例如质量-弹簧-阻尼系统,取状态 x = [位置; 速度],则 A = [0 1; -k/m -c/m],B = [0; 1/m],C = [1 0],D = 0。

选用原则:State-Space 适合多输入多输出、需要非零初始条件、需要观察内部状态的系统。它比 Transfer Fcn 更通用,但要求建模者清楚状态变量的物理含义。

Zero-Order Hold:离散化与采样周期

Zero-Order Hold(ZOH)模块在每个采样周期内保持输入值不变,参数主要是 Sample time。它常用于连续控制器离散化、数字信号保持、采样系统建模。若采样周期设为 0.01 s,则输出每 10 ms 更新一次,其余时间保持上一次的值。ZOH 的频域特性会引入相位滞后,采样周期越大,滞后越明显,因此选择采样周期时通常要求它远小于系统最小时间常数。

选用原则:ZOH 适合数字控制器输出保持、DAC 等效建模。若需要一阶保持,应改用 First-Order Hold;若只是离散化连续传递函数,也可用 c2d 配合 Discrete Transfer Fcn。

常用控制系统模块:数学含义与选用决策 连续域建模模块 Gain y = K·u 参数:Gain、Multiplication 适用:比例控制、量程换算、单位转换 Sum y = ±u₁ ± u₂ 参数:List of signs 适用:误差 e = r − y、前馈叠加 Integrator y = y(0) + ∫u dt 参数:Initial condition 适用:速度、位置、电容电压等记忆量 Transfer Fcn G(s)=num(s)/den(s) 系数降幂排列 适用:SISO、已知传递函数、滤波器 State-Space ẋ=Ax+Bu, y=Cx+Du 参数:A,B,C,D 适用:MIMO、非零初值、需观察内部状态 离散域与采样模块 Zero-Order Hold y(kT) = u(kT),周期内保持 参数:Sample time 适用:数字控制器输出保持、DAC 等效 采样周期选择原则 T_s ≪ 系统最小时间常数 τ_min 经验:T_s ≤ τ_min / 10 T_s 过大 → 相位滞后 → 稳定性下降 示例:τ=0.1 s 时取 T_s=0.01 s 选用决策要点 • SISO 且已知 G(s) → Transfer Fcn • MIMO 或需非零初值 → State-Space • 数字实现 → ZOH + 离散模块 • 纯比例/求和/积分 → Gain/Sum/Integrator 离散化 c2d

参数配置的常见陷阱与核对方法

第一类陷阱是符号与参照系不一致。Sum 的符号列表、反馈通道的 Gain 正负号、状态方程中 B 矩阵的符号,必须与物理定义一致。建议在模型旁标注“误差定义为 r − y”,并在 Sum 图标上直接显示符号。

第二类陷阱是系数顺序写反。Transfer Fcn 的分子分母均按降幂排列,若把 [1 2 10] 写成 [10 2 1],系统极点会完全改变。配置后可用 tf 命令在 MATLAB 中核对:tf([10],[1 2 10]) 应与模块显示一致。

第三类陷阱是采样周期不匹配。ZOH 的 Sample time 若与控制器周期不一致,会出现多速率系统,仿真步长自动变小,结果可能失真。建议在模型配置参数中把 Solver 设为定步长,并让所有离散模块共用同一采样周期。

配置完成后,用 Model Explorer 或 get_param 批量检查模块参数,比逐个双击更高效。例如 get_param('mymodel/Gain','Gain') 可直接读取增益值。

一个可复用的参数核对清单

模块必查参数核对方法
GainGain 值、Multiplication确认标量/矩阵模式与输入维度匹配
SumList of signs对照误差定义,确认符号顺序
IntegratorInitial condition、Limit output确认初值与物理初始状态一致
Transfer FcnNumerator、Denominator用 tf 命令核对系数
State-SpaceA、B、C、D、Initial conditions检查矩阵维度 n×n、n×m、p×n、p×m
Zero-Order HoldSample time确认 T_s ≤ τ_min/10,且与控制器周期一致

把这六类模块的参数含义和选用边界弄清楚,后续搭建 PID、状态反馈、观测器等复杂结构时,就只是在正确的基础上做组合,而不是反复排查“为什么仿真结果不对”。建议在每次新建模型时,先按上表核对一遍,再开始连线与调试。