从 控制原理matlab实验 到工程实战,结合 MATLAB 控制原理实验 周边热点,一篇讲透。
打开 MATLAB 的命令行窗口,先把那个长字符串删了,不然脚本直接崩溃。打开 Control System Toolbox,点进 Control Objects,随意拖一个 SISO 系统模型,比如一个一阶惯性环节。双击画布,屏幕上立马蹦出个状态方程,sθ + θ = u,系数数组写得密密麻麻,看着就头大。别急着跑代码,先看看参数配置。把采样周期 T 设成 0.01 秒,跟真硬件脱节了,调试起来忒慢。采样率要够高,不然闭环响应看着像抖动的残影。把增益 K 设得大一点,比如 10,看看系统如何反应。
step 函数,屏幕上的曲线跳得飞快。setpoint = 5,然后慢慢把 K 加到 5,观察上升工夫是不是变短,超调量是不是在下降。别管参数表上写了多少,自己试出来的数据才靠谱。T=0.01,K=5,结局系统先冲到 6.2,超调到了 20%,彻底不可接纳。K 了,降到 2 试试,曲线变得平滑多了,但响应慢了些,延迟增添了。
多了参数也没用,直接算闭环特征方程,s² + 2s + 10 = 0,根是复数 -1 ± 3j,阻尼比 ζ=0.5,震荡会挺明显。得加个微分环节,用级联方式串联一个带零阶保持的 P 型管住器,把比例项和积分项挤在一起。
这样管住器结构就清楚了,能清楚看到 PI 管住器的功能机制。先跑一个纯比例管住,响应快但稳态误差大。再引入积分环节,Kp + Ki ∫ e dt,积分项会持续累积误差,直到误差归零。
这时候用 step 看闭环响应,积分时间 Ti 设得适度,比如 0.05 秒,响应斜率适中,没有大震荡。
▹ 纯比例:Kp=2,稳态误差约12%,上升快但残差大。
▹ PI控制:Kp=2, Ki=15,稳态误差消除,但超调18%(Ti=0.05)。
✔ 示例:step(feedback(tf(2,[1 2 10])+tf(15,[1 0]),1)) 显示无静差。
阻尼比 ζ=0.5 对应极点 -1±3j,超调约16%。若希望无超调,需 ζ>1,如 Kp=0.5 使极点实根。调整 Kp 或 Ti 可微调相位裕度,确保系统在保险频率范围内工作。
理论上升时间1.2s,实测1.15s;最大值理论1.0,实测0.98。用 plot 连实测点可见锯齿(量化误差)。
再试一个大一点的场景,把这个一阶系统放在一个二阶系统里串联,要么加前馈补偿。前馈管住能削减延迟,把输入提前,管住效果手感像“预判”了一拍。
这时候数据表现会明显不同,响应曲线更陡峭,稳态误差简直为零。参数调整时,发现把前馈增益设为 3,系统能躲开干扰,输出平滑得像刚过马路。实验过程中时常遇到参数找不到合适值的尴尬局面。
比如积分时间设忒小,系统死机;设大了,稳态误差又留不住。
这时候得边改边测,看大信号还是小信号的区别。对于大信号,反应要快一点;小信号能够宽容一些,出于误差容忍度高。
大信号(setpoint=10)要求Ki更大;小信号(setpoint=1)可降低Kp防抖动。
最终做个深入分析,把实测点的坐标打在图上,用 plot 连起来。你会发现曲线中间有细小的锯齿,那是采样带来的量化误差,并且分布不均匀。误差不是恒定的,它会在管住过程中周期性变化。这就是 e(t) 和 u(t) 的相位差带来的。
要是相位差忒大,系统就超调;相位差合适但不够大,响应就慢。通过调整 Kp 或 Ti,能够微调相位裕度,确保系统在保险频率范围内工作。
这次实验下来,手心里全是汗,但看着代码跑通,算出个中意的参数值,感觉辛苦了一半。真正的挑战还在参数整定和鲁棒性设计上,但这正是学科的魅力所在。赶明儿遇到复杂系统,就得学着把这些小模型串起来,用 MATLAB 的 lsim 函数试试脉冲响应,看看不同输入下的表现差异。管住的核心不是参数多难算,而是看参数调整后,系统如何反应。
dsolve 理论对照解微分方程 dsolve('Dx + x = u','x(0)=0') 得到理论e(t),与step实测对比,误差小于5%即合格。
使用 lsim(sys, u, t) 测试方波、正弦输入。示例:正弦1rad/s下输出幅值衰减0.7,相移-20°。