
“带宽多少”做控制或者信号处理的同行应该都有体会这问题在工程现场几乎天天被问。做伺服驱动的要报电流环带宽、速度环带宽做传感器的要报-3dB截止频率做滤波器的更绕不开通带阻带的边界。一句话回答可能很简单但真要在波特图上把“带宽”这个点抠出来、解释清楚很多二阶系统的细节就会冒出来——同样标称自然频率ωn的系统阻尼比ζ不同带宽能差出两倍还多频响曲线形状也完全不同。这篇内容就把二阶系统的带宽从频域角度彻底拆一遍带宽公式怎么推、阻尼比怎么影响带宽、工程上怎么根据指标定带宽再附上我调试时最常用的一组MATLAB验证脚本。适合正在啃自动控制原理和信号与系统的学生也适合刚接触频域设计、想把理论落到实际参数上的工程师内容不绕弯子能直接用。1. 先把带宽这事说清楚从-3dB到物理直觉1.1 为什么是-3dB不是-1dB或-6dB带宽最经典的定义是幅频特性从直流增益处下降到0.707倍时对应的频率也就是比低频段低3dB的位置。这里有两个点容易让人困惑第一为什么偏偏选0.707这个看起来奇怪的数第二这首歌在工程上到底意味着什么。0.707这个数字其实是功率比的对数结果。-3dB对应的是功率衰减到一半。电压或电流幅度衰减为原来的1/√2时功率正好变成原来的一半。人耳对音量变化的感知也接近对数关系3dB是个让人能明确感知却又不会觉得“突然失声”的界限。对测量系统来说-3dB以内的信号被认为是“有效通过”的超过这个点的信号幅度已经在快速衰减信息开始失真。这就是为什么传感器、示波器探头、音频设备、控制回路指标统统用-3dB来划界。另一个数学上的原因是-3dB点在幅频曲线上往往和系统的极点位置、阻尼比有非常简洁的解析关系。对一阶系统带宽就是极点频率本身也就是1/τ工程上还约等于转折频率对二阶系统带宽公式里会出现阻尼比的组合项。如果选-1dB或-6dB这些公式就变得别扭还得写个只对应特定衰减量的系数用起来难受得多。1.2 带宽到底在衡量什么先抛开公式带宽这个指标最直接的物理含义是系统“跟得上”多快的输入变化。一个低通特性的系统输入一个固定频率的正弦信号输出幅度会随频率升高而衰减。带宽低说明系统只能平滑地跟随缓慢变化对快速变化的输入响应迟钝带宽高说明系统能应对更快的输入变化但代价是高频噪声也随之放进来。控制工程里常说“带宽是速度和噪声之间的天平”这句话一点不夸张。用弹簧阻尼系统来类比把弹簧一端固定另一端接一个质量块你缓慢地上下移动弹簧固定端质量块当然跟着走但你一旦快速抖动弹簧端质量块就开始跟不上幅度变小相位也滞后。这个“跟不上”的转折点正是由系统的固有频率和阻尼决定的也就是二阶系统带宽的物理源头。后面所有公式都是在对这个“跟不上”的过程做定量描述。2. 二阶系统的频域模型两个参数决定一切2.1 标准传递函数与ωn、ζ的物理含义二阶系统最经典的标准形式是H(s) ωn² / (s² 2ζωn s ωn²)这个式子里的两个参数ωn和ζ就是整个频域分析的核心。很多教材直接把ωn叫“自然频率”或“无阻尼振荡频率”把ζ叫“阻尼比”。对机械系统来说ωn就是去掉所有阻尼以后系统自己来回摆动的角频率ζ则是衡量这个摆动衰减快慢的指标ζ越小振荡衰减越慢阶跃响应越容易过冲。从极点位置看更直观。系统的极点是s -ζωn ± jωn√(1-ζ²)这句话用生活语言说极点在复平面里的位置同时取决于ωn和ζ。ωn决定极点离原点的距离也就是系统响应的整体快慢ζ决定极点离实轴的夹角度数也就是系统衰减振荡的剧烈程度。ζ接近0时极点几乎在虚轴上系统接近持续振荡ζ1时两个极点重合在实轴上系统不振荡但响应变慢。所以做频域分析时第一个习惯就是把ωn和ζ这两个值先在脑子里摆出来再预测幅频曲线长什么样。我对刚入门的工程师一直强调别急着用软件点仿真先训练自己看着这两个参数就能画出大致的波特图形状这是把频域理论变成直觉的第一步。2.2 从传递函数到幅频特性曲线把s换成jω代入标准传递函数就能得到频率响应H(jω) ωn² / (ωn² - ω² j2ζωnω)幅值取模得到|H(jω)| ωn² / √[(ωn² - ω²)² (2ζωnω)²]这里有个细节值得注意系统的直流增益也就是ω0时的幅值正好等于1。这说明标准二阶系统对低频信号是“一比一”通过既不放大也不衰减。基于这个前提带宽处的幅值就等于1/√2。如果实际系统的分子不是ωn²而是一个常数K那直流增益不再是1带宽的定义就要改成幅值降到K的0.707倍对应的频率。所以拿到一个传递函数先归一化再分析能省很多事。归一化的方法很简单把常数因子整体提出来剩下一个分母为标准形式的二阶项然后在归一化模型上讨论带宽最后再把常数增益乘回去。不同ζ下的幅频曲线形状差异非常明显。ζ越小曲线在ωn附近凸起得越高这个凸起叫谐振峰。出现谐振峰的条件是ζ1/√2也就是大约小于0.707。谐振峰的高度和位置都有公式后面会展开。ζ≥1/√2时曲线单调下降不会出现局部最大值。3. 带宽公式的完整推导与三类阻尼行为3.1 从-3dB定义到带宽公式带宽的数学定义式是|H(jωb)| 1/√2把幅频表达式代入设x ωb/ωn则有1/√2 1 / √[(1-x²)² (2ζx)²]两边平方后整理(1-x²)² 4ζ²x² 2展开得到x⁴ (4ζ²-2)x² - 1 0这是一个关于x²的一元二次方程。令ux²解出来是u 1 - 2ζ² √(4ζ⁴ - 4ζ² 2)把另一支根舍掉因为它是负值没有物理意义。所以最终带宽公式是ωb ωn√(1 - 2ζ² √(4ζ⁴ - 4ζ² 2))这个公式就是今天整篇内容的地基。它告诉你只要知道ωn和ζ带宽直接就能算出来。反过来如果实测出系统的带宽和谐振峰也能反推ωn和ζ这个用法在后面的实操部分会讲。3.2 欠阻尼、临界、过阻尼ζ如何改变带宽公式写出来之后最值得做的事就是把不同ζ代进去看看带宽随ζ的变化规律。先看ζ1/√2这个特殊值也就是约0.707。代入公式1-2ζ²0根号里变成√(2-2)0这里要算仔细一点4ζ⁴-4ζ²2 1-221开根号得1所以总结果是√(01)1ωbωn。这是一个非常漂亮的分界点阻尼比恰好为0.707时带宽正好等于自然频率。再看ζ特别小的情况比如ζ0.1。代入公式1-2×0.010.98根号里是0.0004-0.0421.9604开根号约为1.400两项加和是2.380再开根号约为1.543。也就是说轻阻尼系统的带宽可以达到自然频率的1.5倍以上。原因在于谐振峰把-3dB交叉点推向了更高频处——曲线先抬头再下降自然要等到更晚才会跌穿-3dB线。再看ζ特别大的情况比如ζ1。这是临界阻尼代入公式1-2-1根号里是4-422开根号约1.414两项相加0.414再开根号约0.643。过阻尼系统的带宽明显低于ωn因为阻尼大高频段衰减得更早。这三个点连起来看就明白了一个工程结论同样的自然频率阻尼比越小带宽越高。这冲击了很多人的第一直觉——他们以为带宽只由“固有频率”决定跟阻尼无关。实际上只要系统是欠阻尼的谐振峰就会实实在在地把带宽往高处推。3.3 一张表看全部规律把常用阻尼比对应的关键指标都算出来做成一张表工程上直接查ζωr/ωn谐振频率谐振峰Mr(dB)ωb/ωn带宽比阶跃超调量0.10.9914.01.5472.9%0.30.914.851.4537.2%0.50.711.251.2716.3%0.707001.004.3%1.0——0.6402.0——0.270谐振频率ωr和峰值Mr的公式顺便给一下ωrωn√(1-2ζ²)Mr1/(2ζ√(1-ζ²))。这两个式子只在ζ1/√2时成立因为ζ超过0.707后曲线没有凸起也就不存在谐振峰。表里谐振频率那栏ζ0.707时ωr0意思可以理解为凸起点已经压平不再有峰了。这张表在实际调试中非常有用。比如说你测到一个系统的谐振峰是5dB左右查表就知道阻尼比大概在0.3附近如果阶跃响应超调量在16%左右阻尼比也基本锁定在0.5。三四个指标一交叉验证系统的两个核心参数基本就摸清楚了。4. 带宽与时域性能的换算工程选型的关键4.1 上升时间与带宽的工程经验公式频域指标和时域指标之间有一条著名的经验关系系统上升时间约等于0.35除以带宽。用公式写tr ≈ 0.35 / f_bw其中tr是上升时间秒f_bw是带宽Hz。这个公式最早来自一阶系统但对阻尼比在0.4~0.8之间的二阶系统也能给出不错的近似误差通常在10%以内。对ζ0.707的二阶系统更精确的系数大约是0.34对ζ0.5的系统大约是0.36。工程估算完全够用。举个例子。假设你设计一个位置伺服回路驱动器要求从给定到到位的时间大约是50ms这里“到位”粗略看成上升时间。套公式f_bw≈0.35/0.057Hz换成角频率就是ωb≈44 rad/s。如果想要系统更快比如20ms上升时间带宽就要推到17.5Hz角频率约110 rad/s。这个换算快得惊人开会讨论指标时掏出手机按两下就能估算非常实用。反过来如果你拿到一个现成系统想知道它的上升时间大概多少看一眼带宽就能心算出来。我习惯先把ωb除以2π换成Hz再套0.35的系数整个过程用不了半分钟。这个能力在测别人给的传递函数、快速判断系统能力时特别重要。4.2 选带宽要权衡的三件小事带宽不是越高越好这是实战中最容易踩的坑。第一个代价是噪声。带宽越高高频噪声通过得越多。传感器信号调理电路如果带宽开太宽出来全是毛刺后级ADC都没法采样伺服系统速度环带宽开太高编码器量化噪声直接被放大成电机电流抖动。信号有效频率成分和噪声混在一起时选带宽其实是选信噪比。第二个代价是机械谐振。机械系统几乎都有柔性模态这类模态通常表现为频响曲线上40Hz、80Hz之类位置的尖峰。如果控制回路带宽推到机械谐振频率附近系统很容易在那些频率点产生振荡甚至啸叫。工程经验是控制带宽最多取机械谐振频率的1/3~1/5。低于这个比例谐振模态基本被衰减掉超过这个比例就要专门加陷波滤波器去压谐振设计复杂度立刻上来。第三个代价是数字采样的限制。数字控制器的采样频率决定了系统带宽的上限一般要求控制带宽低于采样频率的1/10~1/20。原因是离散化之后相位滞后会随频率上升而急剧增加带宽太高时数字延迟导致的相位裕度损失会让系统失稳。所以设计数字控制回路时先定采样率再反推能实现的带宽上限这个顺序不能反。4.3 一个完整的带宽设计流程把上面这些串起来我在实际项目里的设计流程大概是这样的先明确时域要求比如上升时间、调节时间用0.35/带宽估算出理论带宽需求再检查机械谐振频率确认带宽不超过谐振频率的1/3然后确认数字采样率足够支撑这个带宽最后根据系统的阻尼比水平用带宽公式反推需要的ωn把自然频率定下来。假设一个具体场景电机转速环要求上升时间30ms机械谐振点大约60Hz。估算带宽≈0.35/0.03≈11.7Hz。取1/3谐振频率上限是20Hz11.7Hz没问题。采样率如果是1kHz带宽上限约为50Hz也没有限制。那么控制回路带宽目标就定在12Hz左右角频率约75rad/s。如果希望系统阻尼比0.7那自然频率就大致等于带宽也是75rad/s。整套设计逻辑非常清晰。5. MATLAB实操把带宽曲线调出来逐个看5.1 仿真脚本与自动标注-3dB点理论讲再多还是得亲眼看到曲线变化才有感觉。分享一段我经常用的MATLAB脚本它能把不同阻尼比下的幅频曲线画在一张图上并且自动标出每个系统的-3dB带宽点。wn 10; % 自然频率单位 rad/s zeta_list [0.1, 0.3, 0.5, 0.707, 1.0]; figure(Color, w, Position, [100 100 800 500]); hold on; grid on; for z zeta_list sys tf(wn^2, [1, 2*z*wn, wn^2]); [mag, ~, w] bode(sys, {0.1, 100}); mag squeeze(mag); w squeeze(w); semilogx(w, 20*log10(mag), LineWidth, 1.8, ... DisplayName, sprintf(\zeta%.3f, z)); % 找第一次穿过 -3dB 的点 idx find(mag 1/sqrt(2), 1, first); if ~isempty(idx) wb w(idx); plot(wb, -3, o, MarkerSize, 8, ... MarkerFaceColor, r, MarkerEdgeColor, k); text(wb, -3.8, sprintf(%.2f rad/s, wb), ... HorizontalAlignment, center, FontSize, 9); end end yline(-3, k--, -3dB, LabelHorizontalAlignment, left); set(gca, XScale, log, XLim, [0.1 100], YLim, [-40 20]); xlabel(Frequency (rad/s)); ylabel(Magnitude (dB)); legend(Location, southwest); title(二阶系统不同阻尼比下的幅频响应与-3dB带宽);这段脚本的要点有这么几个。bode函数返回的w是频率向量mag是幅值向量用squeeze去掉多余维度是因为bode对单输入单输出系统返回的是三维数组。寻找-3dB点用find(mag 1/sqrt(2), 1, first)取第一个小于0.707的点这个“第一次”很关键后面会讲为什么。如果想把带宽算成数值再打印出来可以单独封装一个函数function wb second_order_bandwidth(wn, zeta) % 二阶系统 -3dB 带宽输入自然频率和阻尼比输出带宽(rad/s) wb wn * sqrt(1 - 2*zeta^2 sqrt(4*zeta^4 - 4*zeta^2 2)); end这个函数只有一行核心计算却省了我大量重复查表的功夫。比如我调一个阻尼比0.5、自然频率1000rad/s的滤波器直接在命令行敲second_order_bandwidth(1000, 0.5)立刻得到1270rad/s对应202Hz方便得很。5.2 结果解读与参数扫描的规律把脚本跑完能看到几个非常直观的现象。第一阻尼比越小曲线在ωn10rad/s附近凸得越高0.1阻尼比时谐振峰接近14dB曲线像针一样尖。第二曲线的下降段在过了谐振峰之后几乎贴在一起不同阻尼比的衰减趋势差别不大。第三-3dB点明显随ζ减小右移ζ1时带宽约6.4rad/sζ0.707时正好10rad/sζ0.3时到了14.5rad/s左右ζ0.1时跑到了15.4rad/s附近。这个扫描结果如果配合时域阶跃响应一起看会有更深的体会。ζ0.1的系统带宽看着挺宽但阶跃响应会来回振荡将近一二十个周期才稳定超调量超过70%。也就是说单看带宽会误以为这是个快速系统实际上它是个“又吵又慢”的衰减振荡器。每次给学生讲这里我都会强调带宽只是频率域的一个统计数字它不能代表完整的动态品质一定要结合阻尼比一起评估。参数扫描还能发现一个细节频率轴取对数之后曲线下降端的斜率基本固定为-40dB/dec这就是二阶系统的高频渐近线特性。不管ζ取多少高频段都以每十倍频程40dB的速度衰减。利用这个特点实际测试时如果看到波特图高频段斜率是-40dB/dec基本能判断系统至少是二阶的。5.3 顺手学一招从实测频响反算ζ很多时候我们拿不到系统的传递函数只能测到一组频响数据。这时候可以从谐振峰高度反推阻尼比。步骤是先用扫频仪或信号发生器加示波器测出幅频曲线找到峰值点读出峰值幅度Mr_dB和对应频率ωr然后代入公式反解ζ。Me公式是Mr 1/(2ζ√(1-ζ²))。把这个公式变形成关于ζ的方程可以用MATLAB的fzero数值求解Mr_dB 5; % 实测谐振峰值单位 dB Mr_lin 10^(Mr_dB/20); % 转换为线性幅值 fun (z) 1/(2*z*sqrt(1-z^2)) - Mr_lin; zeta_est fzero(fun, [0.01, 0.7]);举个例子测到谐振峰值5dB换算线性幅值1.778反解出ζ约0.3。再用带宽点的位置反推ωn既然ζ已知带宽公式里的根号部分就能算出具体数值然后用实测带宽除以这个数值就得到ωn。这个方法在设备故障诊断里很常用电机、齿轮箱、精密平台的频响测试都靠它提取等效二阶参数。6. 高频踩坑记录带宽用错的最常见情况6.1 公式算出来对不上波特图的3个原因我见过好多人拿着带宽公式算完回去对照波特图发现数值对不上第一反应是公式记错了。其实大部分时候是下面三个原因之一。第一个原因是单位混用。公式里的ωn和ωb单位都是rad/s如果你在波特图上看的是Hz坐标必须把ωb除以2π。比如说ωn100rad/sζ0.5带宽约127rad/s换成Hz约20.2Hz。忘了除以2π数值直接差6.28倍对得上才怪。第二个原因是直流增益不是1。标准二阶系统的分子是ωn²直流增益正好是1。但实际传递函数经常带一个常数增益K比如H(s)1000/(s²2ζωn sωn²)直流增益就是1000/ωn²不一定等于1。带宽定义必须用“下降到峰值或直流值的0.707”不能直接拿1/√2去比。归一化之后再算结果才一致。第三个原因是自动找点找错了。前面MATLAB脚本里我说要找“第一次”穿过-3dB的点。阻尼比很小的时候谐振峰高出-3dB一大截曲线会在上升段先穿一次-3dB然后穿过峰顶在下降段再穿一次-3dB。如果代码里用了find(mag 0.707)但没有限制方向可能找到的是上升段那个点带宽自然错得离谱。正确的物理定义是穿越后保持衰减的那个点所以必须取“第一次”从上方跌穿-3dB的位置。6.2 开环带宽、闭环带宽、截止频率别混着用控制工程里还有一组特别容易混淆的概念开环穿越频率、闭环带宽和开环截止频率。闭环带宽是系统从参考输入到输出的闭环频率响应上-3dB对应的频率这是用户感知到的系统能工作的频率范围。开环穿越频率则是开环增益幅值等于1即0dB时的频率。二者在相位裕度合适时有近似关系但不能直接划等号。很多教科书里会说“穿越频率约等于闭环带宽”这句话只在相角裕度约60度左右时才近似成立阻尼比偏离较大时误差很大。开环截止频率指的是开环波特图上幅频曲线与0dB线的交点它本质上和穿越频率是同一个东西只是有些文档叫法不同。假如你在调试伺服驱动器看到软件界面上写着“速度环带宽50Hz”但实测闭环响应-3dB点只有35Hz多半是软件把开环穿越频率标成了“带宽”这在商业驱动器里很常见。遇到这种情况别急着怀疑自己算错了先确认一下对方说的带宽到底是开环还是闭环指标。6.3 阻尼比太小带宽好但系统没法用再回到那张表。ζ0.1的系统带宽比ζ0.707的系统宽了54%单看带宽指标好像是“高性能”。可实际上阻尼比0.1的系统超调量超过70%振荡周期长任何一个工程师看到阶跃响应都会判定这系统根本不适用。所以选型时正确的思路是先定阻尼比再定带宽。阻尼比通常在0.5到0.8之间选这个区间超调量和响应速度的平衡比较好。阻尼比确定之后带宽和ωn之间几乎一一对应系统响应速度就完全确定下来了。还有一个容易被忽略的点带宽公式只适用于标准形式的二阶系统也就是分母是s²2ζωn sωn²分子等于ωn²的系统。如果系统分子还有零点比如带前馈的PID回路带宽的定义和计算都会有变化。零点会把幅频曲线抬高使-3dB点右移但同时也带来相位提前。这种系统用标准公式只能算近似最好直接看闭环系统的完整波特图。6.4 实测带宽时最容易忽略的相位问题最后提醒一个测试细节。带宽定义只谈幅值不谈相位但实际判断“这个系统能不能用”时相位是躲不开的。在-3dB带宽那个频率点上二阶系统的相位滞后已经不小了。ζ0.707时带宽点的相位大约是-52度ζ0.5时带宽点相位接近-66度。这意味着一套系统即使工作在带宽以内相位滞后也可能大到让闭环稳定性出问题。所以我在项目测试里有个习惯测带宽的同时一定把相位曲线拉出来看一眼。如果相位在几十赫兹就滞后得厉害即使幅频响应看起来平坦实际系统的动态响应也可能很差。高阶系统尤其如此一个看起来带宽100Hz的回路可能相位在20Hz就开始急剧恶化。带宽只是完整频域指标的一半另一半永远是相位裕度。写到这里理论、公式、仿真和坑都梳理得差不多了。最后分享一个个人的工作习惯我调完一套二阶系统会把ωn、ζ、带宽、上升时间、超调量五组数字随手记在一个小本子上反复对照实测结果修正对公式的直觉。尤其当你把同一套二阶参数用到电机、传感器和音频滤波器上之后就会发现带宽这个指标在不同场景下的侧重点完全不同。见得多了看一眼指标表基本就能猜出系统的性格做起来心里也踏实。