简介这份资源是面向控制科学与工程方向高年级本科生、研究生及工程技术人员的自动控制原理实验文档围绕MATLAB与MWORKS两大工具展开帮助读者在建模、仿真与系统分析中打通理论与实践的衔接。内容涵盖控制系统数学模型建立、时域与频域分析、典型环节动态性能与稳定性分析、频率特性测量、系统串联校正以及EF-Servo集成与滤波六个实验模块每个实验均配有目的、内容、步骤与思考题便于边学边练。资源包为1个docx文档大小约1.43MB结构完整、目录清晰可直接对照实验任务逐步操作。目前已有676人学习下载适合需要借助MATLAB与MWORKS完成控制系统建模、仿真与性能分析的读者参考使用。1. 传递函数不只是公式为什么控制系统仿真总在模型转换上翻车很多人第一次做控制理论实验觉得传递函数就是抄题目、敲系数、看曲线。真正上手才发现翻车点根本不在公式推导而在模型怎么建、怎么转、怎么连。一个s^3 6s^2 11s 6的分母写成[1 6 11 6]还是[1, 6, 11, 6]结果一样但把状态空间转回传递函数时数值误差能让你怀疑人生——8.88e-16这种系数会凭空冒出来。这份自动控制原理实验资源核心不是教你点哪个按钮而是把 MATLAB 与 MWORKS 两套工具下控制系统建模、时域频域分析、串联校正、EF-Servo 集成滤波这六个实验的底层机制串起来。搞懂 LTI 模型四种表示之间的转换逻辑你才能明白为什么仿真曲线和理论值对不上时该去查模型还是查参数。2. LTI 模型的四种面孔传递函数、零极点、状态空间到底怎么互转线性定常系统在工具里有四种描述方式传递函数模型、零极点增益模型、状态空间模型以及 Simulink 结构图。前三种是数学表达式有连续和离散两种类型统称 LTI 模型。实验一的核心就是把这四种模型建出来、转一遍、比一比。2.1 传递函数模型分子分母系数向量的坑传递函数写成G(s) num/den在工具里就是两个行向量。连续系统用tf(num, den)建立离散系统加采样周期Ts。比如G(s) 6/(s^3 6s^2 11s 6)代码是using TyControlSystems num 6 den [1 6 11 6] G tf(num, den)这里有个容易忽略的点num和den必须按降幂排列缺项要补零。如果分母是s^3 6s^2 11s 6写成[1 6 11 6]没问题但如果是s^3 11s 6必须写成[1 0 11 6]中间那个零不能省。我见过太多人因为漏了零仿真出来曲线完全不对还以为是算法问题。tf()不仅能建模型还能把零极点模型和状态空间模型转成传递函数。调用Gtf tf(G)时工具内部做的是多项式乘法与化简。注意状态空间转传递函数时数值误差会引入极小系数比如8.88e-16这是浮点运算的正常现象不是 bug。2.2 零极点增益模型无零点时 z 必须为空零极点模型写成G(s) K * (s-z1)(s-z2).../(s-p1)(s-p2)...用zpk(z, p, k)建立。z是零点向量p是极点向量k是增益。关键细节无零点时z要设成空向量[]不能省略也不能写0。z [] p [-1 -2 -3] k 6 G zpk(z, p, k)返回的是6/((s1)(s2)(s3))。零极点模型的价值在于极点的位置直接决定系统稳定性——全部在左半平面才稳定。实验二里判断稳定性用pole(G)或zpkdata(G, v)拿极点比看传递函数系数直观得多。2.3 状态空间模型不唯一但转换有讲究状态空间模型用ss(A, B, C, D)建立A是系统矩阵B是输入矩阵C是输出矩阵D是直接传递矩阵。传递函数和零极点模型是唯一的但状态空间模型不唯一——同一个系统可以有无穷多种状态空间实现。ss()函数只能把传递函数或零极点模型转成一种指定形式的状态空间模型。实验一里有个典型操作已知G(s) 5/(s^3 4s^2 5s 2)先建 TF 模型转 ZPK再转 SS最后把 SS 转回 TF比较前后差异。代码逻辑是using TyControlSystems using TyBase clear; clc() num 5 den [1 4 5 2] Gtf tf(num, den) Gzpk zpk(Gtf) print(Gzpk) Gss ss(Gtf) print(Gss) Gtf1 tf(Gss) print(Gtf1)转回来会发现分子分母系数有微小偏差比如1.9999999999999993代替2。这不是错误是浮点精度问题。理解这一点你就不会在实验报告里纠结“为什么转回来不一样”。2.4 模型连接串联、并联、反馈的运算逻辑子系统连接是实验一的重点。两个 LTI 模型G1和G2串联G G2 * G1注意顺序G2在前表示信号先经过G1再经过G2。并联G G1 G2。反馈G feedback(G1, G2)默认负反馈。多个系统串联写G Gn * ... * G2 * G1并联写G G1 G2 ... Gn。反馈连接用feedback()函数调用格式G feedback(G1, G2)默认负反馈。如果要正反馈需要显式指定符号。这里有个设计取舍为什么串联用乘法而不是函数因为 LTI 模型重载了*和运算符底层做的是多项式卷积和加法。理解这一点你就明白为什么串联顺序不能反——矩阵乘法不满足交换律传递函数乘法虽然标量可交换但多输入多输出系统里顺序至关重要。3. 时域分析二阶系统参数怎么影响超调量和调节时间实验二的核心是二阶系统时域分析。典型二阶系统闭环传递函数写成ωn^2/(s^2 2ζωn s ωn^2)其中ζ是阻尼比ωn是无阻尼振荡频率。这两个参数决定了系统的动态性能指标上升时间tr、峰值时间tp、超调量σ%、调节时间ts。3.1 阻尼比 ζ 对动态性能的影响固定ωn 5改变ζ取0、0.5、0.707、1、1.5绘制单位阶跃响应曲线。代码框架zita 0.5; % 阻尼比 w 5; % 无阻尼振荡频率 num1 w^2; den1 [1 2*zita*w 0]; Gkai tf(num1, den1); % 开环传递函数 Gbi feedback(Gkai, 1); % 闭环传递函数 step(Gbi) % 绘制单位阶跃响应ζ 0时无阻尼等幅振荡0 ζ 1欠阻尼有超调ζ 1临界阻尼无超调但响应慢ζ 1过阻尼响应更慢。ζ 0.707是最佳阻尼比超调量约 4.3%兼顾快速性和平稳性。这里有个反直觉的点超调量只由ζ决定与ωn无关。公式是σ% e^(-πζ/√(1-ζ^2)) * 100%。所以调超调量只动ζ调响应速度才动ωn。3.2 无阻尼振荡频率 ωn 对动态性能的影响固定ζ在 0 到 1 之间改变ωn取0.5、1、3、5。ωn越大上升时间tr和峰值时间tp越小响应越快但超调量不变。调节时间ts约等于3.5/(ζωn)所以ωn越大ts越小。实验里要求列表记录tr、tp、σ%、ts对比分析。工具里可以直接在阶跃响应图上右键选 Characteristics 里的指标自动标注在曲线上。这比手算快得多但你要理解每个指标的定义上升时间是响应从 10% 到 90% 的时间峰值时间是到第一个峰值的时间调节时间是进入并保持在 2% 或 5% 误差带的时间。3.3 状态响应与输出响应step、lsim、initial 的分工实验二还要求用step()、lsim()、initial()求状态响应和输出响应。step(G, t)求单位阶跃响应impulse(G, t)求单位脉冲响应lsim(G, u, t)求任意输入响应initial(G, x0)求零输入响应。以状态空间模型为例A [0 1; -2 -3]; B [0; 1]; C [1 1]; D 0; G ss(A, B, C, D); t 0:0.5:10; x0 [1; -1]; [yo, t, xo] initial(G, x0, t); plot(t, xo, :, t, yo, -)initial()返回零输入响应lsim()返回零状态响应两者相加是总响应。这里的关键是理解线性系统叠加原理总响应 零输入响应 零状态响应。实验里先求initial再求lsim最后相加画图验证叠加原理。3.4 稳定性判断极点、特征值、劳斯判据稳定性判断有三种方法传递函数极点全在左半平面系统矩阵A的特征值全有负实部劳斯判据。工具里用eig(A)求特征值roots(den)求多项式根pole(G)求极点pzmap(G)画零极点图。实验三的三阶系统开环传递函数G(s)H(s) K/(s(0.1s1)(0.5s1))特征方程s^3 12s^2 20s 20K 0。劳斯判据给出0 K 12稳定K 12临界稳定K 12不稳定。K 500/Rx所以改变Rx就能改变K观测三种状态下的阶跃响应。这里的设计取舍是劳斯判据适合低阶系统手算高阶系统用工具求特征值更可靠。但理解劳斯判据的推导能让你明白为什么K的临界值是 12 而不是别的数。4. 频域分析奈奎斯特图和伯德图怎么判断闭环稳定性实验二的频域部分和实验四的频率特性测量核心是奈奎斯特图和伯德图。开环传递函数G(s) 2/(s^3 9s^2 14s)要求画奈奎斯特图用奈奎斯特判据判断闭环稳定性再用pole()求闭环极点验证。4.1 奈奎斯特判据Z P - N奈奎斯特判据的公式是Z P - N其中Z是闭环右半平面极点数P是开环右半平面极点数N是奈奎斯特曲线包围(-1, j0)点的圈数。系统稳定要求Z 0即N P。工具里用nyquist(G)画奈奎斯特图nyquist(num, den)也可以。判断时看曲线是否包围(-1, j0)点。如果开环稳定P 0曲线不包围(-1, j0)则闭环稳定。这里有个容易翻车的点奈奎斯特图默认只画正频率部分负频率部分镜像。判断包围圈数时要把正负频率合起来看。很多人只看正频率半圈结论就反了。4.2 伯德图与稳定裕度margin 函数返回什么伯德图用bode(G)画margin(G)画带裕度标注的伯德图。margin()返回幅值裕度Gm、相位裕度Pm、相位穿越频率Wcg、幅值穿越频率Wcp。稳定系统要求Gm 1或 0 dBPm 0。实验四要求测量一阶惯性环节和典型二阶系统的频率特性。一阶惯性环节G(s) K/(Ts1)幅相频率特性曲线是半圆。从半圆直径r(0)得K从特性曲线上取一点ωk用T tgφ(ωk)/ωk求时间常数。这里的设计动机是频域分析不用解微分方程直接看开环频率特性就能判断闭环稳定性。对于高阶系统时域分析很麻烦频域分析更直观。4.3 频率特性测量从实验曲线反推传递函数实验四的实操部分是用实验方法测频率特性曲线再反推传递函数。步骤是给系统输入正弦信号改变频率测输出幅值和相位画幅频和相频曲线然后根据曲线形状判断环节类型求参数。一阶惯性环节的幅频曲线在低频段平坦高频段衰减相频曲线从 0 度到 -90 度。二阶系统开环频率特性有谐振峰谐振频率和峰值与ζ、ωn有关。工具仿真和实验测量对比能验证模型准确性。5. 避坑与排查模型转换、仿真参数、稳定性判断的常见翻车点5.1 现象状态空间转传递函数系数出现极小值原因浮点运算精度问题状态空间转传递函数时多项式乘法引入数值误差。解决忽略1e-15量级的系数或者用minreal()函数化简消除零极点对消后的极小系数。5.2 现象阶跃响应曲线和理论值对不上原因传递函数系数向量缺项没补零或者num、den顺序写反。解决检查den是否按降幂排列缺项补零。用printsys(num, den)打印传递函数确认显示正确。5.3 现象奈奎斯特判据判断结果和极点判断不一致原因奈奎斯特图只看了正频率部分包围圈数数错。解决用nyquist(G)画完整曲线或者用pole(feedback(G, 1))直接求闭环极点验证。5.4 现象Simulink 仿真报错提示代数环原因反馈回路里没有延迟或积分环节形成代数环。解决在反馈回路里加Memory模块或Unit Delay模块打破代数环。5.5 现象MWORKS 里tf()函数报错提示未定义原因没有加载TyControlSystems包。解决在脚本开头加using TyControlSystems确保包已安装并加载。6. 串联校正与 EF-Servo 集成从理论到工程的最后一公里实验五的系统串联校正和实验六的 EF-Servo 集成及滤波是把前面所有分析落到工程实践的关键。串联校正用频率法设计校正装置改变系统开环频率特性满足相位裕度和幅值裕度要求。EF-Servo 集成涉及实际伺服系统的建模、滤波和性能验证。6.1 串联校正超前、滞后、超前滞后串联校正分三种超前校正提高相位裕度加快响应滞后校正降低高频增益提高稳态精度超前滞后校正兼顾两者。设计步骤是根据稳态误差要求确定开环增益画未校正系统伯德图确定需要补偿的相位和幅值设计校正装置传递函数验证校正后系统的裕度。工具里用bode()画图margin()看裕度feedback()连校正装置。校正装置传递函数写成Gc(s) (aTs1)/(Ts1)形式参数a和T根据需要的相位裕度计算。6.2 EF-Servo 集成滤波与性能验证EF-Servo 集成部分涉及实际伺服系统的建模和滤波。滤波的目的是消除噪声但会引入相位滞后影响稳定性。设计时要权衡滤波效果和相位裕度。实验里用 MATLAB 建 Simulink 模型加滤波器观测阶跃响应和频域特性验证是否满足指标。这里的设计取舍是理论分析假设理想模型实际系统有噪声、延迟、非线性。EF-Servo 集成让你看到理论和工程的差距理解为什么仿真通过的系统实际跑起来可能振荡。6.3 从实验到工程模型精度与计算效率的平衡整套实验贯穿一个核心矛盾模型越精确计算越慢模型越简化误差越大。传递函数模型适合频域分析状态空间模型适合时域仿真Simulink 适合复杂系统。选择哪种模型取决于你要解决什么问题。我一般会这么理解实验一练的是模型转换基本功实验二练的是时域频域分析实验三练的是稳定性和参数影响实验四练的是频率特性测量实验五练的是校正设计实验六练的是工程集成。六个实验串起来就是控制系统分析的完整链路。从那以后我每次做仿真都强制走一遍先确认模型类型和系数再检查仿真参数最后用两种方法验证稳定性。希望帮到你。本文还有配套的精品资源点击获取