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。
参数配置的常见陷阱与核对方法
第一类陷阱是符号与参照系不一致。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') 可直接读取增益值。一个可复用的参数核对清单
| 模块 | 必查参数 | 核对方法 |
|---|---|---|
| Gain | Gain 值、Multiplication | 确认标量/矩阵模式与输入维度匹配 |
| Sum | List of signs | 对照误差定义,确认符号顺序 |
| Integrator | Initial condition、Limit output | 确认初值与物理初始状态一致 |
| Transfer Fcn | Numerator、Denominator | 用 tf 命令核对系数 |
| State-Space | A、B、C、D、Initial conditions | 检查矩阵维度 n×n、n×m、p×n、p×m |
| Zero-Order Hold | Sample time | 确认 T_s ≤ τ_min/10,且与控制器周期一致 |
把这六类模块的参数含义和选用边界弄清楚,后续搭建 PID、状态反馈、观测器等复杂结构时,就只是在正确的基础上做组合,而不是反复排查“为什么仿真结果不对”。建议在每次新建模型时,先按上表核对一遍,再开始连线与调试。