简介:面向电子信息类与电气类学生的《自动控制原理实验报告》,围绕典型环节电路模拟、二阶系统阶跃响应、稳定性分析、根轨迹分析、频率特性与串联校正五个实验,提供从实验目的、原理线路到数据处理、思考题解答的完整记录。内容包含比例、惯性、积分、微分及比例+微分/积分等环节的传递函数、SIMULINK仿真模型与模拟电路图,并附预习要求、接线原则、实验报告书写规范;针对阶跃响应中的超调量、峰值时间、调节时间等指标也有对应分析思路,适合作为自动控制原理课程实验模板与数据分析参考。压缩包为1个doc文件,约1.28MB,便于直接查阅、修改和打印。目前已有4272人学习/下载,对正在完成控制类实验报告、需要对照仿真结果与波形特征的同学有较实用的借鉴价值。
1. 自动控制原理实验报告:期末最硬的交付物,到底在写什么
期末验收的时候,一份自动控制原理实验报告,往往比示波器上的波形更能说明“这门实验你做到什么程度”。自动控制原理是自动化、电气、机械、仪器类专业的核心课,实验报告则是这门课最硬核的交付物:实验原理、参数选取、数据记录、误差分析、结论判断,全都要落到这十几页纸上。搜这个标题的人,多半不是缺一个格式模板,而是想知道从实验台到成稿报告,这条路到底怎么走通——参数从哪来,波形怎么读,数据怎么跟理论值对账,偏差写到什么程度才算合理。这篇文章就是按这个顺序讲的,适合正在赶课程报告的学生、需要补实验经历的考研复试者,以及第一次带实验课的助教参考。
2. 报告的数据根基:二阶系统参数从哪来,指标怎么读出来
2.1 标准二阶系统:三个关键参数决定波形形状
自动控制原理实验里,出镜率最高的被控对象是标准二阶系统,传递函数写成:
G(s) = ωn² / (s² + 2ζωn·s + ωn²)这里只有两个参数:阻尼比 ζ 和自然频率 ωn。实验讲义里还会出现“时间常数 T”的说法,那对应一阶系统 K/(Ts+1),别混在一起。只要给出一组 ζ 和 ωn,系统的阶跃响应形状就完全定下来了:ζ 大于 1 是过阻尼,曲线慢慢爬上去没有超调;ζ 等于 1 是临界阻尼,刚好不超调;ζ 小于 1 是欠阻尼,会振荡几拍再稳住。实验里最常做的是欠阻尼那一组,因为超调、峰值时间、调节时间这些指标只有在振荡波形上才“看得出来”。
所以,写实验报告的第一步不是抄原理,而是先确认你这台实验台或仿真模型的 ζ 和 ωn 到底是多少。常见做法是:硬件实验台上通过调节电阻电容来改变阻尼,仿真实验则直接在传递函数里填数。我一般让学生把 ζ 从 0.1 到 0.7 至少取三组,这样报告里的对比曲线才有说服力。只做一组数据的报告,结果分析部分基本写不满一页,后期想凑字数只能硬撑。
2.2 时域指标:超调量、峰值时间、调节时间怎么算
时域指标是报告结果分析部分的主体。对应欠阻尼二阶系统,四个公式是实验报告的高频公式:
- 超调量 σ% = e^(−πζ/√(1−ζ²)) × 100%
- 峰值时间 tp = π / (ωn√(1−ζ²))
- 上升时间 tr = (π − arccos ζ) / (ωn√(1−ζ²))
- 调节时间 ts ≈ 4 / (ζωn),对应 2% 误差带;若按 5% 误差带则是 ts ≈ 3 / (ζωn)
很多同学栽在这里:实验讲义写的是 5% 误差带,MATLAB 的 stepinfo 默认输出 2% 误差带,两者差一截,如果报告里混着写,老师一眼就能看出来。建议在报告里先写清楚“本报告调节时间均按 5% 误差带读取”,然后所有数据统一按这个标准来。可以列一个这样的表,把理论值和实测值并排放:
| 阻尼比 ζ | 理论超调量 | 实测超调量 | 理论调节时间 ts(5%) | 实测调节时间 ts(5%) |
|---|---|---|---|---|
| 0.2 | 52.7% | 50.1% | 3.0 s | 3.2 s |
| 0.4 | 25.4% | 26.8% | 1.5 s | 1.6 s |
| 0.6 | 9.5% | 12.3% | 1.0 s | 1.1 s |
表里第三行偏差稍大,这恰恰是结果分析部分的好素材:阻尼增大后系统响应加快,但摩擦和驱动滞环的影响占比也变大,导致实际超调比理论偏高。能写出这一句,比泛泛的“基本符合理论”有用得多。
2.3 频域指标:从 Bode 图上读出稳定裕度
实验里如果包含频域内容,核心是 Bode 图和稳定裕度。相位裕度 γ 的定义是:在幅值穿越频率 ωc 处,相位曲线距离 −180° 还有多少度。工程上一般要求 γ 在 30° 到 60° 之间,这个经验值在很多控制系统设计的课后题里也反复出现。
具体操作时,通过 bode 命令得到幅频和相频两条曲线,读取幅值为 0 dB 对应的频率作为 ωc,再在这个频率上找相位值 φ,相位裕度就是 γ = 180° + φ。注意 φ 是负的,所以算出来是 180° 减去某个角度。幅值裕度同理,找相位到达 −180° 的频率对应的幅值,取负就是幅值裕度,通常要求大于 6 dB。
报告里写频域部分时,我建议把 Bode 图、相位裕度数值、你手动从图上读出的数值三者放在一起,互相验证。很多人只贴一张 margin 命令自动生成的图,然后抄一句“系统稳定”,这等于把整段分析的思考过程跳过了,评阅老师想给分都找不到给分点。至少写一句“相位裕度 45°,满足工程要求,且有 15° 左右的余量”,这句话才体现了你读懂了图。
3. 用 MATLAB 拿到第一手实验数据:三条最常用的路径
3.1 先跑通阶跃响应:step 函数与 stepinfo 提取指标
MATLAB 是完成这类试验最顺手的工具。第一次跑二阶系统阶跃响应,我建议把下面的脚本按原样敲一遍,理解每行的作用之后再改参数。
% 二阶系统参数 wn = 5; % 自然频率,单位 rad/s zeta = 0.4; % 阻尼比,欠阻尼区间建议取 0.1~0.7 % 建立标准二阶系统传递函数 sys = tf([wn^2], [1, 2*zeta*wn, wn^2]); % 定义时间向量,终点要能覆盖整个过渡过程 t = 0:0.01:3; % 计算单位阶跃响应 y = step(sys, t); % 绘制曲线 plot(t, y, 'b-', 'LineWidth', 1.5); grid on; xlabel('时间 t (s)'); ylabel('输出 y(t)'); title(['二阶系统阶跃响应, \zeta=', num2str(zeta)]);这段代码里,tf 的分子写成 [wn^2],分母写成 [1, 2zetawn, wn^2],正好对应标准二阶系统的特征多项式。时间向量从 0 到 3,是因为当 ωn = 5、ζ = 0.4 时,调节时间大约在 3/(ζωn) = 1.5 秒,取 3 秒能完整看到波形进入稳态,还留了余量。如果你改小 ωn,比如 ωn = 2,那时间终点至少要拉到 8 秒以上,否则曲线没走完,后面读 ts 会读出一个偏小的值。
跑完波形之后,要自动提取性能指标,用 stepinfo:
% 提取阶跃响应指标 info = stepinfo(sys); % 显示结果 fprintf('上升时间 tr = %.3f s\n', info.RiseTime); fprintf('峰值时间 tp = %.3f s\n', info.PeakTime); fprintf('超调量 sigma = %.2f%%\n', info.Overshoot); fprintf('调节时间 ts(2%%) = %.3f s\n', info.SettlingTime);这里有个必须注意的边界:stepinfo 的 SettlingTime 默认按 2% 误差带定义,而很多实验讲义用 5% 误差带。如果报告要求 5%,直接抄 stepinfo 的结果就错了。可以用下面这段手动算 5% 误差带的时间:
% 手动计算 5% 误差带的调节时间 yf = y(end); % 取最后一点的输出作为稳态值 idx = find(abs(y - yf) > 0.05 * yf, 1, 'last'); ts5 = t(idx); fprintf('调节时间 ts(5%%) = %.3f s\n', ts5);这段代码的思路是:从后往前找第一个穿出 5% 误差带的点,那个点对应的时间就是调节时间。注意稳态值不要用理论值 1,要用 y(end),因为仿真输出的稳态值可能因为数值计算偏差少量偏离 1,用理论值会导致误判。
3.2 Simulink 搭一个可视化实验台,顺带把数据导出来
有些实验老师要求用 Simulink 搭框图,目的不是让你拖模块玩,而是让你直观看到“阶跃信号进传递函数,示波器出波形”这个真实物理链路。搭建步骤不复杂:
- 打开 Simulink,新建空白模型;
- 从 Simulink/Sources 里拖出 Step 模块;
- 从 Simulink/Continuous 里拖出 Transfer Fcn 模块;
- 从 Simulink/Sinks 里拖出 Scope 和 To Workspace 模块;
- 按 Step → Transfer Fcn → Scope / To Workspace 的顺序连线。
模块参数按这样设:Step 模块的 Step Time 必须改成 0,因为默认值是 1,如果不改,前 1 秒输入是 0,波形会多出一段零平面,容易让第一次做实验的人误以为系统有纯滞后;Transfer Fcn 的分子填 [25],分母填 [1 4 25]——对应 ωn = 5、ζ = 0.4;To Workspace 的 Variable Name 填 y,Save Format 选 Array,这样数据会以数组形式输出到工作区。
连线完成后,用命令行来跑模型,比反复点界面上的运行按钮更可控:
% 命令行运行 Simulink 模型,模型名换成你的模型文件名 simOut = sim('second_order_exp', 'StopTime', '5'); % 从 simOut 中提取数据和仿真时间 y = simOut.get('y'); t = simOut.get('tout'); % 对照检查数据点数 fprintf('数据点数: %d, 时间范围: %.2f ~ %.2f s\n', length(y), t(1), t(end));这段代码的作用是把仿真结果从 Simulink 的“黑匣子”里抓到 MATLAB 工作区,之后你就可以用同样的 plot、stepinfo、手工读值来处理这些数据。注意 sim 的第二个参数 'StopTime' 是字符串,别写成数字,否则会报参数格式错误。还要留意 To Workspace 模块的采样时间设置:如果用默认的 inherited,仿真中可变步长求解器会让时间点不均匀,画图没问题,但做数值判断时最好先统一插值到固定步长,避免个别点读取偏差。
3.3 频域实验:bode、margin、nyquist 三条命令的配合
时域实验做完,频域实验是另一条必走路径。用一个带积分环节的三阶系统作为例子:G(s) = 40 / (s·(s+2)·(s+5))。这个系统开环增益 40,中频段斜率 −20 dB/dec,相位会逐渐靠近 −180°,适合演示稳定裕度的判读。
% 建立连续时间传递函数 s = tf('s'); G = 40 / (s * (s + 2) * (s + 5)); % 画 Bode 图并标注稳定裕度 figure(1); margin(G); grid on; % 从数值上提取裕度参数 [Gm, Pm, Wcg, Wcp] = margin(G); fprintf('幅值裕度 Gm = %.2f dB\n', 20*log10(Gm)); fprintf('相位裕度 Pm = %.2f deg\n', Pm); fprintf('相位穿越频率 Wcg = %.3f rad/s\n', Wcg); fprintf('幅值穿越频率 Wcp = %.3f rad/s\n', Wcp);一个高频踩坑点:margin 函数输出的 Gm 是线性比值,不是分贝值。如果直接打印“Gm = 2.0”然后跟教材上的“幅值裕度 6 dB”对比,数字对不上就以为算错了。正确操作是用 20*log10(Gm) 转成分贝。Wcg 和 Wcp 是两个不同的频率:前者是相位达到 −180° 的频率,后者是幅值降到 0 dB 的频率,写报告时要把两者在图上标出来,别混着写。
需要画奈奎斯特图的时候,用 nyquist(G) 直接出图,重点观察曲线是否绕过 (−1, 0) 点。绕过去就是闭环稳定,不绕就是不稳定。这条判据和 Bode 图稳定裕度判据结论必须一致,如果出现矛盾,优先怀疑开环传递函数分子分母写反了。
4. 报告正文怎么组织:从实验目的到数据表到偏差结论
4.1 报告结构:八个模块和各模块的“硬性内容”
一份能拿到高分的自动控制原理实验报告,模块顺序基本是固定的:封面、实验目的、实验原理、实验内容与步骤、数据记录、结果分析、思考题、实验结论。这八个模块不是装饰,每个模块都有要承担的“硬性内容”:
| 报告模块 | 必含内容 | 常见问题 |
|---|---|---|
| 封面 | 课程名称、实验名称、姓名学号、日期、同组人 | 缺同组人信息 |
| 实验目的 | 3~5 条动词开头的目标:“掌握…”“验证…”“学会…” | 写成长篇大论 |
| 实验原理 | 传递函数、框图、公式推导、指标定义 | 直接抄课本,不结合本次参数 |
| 实验内容与步骤 | 改了哪些参数、接了什么电路、跑了几组数据 | 只写“按讲义操作” |
| 数据记录 | 原始数据表、波形截图、仿真数据文件编号 | 只有截图没有数据文件 |
| 结果分析 | 理论值与实测值对比、偏差原因分析 | 只贴图表不解释 |
| 思考题 | 用自己的数据重新计算、给出判断 | 照抄教材原话 |
| 实验结论 | 1~2 句话,逐条回应实验目的 | 把结论写成心得体会 |
写实验目的有个容易被忽略的技巧:它必须和后面的结论形成首尾呼应。目的里写“验证阻尼比对超调量的影响”,结论里就必须有一句“随着阻尼比从 0.2 增大到 0.6,超调量从 52% 下降到 12%,验证了理论关系”。老师评阅时就是按这个闭环关系打分的。
4.2 数据记录怎么排版:原始记录、计算表、波形截图三件套
数据记录是报告里最容易做得“看起来很不专业”的部分。我的建议是每一组实验都保留三样东西:原始记录表、计算表、波形截图。原始记录表记录直接从仪器或软件读出的数,比如峰值 y_p、稳态值 y_∞、峰值时间 tp;计算表放根据原始记录算出来的超调量、调节时间;波形截图作为可视化证据放在表格下方。
截图的处理有讲究:不要用手机拍屏幕,也不要把 Scope 窗口直接截图就完事。正确做法是把数据导到 MATLAB 工作区后用 plot 重画,x 轴加“时间 t (s)”、y 轴加“输出 y(t)”、标题写清参数。这样出来的图分辨率高、坐标轴清晰,老师在电脑上放大也看得清。多组不同 ζ 的波形建议画在同一张图里,用 legend 区分,比一组一张图占地方更少,对比也更直观。
数据表里每个数字都要注明单位。超调量是百分比,时间单位是秒,频率单位是 rad/s。有效数字也要统一:仿真数据保留三位小数,实测数据保留两位。不要出现同一列里有的写 0.25、有的写 0.253 这种情况,评阅老师看到这种不一致的表格会直接认定为“数据拼凑”。
4.3 结果分析怎么写:不要复述过程,要回答“偏差哪来的”
结果分析是整个报告的得分核心,但很多同学把它写成了实验步骤的复述,比如“把 ζ 调到 0.4,得到如下曲线”,这句话没有任何分析含量。我常用一个框架来指导学生写这部分,分三段走:
第一段,纵向比较:每组参数下理论值和实测值是否一致,偏差百分之几。用数字说话,比如“ζ=0.4 时理论超调量 25.4%,实测 26.8%,偏差 1.4 个百分点,在允许范围内”。第二段,横向比较:阻尼比增大后,超调量怎么变、调节时间怎么变,结论是否和理论趋势一致。第三段,解释主要误差来源:硬件实验谈摩擦、驱动饱和、测量读数误差;仿真实验谈求解器步长、稳态值取点、2% 与 5% 误差带的差异。三段加起来 300 到 500 字,报告这一章就立住了。
一个提醒:偏差能解释到 5% 以内属于优秀,解释到 10% 以内属于正常,超过 10% 就要反思是不是参数填错了。硬把 30% 的偏差写成“基本一致”,老师看得出来的,而且会怀疑前面所有数据。
5. 写自动控制原理实验报告最容易翻车的 5 个地方:现象、原因与对策
5.1 理论超调 37%,实测只有 28%,直接说“符合理论”
现象:ζ = 0.3 时理论超调量 37.2%,实测波形只有 28%,报告里写“基本符合理论”。原因:硬件实验台里运放输出饱和、电机死区、摩擦转矩都会把超调的峰值“削掉”一块;仿真实验则可能是阶跃信号幅值不是 1,比如 Step 模块幅值设成了 0.8,输出自然达不到理论的稳态值。解决:第一步先确认输入信号幅值,Step 模块幅值严格设为 1;第二步接下来说清楚非线性因素。偏差超过 10% 就不要硬说“符合”,要么重做,要么在报告里如实分析,减分也比你造假被发现强得多。
5.2 截图当数据用,关掉 MATLAB 之后什么证据都没有
现象:报告里全是 Scope 截图,老师要原始数据时你拿不出来;或者重新打开 MATLAB 后变量被清空,想补一个数据只能重新跑仿真。原因:Scope 截图是“图像”,不是“数据”,图像里无法读出精确的峰值和时间。解决:运行 Simulink 前先放一个 To Workspace 模块,仿真结束后用 simOut.get('y') 把数据拉回工作区,然后立刻存成 .mat 或 .csv 文件。我在做实验时会把数据文件命名为 “exp1_zeta0.4.csv”,存进实验报告同名的文件夹里,这样即使过了两个月要补写分析,数据也还在。
5.3 margin 输出的幅值裕度和自己读图对不上
现象:margin(G) 显示幅值裕度 6 dB,你从 Bode 图上手动读出来却只有 3 dB,两者对不上。原因:幅度裕度读图时找错了频率——应该找相位第一次到达 −180° 的那个频率,再在那个频率上读幅值;许多人直接在幅值曲线最低处读,那对应的是高频段,不是稳定裕度定义里的位置。解决:先用 margin 命令得到的 Wcg 数值,在 bode 图上用 cursor 定位到该频率,再读幅值。另外,如果图形上幅值曲线降到 −180° 相位对应处有多条交点,取第一次穿越的频率。
5.4 仿真时间太短,把还没进入稳态的曲线当调节时间
现象:ζ = 0.2、ωn = 2 时系统调节时间理论值约 3/(0.2×2) = 7.5 秒,但仿真只跑 3 秒,画的曲线尾部还在缓慢爬升,读取的调节时间只有 2 秒,明显小于理论值。原因:仿真结束时间设置远小于系统时间常数;或者求解器最大步长太大,导致曲线末段失真。解决:仿真结束时间至少要取理论调节时间的 3 到 5 倍,ωn 越小结束时间越长。固定步长求解器建议设为 1e-3 秒左右,既能保证精度又不太慢。写报告时可以先按理论算出预估调节时间,再把仿真时间轴拉到足够长,这是最稳妥的顺序。
5.5 思考题直接抄教材原话,和自己的实验数据毫无关联
现象:报告里的思考题答案是“增大阻尼比可以减小超调量,但会使响应变慢”,全文没有出现一个自己的实验数字。原因:想省事,以为思考题参考答案就可以;实际上评阅老师安排思考题的目的就是要看你把原理用到自己的数据上。解决:把教材公式里的参数换成自己实验用的 ζ 和 ωn,重算一遍,再和自己的实测表对照。比如问“说明阻尼比对超调量和调节时间的影响”,我会这样回答:“本次实验 ζ=0.2 时超调量 52.7%,调节时间 3.0 s;ζ=0.6 时超调量 9.5%,调节时间 1.0 s。可见增大阻尼在降低超调的同时以牺牲快速性为代价,与理论一致。”一句话包含了数据、对比、结论,比抄一百字教材都管用。
6. 提交前最后一遍自检:用交叉验证给数据兜底
6.1 交叉验证:仿真、理论计算、实测三条独立路径互相对账
如果你用的是仿真实验,收尾前做一个很便宜的验证:用 MATLAB 脚本把同一组参数的理论超调量算一遍,再和 stepinfo 提取的实测超调量比较,如果两者差超过 2 个百分点,说明要么参数填错,要么稳态值取错。这个小步骤能拦截掉大约三成报告的“惨案”。硬件实验的话,至少要把示波器读出的峰值时间和理论计算值放在一起看,数量级不对就要回头检查电路接线或激励信号参数。
交叉验证的实现也很简单。理论超调量用一行公式就够:
zeta = 0.4; sigma_theory = exp(-pi * zeta / sqrt(1 - zeta^2)) * 100; fprintf('理论超调量: %.2f%%\n', sigma_theory);然后把它和 stepinfo 的 Overshoot 字段比较。如果做的是频率特性实验,就用 margin 读出的相位裕度和 Bode 图上手动读的值对比,两者应在误差范围内。三条路径里至少两条一致,这份报告才敢说数据可靠。
6.2 提交前的自检清单
| 检查项 | 通过标准 |
|---|---|
| 数据来源 | 每组实验都能找到对应的 .mat/.csv 文件和绘图脚本 |
| 坐标轴标注 | 每张图都有物理量、单位、图例、标题 |
| 有效数字 | 同一列数据小数位统一 |
| 偏差处理 | 理论值与实测偏差超过 10% 的部分有明确原因分析 |
| 模块完整性 | 八个模块齐全,结论逐条回应实验目的 |
| 思考题验证 | 思考题用自己实验中的数据重算过 |
我自己的习惯是:写完报告不急着交,把仿真脚本从头到尾重新跑一遍,看输出的波形、数据表格和报告里的截图能不能对上。这个习惯救过我很多次——有一次就是参数里少写了一个 0,曲线形状完全不对,但报告里的截图是旧版本,幸好重跑时发现了。先验证,后提交,顺序别反。希望帮到你。
本文还有配套的精品资源,点击获取