简介:这份资源是面向控制科学与工程方向高年级本科生、研究生及工程技术人员的自动控制原理实验文档,围绕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/((s+1)(s+2)(s+3))。零极点模型的价值在于,极点的位置直接决定系统稳定性——全部在左半平面才稳定。实验二里判断稳定性,用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.1s+1)(0.5s+1)),特征方程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 dB),Pm > 0。
实验四要求测量一阶惯性环节和典型二阶系统的频率特性。一阶惯性环节G(s) = K/(Ts+1),幅相频率特性曲线是半圆。从半圆直径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) = (aTs+1)/(Ts+1)形式,参数a和T根据需要的相位裕度计算。
6.2 EF-Servo 集成:滤波与性能验证
EF-Servo 集成部分涉及实际伺服系统的建模和滤波。滤波的目的是消除噪声,但会引入相位滞后,影响稳定性。设计时要权衡滤波效果和相位裕度。实验里用 MATLAB 建 Simulink 模型,加滤波器,观测阶跃响应和频域特性,验证是否满足指标。
这里的设计取舍是:理论分析假设理想模型,实际系统有噪声、延迟、非线性。EF-Servo 集成让你看到理论和工程的差距,理解为什么仿真通过的系统,实际跑起来可能振荡。
6.3 从实验到工程:模型精度与计算效率的平衡
整套实验贯穿一个核心矛盾:模型越精确,计算越慢;模型越简化,误差越大。传递函数模型适合频域分析,状态空间模型适合时域仿真,Simulink 适合复杂系统。选择哪种模型,取决于你要解决什么问题。
我一般会这么理解:实验一练的是模型转换基本功,实验二练的是时域频域分析,实验三练的是稳定性和参数影响,实验四练的是频率特性测量,实验五练的是校正设计,实验六练的是工程集成。六个实验串起来,就是控制系统分析的完整链路。
从那以后我每次做仿真,都强制走一遍:先确认模型类型和系数,再检查仿真参数,最后用两种方法验证稳定性。希望帮到你。
本文还有配套的精品资源,点击获取