伯德图(Bode 图)回答一个很直观的问题:给系统一个正弦输入,当频率改变时,输出的幅值和相位会怎样变化? 我们先从一个简单的 RL 电路出发,建立它的传递函数。
1. 我们要控制什么?
图 1:被控对象为串联 RL 电路,输入为电压指令,输出为测量电流。 图中,u ∗ ( t ) u^*(t) u ∗ ( t ) 是电压指令,u ( t ) u(t) u ( t ) 是电压源实际输出的电压,i ( t ) i(t) i ( t ) 是支路电流,i m ( t ) i_m(t) i m ( t ) 是电流测量值。星号表示“指令值”,不是复共轭。
我们希望通过改变 u ∗ ( t ) u^*(t) u ∗ ( t ) 来调节电流。第一步不是设计控制器,而是先弄清楚:电压改变以后,电流怎样响应?
这里先取 R > 0 R>0 R > 0 、L > 0 L>0 L > 0 ,并假设电压源和电流测量都是理想的:
u ( t ) = u ∗ ( t ) , i m ( t ) = i ( t ) .
u(t)=u^*(t),\qquad i_m(t)=i(t).
u ( t ) = u ∗ ( t ) , i m ( t ) = i ( t ) . 暂不考虑电压源的响应延迟、限幅,以及电流测量的滤波和延迟。图中虚线表示指令或测量信号,不是额外的电流支路。
2. 从电路方程到传递函数
沿电流方向应用基尔霍夫电压定律,得到:
u ( t ) = R i ( t ) + L d i ( t ) d t .
u(t)=Ri(t)+L\frac{di(t)}{dt}.
u ( t ) = R i ( t ) + L d t d i ( t ) . 电压一部分落在电阻上,另一部分用于改变电感电流。因此,电流不会在电压改变时立刻跳到新的稳态值。
在零初始条件 下,作拉普拉斯变换:
U ( s ) = ( R + L s ) I ( s ) .
U(s)=(R+Ls)I(s).
U ( s ) = ( R + L s ) I ( s ) . 于是,电压到电流的传递函数为:
G ( s ) = I ( s ) U ( s ) = 1 L s + R .
\boxed{G(s)=\frac{I(s)}{U(s)}=\frac{1}{Ls+R}}.
G ( s ) = U ( s ) I ( s ) = L s + R 1 . 在上述理想假设下,电压指令到测量电流也具有相同的传递函数:
I m ( s ) U ∗ ( s ) = 1 L s + R = 1 / R 1 + τ s , τ = L R .
\boxed{\frac{I_m(s)}{U^*(s)}=\frac{1}{Ls+R}
=\frac{1/R}{1+\tau s},\qquad \tau=\frac{L}{R}}.
U ∗ ( s ) I m ( s ) = L s + R 1 = 1 + τ s 1/ R , τ = R L . 这是一个一阶惯性环节 。1 / R 1/R 1/ R 是直流增益,单位为 A/V;τ = L / R \tau=L/R τ = L / R 是时间常数,单位为秒。电感越大、电阻越小,时间常数越大,电流到达新稳态所需的时间就越长。
这里的 G ( s ) G(s) G ( s ) 描述被控电路,不是加入控制器之后的闭环传递函数。
3. RL 被控对象的伯德图
令 s = j ω s=j\omega s = jω ,就得到这个电路的频率响应:
G ( j ω ) = 1 R + j ω L .
G(j\omega)=\frac{1}{R+j\omega L}.
G ( jω ) = R + jω L 1 . 3.1 幅值:输入一个正弦电压,会得到多大的电流?
当输入电压是角频率为 ω \omega ω 的正弦量时,稳态电流仍是同频率的正弦量,但幅值和相位会改变:
I ^ U ^ = ∣ G ( j ω ) ∣ = 1 R 2 + ( ω L ) 2 ,
\boxed{\frac{\hat I}{\hat U}=|G(j\omega)|=\frac{1}{\sqrt{R^2+(\omega L)^2}}},
U ^ I ^ = ∣ G ( jω ) ∣ = R 2 + ( ω L ) 2 1 , φ ( ω ) = − arctan ( ω L R ) .
\boxed{\varphi(\omega)=-\arctan\left(\frac{\omega L}{R}\right)}.
φ ( ω ) = − arctan ( R ω L ) . 这里 U ^ \hat U U ^ 、I ^ \hat I I ^ 表示正弦电压和电流的峰值,ω \omega ω 的单位为 rad/s。相位为负,表示电流滞后于电压。
例如,给电路施加峰值为 1 V 1\,\mathrm V 1 V 的正弦电压:
u ( t ) = U ^ sin ( ω t ) , U ^ = 1 V .
u(t)=\hat U\sin(\omega t),\qquad \hat U=1\,\mathrm V.
u ( t ) = U ^ sin ( ω t ) , U ^ = 1 V . 稳态电流为:
i ( t ) = I ^ sin ( ω t + φ ) , I ^ = ∣ G ( j ω ) ∣ U ^ .
i(t)=\hat I\sin(\omega t+\varphi),\qquad \boxed{\hat I=|G(j\omega)|\hat U}.
i ( t ) = I ^ sin ( ω t + φ ) , I ^ = ∣ G ( jω ) ∣ U ^ . 因此,如果某个频率下 ∣ G ( j ω ) ∣ = 0.5 A / V |G(j\omega)|=0.5\,\mathrm{A/V} ∣ G ( jω ) ∣ = 0.5 A/V ,输入 1 V 1\,\mathrm V 1 V 峰值的电压,就会得到 0.5 A 0.5\,\mathrm A 0.5 A 峰值的电流。伯德图的幅值曲线告诉我们的,正是每个频率下这种输入幅值与输出幅值的对应关系。
这里讨论的是持续正弦激励下的稳态响应,不是刚接通电压时的暂态过程。改变频率后,实际电路仍需要经历过渡过程才能到达新的正弦稳态。
3.2 dB:把幅值关系换一种刻度表示
幅值可以直接用 A/V 表示,也可以换成分贝(dB)。换成 dB 不会改变电路,只是把纵轴改为对数刻度。 较大的幅值跨度可以用较紧凑的数值范围表示。
由于这里输出是电流、输入是电压,∣ G ∣ |G| ∣ G ∣ 带有 A/V 单位。我们先约定参考值 G r e f = 1 A / V G_{ref}=1\,\mathrm{A/V} G re f = 1 A/V ,再对无量纲比值取对数:
M d B ( ω ) = 20 log 10 ( ∣ G ( j ω ) ∣ G r e f ) , G r e f = 1 A / V .
\boxed{M_{dB}(\omega)=20\log_{10}\left(\frac{|G(j\omega)|}{G_{ref}}\right),\qquad G_{ref}=1\,\mathrm{A/V}}.
M d B ( ω ) = 20 log 10 ( G re f ∣ G ( jω ) ∣ ) , G re f = 1 A/V . 反过来读图,就有:
∣ G ( j ω ) ∣ = G r e f 10 M d B ( ω ) / 20 .
|G(j\omega)|=G_{ref}\,10^{M_{dB}(\omega)/20}.
∣ G ( jω ) ∣ = G re f 1 0 M d B ( ω ) /20 . 以峰值 1 V 1\,\mathrm V 1 V 的输入为例:
图上幅值 对应的幅值比 稳态电流峰值 + 6.02 d B +6.02\,\mathrm{dB} + 6.02 dB 约 2 A / V 2\,\mathrm{A/V} 2 A/V 约 2 A 2\,\mathrm A 2 A 0 d B 0\,\mathrm{dB} 0 dB 1 A / V 1\,\mathrm{A/V} 1 A/V 1 A 1\,\mathrm A 1 A − 3.01 d B -3.01\,\mathrm{dB} − 3.01 dB 约 0.707 A / V 0.707\,\mathrm{A/V} 0.707 A/V 约 0.707 A 0.707\,\mathrm A 0.707 A − 6.02 d B -6.02\,\mathrm{dB} − 6.02 dB 约 0.5 A / V 0.5\,\mathrm{A/V} 0.5 A/V 约 0.5 A 0.5\,\mathrm A 0.5 A − 20 d B -20\,\mathrm{dB} − 20 dB 0.1 A / V 0.1\,\mathrm{A/V} 0.1 A/V 0.1 A 0.1\,\mathrm A 0.1 A
0 dB 不表示没有输出,负 dB 也不表示电流为负。 它们只表示幅值比等于或小于所选参考值;电流波形的正负变化和相位要另外看。
还要区分“幅值为 − 3.01 d B -3.01\,\mathrm{dB} − 3.01 dB ”与“相对低频下降 3.01 d B 3.01\,\mathrm{dB} 3.01 dB ”。对 RL 电路,在转折频率处,幅值是低频增益 1 / R 1/R 1/ R 的 1 / 2 1/\sqrt2 1/ 2 ,所以总是比低频低约 3.01 d B 3.01\,\mathrm{dB} 3.01 dB ;但它在图上的绝对读数取决于 R R R ,不一定就是 − 3.01 d B -3.01\,\mathrm{dB} − 3.01 dB 。
3.3 从伯德图上的一个点,看到时域波形
下面只画 G ( j ω ) G(j\omega) G ( jω ) ,尚未加入 PI 或反馈回路。幅值以 1 A / V 1\,\mathrm{A/V} 1 A/V 为参考,表示为 20 log 10 ( ∣ G ( j ω ) ∣ / ( 1 A / V ) ) 20\log_{10}(|G(j\omega)|/(1\,\mathrm{A/V})) 20 log 10 ( ∣ G ( jω ) ∣/ ( 1 A/V )) ;相位用角度表示。
选定一个角频率,就选定了伯德图上的一个幅值和一个相位。下方对应的时域图采用 1 V 1\,\mathrm V 1 V 峰值的正弦电压,电流峰值为 ∣ G ( j ω ) ∣ × 1 V |G(j\omega)|\times1\,\mathrm V ∣ G ( jω ) ∣ × 1 V 。绿色选中点与两条时域波形使用同一组 R、L 和频率参数。
电压、电流画在同一张时域图上。蓝线为 u / ( 1 V ) u/(1\,\mathrm V) u / ( 1 V ) ,橙线为 i / ( 1 A ) i/(1\,\mathrm A) i / ( 1 A ) ,使用同一个无量纲纵轴;峰值标签保留实际的 V、A 单位。这样两条曲线的高度之比就等于 ∣ G ∣ / ( 1 A / V ) |G|/(1\,\mathrm{A/V}) ∣ G ∣/ ( 1 A/V ) ,可以直接对应上方的 dB 读数,而不是把电压和电流当作同一种物理量。
动画展示的是所选参数下的正弦稳态 ,并非参数改变后的真实暂态。时间轴标注实际时间,每轮展示三个周期,屏幕播放约需 6 秒;播放速度不代表电路的真实频率。两条曲线不会分别按各自峰值归一化,否则幅值差异就被抹去了。
ωp = 100 rad/s
fp = 15.92 Hz
τ = 10 ms
f = 15.92 Hz
|G| = 0.7071 A/V
M = -3.01 dB
φ = -45.00 °
电流峰值 = 0.7071 A
伯德图计算模块
const root = document.getElementById('rl-bode'); return import(root.querySelector('.bode-module').href).then(module => module.mount(root, chart, fixit.isDark)); 峰值比 k = (Î / 1 A) / (Û / 1 V) = 0.7071 ;M = 20 log₁₀ k = -3.01 dB
波峰时间差 Δt = 7.854 ms ;周期 T = 62.83 ms
相位 φ = −360° × Δt / T = -45.00 °(电流滞后)
继续播放
t = 0 ms
u(t) = 0 V
i(t) = -0.5 A
交互式伯德图需要启用 JavaScript;幅值与相位的计算公式见上文。
伯德图中的灰色竖虚线标出转折角频率 ω p = R / L \omega_p=R/L ω p = R / L ,绿色实线标出当前选中的频率。在转折频率处,幅值比其低频极限下降约 3.01 d B 3.01\,\mathrm{dB} 3.01 dB ,相位为 − 45 ∘ -45^\circ − 4 5 ∘ 。
例如,初始参数 R = 1 Ω R=1\,\Omega R = 1 Ω 、L = 10 m H L=10\,\mathrm{mH} L = 10 mH 、ω = 100 r a d / s \omega=100\,\mathrm{rad/s} ω = 100 rad/s 恰好位于转折点。幅值读数约为 − 3.01 d B -3.01\,\mathrm{dB} − 3.01 dB ,对应的电流峰值约为 0.707 A 0.707\,\mathrm A 0.707 A ;相位为 − 45 ∘ -45^\circ − 4 5 ∘ ,所以电流波峰比电压波峰晚出现八分之一个周期。
时域图中的两个彩色圆点标出同一周期内的正峰值,竖向虚线从零线延伸经过峰值。看峰值高度之比,读出幅值;看两个波峰的时间差,读出相位。 图中的水平箭头标出电流波峰比电压波峰晚出现的时间 Δ t \Delta t Δ t 。一个周期 T = 2 π / ω T=2\pi/\omega T = 2 π / ω 对应 360 ∘ 360^\circ 36 0 ∘ ,因此电流相对电压的相位为:
φ = − 360 ∘ Δ t T .
\varphi=-360^\circ\frac{\Delta t}{T}.
φ = − 36 0 ∘ T Δ t . 这里负号表示滞后。默认参数下,Δ t ≈ 7.854 m s \Delta t\approx7.854\,\mathrm{ms} Δ t ≈ 7.854 ms 、T ≈ 62.83 m s T\approx62.83\,\mathrm{ms} T ≈ 62.83 ms ,所以相位为 − 45 ∘ -45^\circ − 4 5 ∘ ,与上方相频曲线的选中点一致。
保持 R R R 不变、增大 L L L ,转折点向低频移动,低频增益不变;保持 L L L 不变、增大 R R R ,低频增益降低,转折点向高频移动。
初学的读者会对 dB 这个单位特别陌生:既然是比值,为什么不直接画?
当然可以。下面固定 R = 1 Ω R=1\,\Omega R = 1 Ω 、L = 10 m H L=10\,\mathrm{mH} L = 10 mH ,用同一组频率响应作一张静态对照图。两图横轴都采用对数频率,左图直接画参考化幅值比 k = ∣ G ∣ / ( 1 A / V ) k=|G|/(1\,\mathrm{A/V}) k = ∣ G ∣/ ( 1 A/V ) ,右图把它换算成 20 log 10 k 20\log_{10}k 20 log 10 k 。
图 2:同一组幅值数据的两种表示。浅绿色区域对应相同的高频范围。 看浅绿色区域:频率从 10 3 10^3 1 0 3 增加到 10 4 10^4 1 0 4 、再到 10 5 r a d / s 10^5\,\mathrm{rad/s} 1 0 5 rad/s ,幅值比约为 0.1 0.1 0.1 、0.01 0.01 0.01 、0.001 0.001 0.001 。每一步都缩小到原来的十分之一,但在线性纵轴上,后两点几乎贴着零线。 换成 dB 后,对应约 − 20 -20 − 20 、− 40 -40 − 40 、− 60 d B -60\,\mathrm{dB} − 60 dB ,每一步约下降 20 d B 20\,\mathrm{dB} 20 dB ,变化趋势就清楚了。
所以不是“不用比值”,而是当幅值跨越多个数量级时,dB 更方便同时观察大幅值和小幅值的变化 。电路没有改变,数据也没有改变,改变的只是纵轴的表示方式。
4. 加入PI控制及参数整定
前面给 RL 电路施加电压,观察电流怎样响应。现在换一个目标:希望实际电流跟随我们给定的电流 i ∗ ( t ) i^*(t) i ∗ ( t ) 。 为此,需要测量实际电流,将它与给定值比较,再让 PI 根据两者的差异调整电压。
4.1 先明确闭环要做什么
图 3:在图 1 的基础上加入 PI 和电流负反馈。蓝色虚线是控制信号,黑色实线是电路导线;反馈线不表示电流沿该线流回控制器。 图中的 i ∗ ( t ) i^*(t) i ∗ ( t ) 是电流给定,i m ( t ) i_m(t) i m ( t ) 是测量电流,二者相减得到电流误差 :
e ( t ) = i ∗ ( t ) − i m ( t ) .
e(t)=i^*(t)-i_m(t).
e ( t ) = i ∗ ( t ) − i m ( t ) . PI 的输入现在有了明确意义:它不是直接接收给定电流,而是接收“还差多少”的误差信号。PI 输出电压指令 u ∗ ( t ) u^*(t) u ∗ ( t ) ,电压源驱动原来的 RL 电路;新的电流又被测量、比较,形成闭环。我们仍假设 u ( t ) = u ∗ ( t ) u(t)=u^*(t) u ( t ) = u ∗ ( t ) 、i m ( t ) = i ( t ) i_m(t)=i(t) i m ( t ) = i ( t ) ,暂不加入延迟、滤波或限幅。
PI 包含比例(P)和积分(I)两部分。令积分项初始值为零,有:
u ∗ ( t ) = K p e ( t ) + K i ∫ 0 t e ( ξ ) d ξ .
u^*(t)=K_p e(t)+K_i\int_0^t e(\xi)\,d\xi.
u ∗ ( t ) = K p e ( t ) + K i ∫ 0 t e ( ξ ) d ξ . 比例部分 根据当前误差贡献电压指令:当前误差越大,这部分的调整越大。积分部分 累积过去的误差:只要误差持续存在,这部分就会继续调整;即使当前误差为零,已经积累的积分值也可以维持非零电压指令。先取 K p > 0 K_p>0 K p > 0 、K i ≥ 0 K_i\geq0 K i ≥ 0 ,暂不指定数值。K i = 0 K_i=0 K i = 0 时只保留比例作用,可作为对照。在零初始条件下,PI 的传递函数是:
C ( s ) = U ∗ ( s ) E ( s ) = K p + K i s .
\boxed{C(s)=\frac{U^*(s)}{E(s)}=K_p+\frac{K_i}{s}}.
C ( s ) = E ( s ) U ∗ ( s ) = K p + s K i .
在零初始条件下,PI 的输出等于传递函数与输入信号的拉普拉斯变换相乘 。这里把乘号明确写出来:
U ∗ ( s ) = C ( s ) ⋅ E ( s ) .
\boxed{U^*(s)=C(s)\cdot E(s)}.
U ∗ ( s ) = C ( s ) ⋅ E ( s ) . 由 e ( t ) = i ∗ ( t ) − i m ( t ) e(t)=i^*(t)-i_m(t) e ( t ) = i ∗ ( t ) − i m ( t ) ,得到:
E ( s ) = I ∗ ( s ) − I m ( s ) .
E(s)=I^*(s)-I_m(s).
E ( s ) = I ∗ ( s ) − I m ( s ) . 因此,PI 的输出可以一步一步写成:
U ∗ ( s ) = C ( s ) ⋅ E ( s ) = C ( s ) ⋅ [ I ∗ ( s ) − I m ( s ) ] = ( K p + K i s ) ⋅ [ I ∗ ( s ) − I m ( s ) ] .
\begin{aligned}
U^*(s)&=C(s)\cdot E(s)\\
&=C(s)\cdot\left[I^*(s)-I_m(s)\right]\\
&=\left(K_p+\frac{K_i}{s}\right)\cdot
\left[I^*(s)-I_m(s)\right].
\end{aligned}
U ∗ ( s ) = C ( s ) ⋅ E ( s ) = C ( s ) ⋅ [ I ∗ ( s ) − I m ( s ) ] = ( K p + s K i ) ⋅ [ I ∗ ( s ) − I m ( s ) ] . 方括号只是把整个误差信号括起来,它与前面的 C ( s ) C(s) C ( s ) 是乘法关系,不是 C C C 的函数括号。
这里输入是电流误差、输出是电压,所以 K p K_p K p 的单位为 V / A \mathrm{V/A} V/A ,K i K_i K i 的单位为 V / ( A ⋅ s ) \mathrm{V/(A\cdot s)} V/ ( A ⋅ s ) 。
再把 PI 的输出接到 RL 对象。由于电压源和测量理想,测量电流满足:
I m ( s ) = G ( s ) ⋅ U ∗ ( s ) = G ( s ) ⋅ C ( s ) ⋅ [ I ∗ ( s ) − I m ( s ) ] .
\begin{aligned}
I_m(s)&=G(s)\cdot U^*(s)\\
&=G(s)\cdot C(s)\cdot\left[I^*(s)-I_m(s)\right].
\end{aligned}
I m ( s ) = G ( s ) ⋅ U ∗ ( s ) = G ( s ) ⋅ C ( s ) ⋅ [ I ∗ ( s ) − I m ( s ) ] . 将右侧括号展开,再把含 I m ( s ) I_m(s) I m ( s ) 的项移到左边:
I m ( s ) = G ( s ) ⋅ C ( s ) ⋅ I ∗ ( s ) − G ( s ) ⋅ C ( s ) ⋅ I m ( s ) , [ 1 + G ( s ) ⋅ C ( s ) ] ⋅ I m ( s ) = G ( s ) ⋅ C ( s ) ⋅ I ∗ ( s ) .
\begin{aligned}
I_m(s)&=G(s)\cdot C(s)\cdot I^*(s)-G(s)\cdot C(s)\cdot I_m(s),\\
\left[1+G(s)\cdot C(s)\right]\cdot I_m(s)&=G(s)\cdot C(s)\cdot I^*(s).
\end{aligned}
I m ( s ) [ 1 + G ( s ) ⋅ C ( s ) ] ⋅ I m ( s ) = G ( s ) ⋅ C ( s ) ⋅ I ∗ ( s ) − G ( s ) ⋅ C ( s ) ⋅ I m ( s ) , = G ( s ) ⋅ C ( s ) ⋅ I ∗ ( s ) . 于是得到给定电流到测量电流的闭环传递函数 :
G c l ( s ) = I m ( s ) I ∗ ( s ) = C ( s ) G ( s ) 1 + C ( s ) G ( s ) .
\boxed{G_{\mathrm{cl}}(s)=\frac{I_m(s)}{I^*(s)}
=\frac{C(s)G(s)}{1+C(s)G(s)}}.
G cl ( s ) = I ∗ ( s ) I m ( s ) = 1 + C ( s ) G ( s ) C ( s ) G ( s ) . 这个传递函数回答的是:给定电流变化后,实际电流怎样跟随?响应多快、有没有超调,都属于闭环性能问题。但接成负反馈,并不意味着任意 PI 参数都能获得满意的性能。
4.2 观察 PI 参数怎样改变闭环响应
沿用图 3 的闭环连接,先给出具体电路参数和电流跟踪目标,再观察改变 PI 参数后,实际电流怎样跟随给定。
第一步:把电路和控制目标写清楚
固定本节的电路参数,不随第 3 节的滑块变化:
R = 1 Ω , L = 10 m H = 0.01 H , G ( s ) = 1 0.01 s + 1 .
R=1\,\Omega,\qquad L=10\,\mathrm{mH}=0.01\,\mathrm H,
\qquad G(s)=\frac{1}{0.01s+1}.
R = 1 Ω , L = 10 mH = 0.01 H , G ( s ) = 0.01 s + 1 1 . 初始电流、PI 积分初值都取零,电流给定在 t = 0 t=0 t = 0 从 0 0 0 跳到 1 A 1\,\mathrm A 1 A 。我们的目标是:约 10 m s 10\,\mathrm{ms} 10 ms 以内,电流进入并保持在 0.98 0.98 0.98 至 1.02 A 1.02\,\mathrm A 1.02 A 的范围内。 这就是本例的“2% 调节时间”要求。
待选的参数有两个:K p K_p K p 和 K i K_i K i 。先把它们保留为独立参数。
第二步:把闭环表现与环路特征对应起来
先取一组便于观察的初始值,不把它当作已经整定好的结果:
K p = 1 V / A , K i = 400 V / ( A ⋅ s ) .
K_p=1\,\mathrm{V/A},\qquad K_i=400\,\mathrm{V/(A\cdot s)}.
K p = 1 V/A , K i = 400 V/ ( A ⋅ s ) . 把 C ( s ) = K p + K i / s C(s)=K_p+K_i/s C ( s ) = K p + K i / s 和 G ( s ) = 1 / ( 0.01 s + 1 ) G(s)=1/(0.01s+1) G ( s ) = 1/ ( 0.01 s + 1 ) 代入前面得到的闭环传递函数:
G c l ( s ) = C ( s ) ⋅ G ( s ) 1 + C ( s ) ⋅ G ( s ) = K p s + K i s ( 0.01 s + 1 ) + K p s + K i = K p s + K i 0.01 s 2 + ( 1 + K p ) s + K i .
\begin{aligned}
G_{\mathrm{cl}}(s)
&=\frac{C(s)\cdot G(s)}{1+C(s)\cdot G(s)}\\
&=\frac{K_p s+K_i}{s(0.01s+1)+K_p s+K_i}\\
&=\boxed{\frac{K_p s+K_i}{0.01s^2+(1+K_p)s+K_i}}.
\end{aligned}
G cl ( s ) = 1 + C ( s ) ⋅ G ( s ) C ( s ) ⋅ G ( s ) = s ( 0.01 s + 1 ) + K p s + K i K p s + K i = 0.01 s 2 + ( 1 + K p ) s + K i K p s + K i . 左图沿用这个闭环,观察给定电流从 0 跳到 1 A 1\,\mathrm A 1 A 后的实际电流。为了在右图标出交越频率和相位裕度,右侧改看同一组参数的环路增益(开环传递函数) :
G o l ( s ) = C ( s ) ⋅ G ( s ) = K p s + K i s ( 0.01 s + 1 ) .
G_{\mathrm{ol}}(s)=C(s)\cdot G(s)
=\frac{K_p s+K_i}{s(0.01s+1)}.
G ol ( s ) = C ( s ) ⋅ G ( s ) = s ( 0.01 s + 1 ) K p s + K i . 左边是闭环控制的结果,右边是帮助理解这些结果的环路特征,不是要求电路实际断开反馈运行。 图中用绿色对应“上升时间与交越频率”,蓝色对应“稳态误差与低频增益”,红色对应“超调量与相位裕度”;参数改变时,两侧标注同时更新。
这里的上升时间取电流第一次从最终值的 10% 上升到 90% 所需的时间;超调量相对最终值计算。将 K i K_i K i 调到 0 可对照纯比例控制:本例给定为 1 A 1\,\mathrm A 1 A ,纯比例控制的稳态误差为 R / ( R + K p ) A R/(R+K_p)\,\mathrm A R / ( R + K p ) A ;K i > 0 K_i>0 K i > 0 时,理想稳定 PI 闭环的阶跃稳态误差为零。
同色表示值得一起观察的指标,并非一一对应的换算公式。交越频率提高不保证调节时间一定缩短,相位裕度也不能直接换算为固定超调量。蓝色读数使用低频极限(ω → 0 \omega\to0 ω → 0 );曲线上的蓝点则显示 ω = 1 r a d / s \omega=1\,\mathrm{rad/s} ω = 1 rad/s 的有限频率增益,两者不要混为一谈。
Kp
V/A
Ki
V/(A·s)
控制器:PI
给定 ±2% 调节时间:—
PI 整定联动绘图模块
const root = document.getElementById('pi-tuning'); return import(root.querySelector('.pi-tuning-module').href).then(module => module.mount(root, chart, fixit.isDark)); 此处的交互曲线需要 JavaScript;闭环传递函数见上文。
图 4:闭环阶跃响应与开环伯德图的同色对照。绿色为上升时间与交越频率,蓝色为稳态误差与低频增益,红色为超调与相位裕度。左图蓝色虚线表示最终值,浅色带为给定 1 A 的 ±2% 范围;图窗固定为 0–100 ms。各项数值按当前模型计算,不使用经验对应表。每次修改参数均从零初值重新计算;模型不含延迟、限幅等因素。 4.3 做三个小实验:从伯德图看懂闭环响应
随手调动图 4 的参数,会发现一些看起来矛盾的现象:有时电流上升很快,却始终达不到给定;有时交越频率几乎没变,调节时间却相差很大。下面不再自由拖动参数,而是用三组预设实验,把这些关系分开看清楚。
三个实验仍使用 R = 1 Ω R=1\,\Omega R = 1 Ω 、L = 10 m H L=10\,\mathrm{mH} L = 10 mH ,给定均从 0 跳到 1 A 1\,\mathrm A 1 A 。达标 始终指电流进入并保持在 0.98 0.98 0.98 至 1.02 A 1.02\,\mathrm A 1.02 A 内,而不是第一次碰到 1 A 1\,\mathrm A 1 A 。左边看闭环实际电流,右边看同一组参数的开环伯德图。
动图中每一组参数都是一次独立的零初值计算,并非在电路运行中突然切换 PI。彩色曲线为当前方案,灰色虚线保留上一组作对照;右侧伯德图在参数确定时即固定,左侧按时间展开响应。所有方案使用相同坐标范围,避免缩放造成“变快”的错觉。
实验一:交越频率提高,能更快达到控制目标吗?
先控制住其他变化,只比较速度。 选取下面三组 PI,使相位裕度都保持在 90 ∘ 90^\circ 9 0 ∘ ,同时将交越频率依次提高到 100、200、400 rad/s。
方案 K p K_p K p / (V/A)K i K_i K i / (V/(A·s))交越频率 ω c \omega_c ω c / (rad/s) 2% 调节时间 / ms 10 ms 内达标? A 1 100 100 39.12 否 B 2 200 200 19.56 否 C 4 400 400 9.78 是
看右边,绿色交越点逐组向右移动;再看左边,电流更早接近 1 A 1\,\mathrm A 1 A ,进入浅绿色误差带的时间也提前。这组实验中,交越频率提高一倍,调节时间缩短一半 。方案 C 达到了前面提出的控制目标。
为了让比较足够清楚,本实验特意取 K i / K p = R / L = 100 s − 1 K_i/K_p=R/L=100\,\mathrm{s^{-1}} K i / K p = R / L = 100 s − 1 。代入后,G o l ( s ) = ω c / s G_{\mathrm{ol}}(s)=\omega_c/s G ol ( s ) = ω c / s ,G c l ( s ) = ω c / ( s + ω c ) G_{\mathrm{cl}}(s)=\omega_c/(s+\omega_c) G cl ( s ) = ω c / ( s + ω c ) ,因此 i ( t ) = ( 1 − e − ω c t ) A i(t)=(1-e^{-\omega_c t})\,\mathrm A i ( t ) = ( 1 − e − ω c t ) A ,t 2 % = ln ( 50 ) / ω c t_{2\%}=\ln(50)/\omega_c t 2% = ln ( 50 ) / ω c 。这是这组理想参数的精确结果,不是任意 PI 都满足的公式,也不是要求整定时必须采用这种配比。
先记住一个有限定的结论:当响应形状保持相近时,提高交越频率可以使闭环跟随更快。 但如果误差消不掉,或者振荡更明显,仅凭交越频率还不能判断是否达标。下面两组实验就看这两种情况。
实验二:上升很快,为什么还是达不到目标?
先把积分关掉,只保留比例控制。 令 K i = 0 K_i=0 K i = 0 ,依次将 K p K_p K p 从 1 增大到 4、8。右图的低频部分变成有限高度的平台,平台逐渐提高;左图的电流虽然更快到达最终值,但最终值仍低于 1 A 1\,\mathrm A 1 A 。
由前面的闭环关系,在本例的单位反馈和 1 A 1\,\mathrm A 1 A 阶跃给定下:
G o l ( 0 ) = K p R , e s s = 1 1 + G o l ( 0 ) A = R R + K p A .
G_{\mathrm{ol}}(0)=\frac{K_p}{R},\qquad
e_{\mathrm{ss}}=\frac{1}{1+G_{\mathrm{ol}}(0)}\,\mathrm A
=\frac{R}{R+K_p}\,\mathrm A.
G ol ( 0 ) = R K p , e ss = 1 + G ol ( 0 ) 1 A = R + K p R A . 这里可以直接看出:直流环路增益越大,稳态误差越小。 但比例增益有限,误差并不会自动变成零。例如 K p = 8 K_p=8 K p = 8 时,最终电流只有 8 / 9 ≈ 0.889 A 8/9\approx0.889\,\mathrm A 8/9 ≈ 0.889 A ;它很快就稳定了,却始终没有进入我们要求的 0.98 0.98 0.98 至 1.02 A 1.02\,\mathrm A 1.02 A 。
然后固定 K p = 8 K_p=8 K p = 8 ,加入积分,分别取 K i = 190 K_i=190 K i = 190 和 800,继续观察。
控制器 K p K_p K p K i K_i K i 直流环路增益 G o l ( 0 ) G_{\mathrm{ol}}(0) G ol ( 0 ) 稳态误差 / A 交越频率 / (rad/s) 2% 调节时间 / ms P 1 0 1(0 dB) 0.500 无正频率交越点 无法达标 P 4 0 4(12.04 dB) 0.200 387.30 无法达标 P 8 0 8(18.06 dB) 0.111 793.73 无法达标 PI 8 190 ∞ \infty ∞ 0 794.09 70.28 PI 8 800 ∞ \infty ∞ 0 800.00 4.89
图 6:从纯比例到PI。前三组提高有限的低频平台,后两组加入积分,使低频增益在频率趋于零时持续增大。后两组最终误差都为零,但消除误差的速度不同。Kp、Ki的单位与图5相同。 图6动画帧
图6窄屏动画帧
图6窄屏封面
加入积分后,右图不再保持有限的低频平台,而是在频率继续降低时向上抬升。对本例稳定的理想 PI 闭环,只要 K i > 0 K_i>0 K i > 0 ,直流环路增益趋于无穷大,阶跃稳态误差便为零。
但要注意:最终没有误差,并不等于很快消除误差。 K i = 190 K_i=190 K i = 190 时,电流先快速上升,随后留下缓慢接近给定的尾巴,要约 70.28 m s 70.28\,\mathrm{ms} 70.28 ms 才达标;K i = 800 K_i=800 K i = 800 时,则约 4.89 m s 4.89\,\mathrm{ms} 4.89 ms 就能达标。两者的直流增益极限同为无穷大,但在有限的低频范围内,后者的环路增益更高,响应也不同。
尤其注意表中最后三行:交越频率都在约800 rad/s,结果却分别是无法达标、缓慢达标、快速达标。 所以要把交越附近与低频部分一起看,不能只盯住一个0 dB交点。
稳态误差指 t → ∞ t\to\infty t → ∞ 的最终误差,不是动图播放到某一时刻的瞬时误差。图中只画到 ω = 1 r a d / s \omega=1\,\mathrm{rad/s} ω = 1 rad/s ,没有画到零频率;“直流增益为无穷大”是公式给出的极限,不是有限频率曲线上某一点的数值。纯比例方案 K p = 1 K_p=1 K p = 1 只在零频率极限达到0 dB,因此表中不把它标成正频率交越。
实验三:交越频率相同,为什么超调不同?
前面看过“快”和“准”,现在再看电流会不会冲过头。将交越频率都保持在200 rad/s,选择三组不同的 PI 参数 ,让相位裕度发生变化。
方案 K p K_p K p / (V/A)K i K_i K i / (V/(A·s))交越频率 / (rad/s) 相位裕度 超调量 2% 调节时间 / ms A 0.5 约435.89 200 39.49° 30.79% 51.12 B 1 400 200 53.13° 19.10% 38.42 C 2 200 200 90.00° 0% 19.56
图 7:相同交越频率下的相位裕度与超调。绿色交越线位置不变,红色相位裕度逐组增大;本组闭环响应的峰值和振荡随之减小。方案A计算使用未舍入的Ki值。 图7动画帧
图7窄屏动画帧
图7窄屏封面
右上图的交越点没有移动,但右下图在交越频率处与 − 180 ∘ -180^\circ − 18 0 ∘ 之间的距离增大了,这就是相位裕度增大。对应左图,这三组方案的超调从约31%降到19%,最后变成无超调;因振荡而反复离开误差带的现象也减轻了。
冲得快,不一定稳得快。 方案 A 的首次上升时间约 6.42 m s 6.42\,\mathrm{ms} 6.42 ms ,比方案 C 的 10.99 m s 10.99\,\mathrm{ms} 10.99 ms 短,但 A 调节到误差带内需要约 51.12 m s 51.12\,\mathrm{ms} 51.12 ms ,反而比 C 慢。第一次接近目标与最终保持在目标附近,是两件不同的事。
这三组结果来自完整闭环模型,保留了 PI 引入的零点,超调量直接由时域响应计算。不能据此写成“某个相位裕度必然对应某个超调百分比”;更换对象、零点或延迟后,这种对应会变化。这里是在同一个简单电路中,通过对照建立直觉。
三个实验放在一起看
想判断的问题 伯德图中重点看哪里? 时域中最终检查什么? 跟随能否更快? 交越频率及其附近的曲线形状 上升时间,以及是否在10 ms内进入并保持在误差带 最终能否跟准? 低频增益,尤其是趋于零频率时的行为 最终值与稳态误差;误差消除需要多长时间 会不会冲过头、来回振荡? 交越频率处的相位裕度 峰值超调、振荡,以及最后一次进入误差带的时间
伯德图的用处就在这里:它给出哪些频段、哪些特征值得关注,帮助我们理解参数为什么产生这些效果;是否达到控制目标,仍要回到闭环响应确认。 本节只是理想 RL 模型的数值实验,未考虑电压限幅、采样与计算延迟,不能把增益无限提高当成实际系统的整定办法。
5. 为什么前面画开环伯德图?闭环伯德图又是什么样?
看到这里,读者可能会有一个疑问:左边明明是闭环的时域响应,为什么右边一直画开环伯德图?闭环难道不能画伯德图吗?
当然可以。前面选用开环伯德图,是为了观察环路增益的低频行为、交越频率和相位裕度,再与闭环的实际响应对照;并不是说闭环没有频率响应。
在本例的单位负反馈下,这两张伯德图对应的是两个不同的传递函数:
G o l ( s ) = C ( s ) ⋅ G ( s ) , G c l ( s ) = I m ( s ) I ∗ ( s ) = G o l ( s ) 1 + G o l ( s ) = K p s + K i 0.01 s 2 + ( 1 + K p ) s + K i .
G_{\mathrm{ol}}(s)=C(s)\cdot G(s),
\qquad
G_{\mathrm{cl}}(s)=\frac{I_m(s)}{I^*(s)}
=\frac{G_{\mathrm{ol}}(s)}{1+G_{\mathrm{ol}}(s)}
=\frac{K_p s+K_i}{0.01s^2+(1+K_p)s+K_i}.
G ol ( s ) = C ( s ) ⋅ G ( s ) , G cl ( s ) = I ∗ ( s ) I m ( s ) = 1 + G ol ( s ) G ol ( s ) = 0.01 s 2 + ( 1 + K p ) s + K i K p s + K i . 开环图观察环路本身,闭环图观察给定到输出的跟随特性。 左边的闭环阶跃响应与右边的闭环伯德图,使用的是同一个 G c l ( s ) G_{\mathrm{cl}}(s) G cl ( s ) :一个看阶跃给定后的变化过程,一个看不同频率正弦给定下的稳态幅值比和相位差。
下面沿用实验三的 A、B、C 三组参数,只多加一列闭环伯德图。三列始终使用同一组参数,并同步切换方案 ;每组时域曲线都从零初值重新计算。
图 8:实验三的另一种看法。左列是闭环阶跃响应,中列是开环环路增益,右列是闭环给定到输出的频率响应。两列伯德图的频率范围和纵轴刻度相同;灰虚线为上一组方案。相位裕度只标在中列,不标在闭环图上。窄屏按左、中、右顺序纵向排列。 图8动画帧
图8窄屏动画帧
图8窄屏封面
先看一个直观现象:从方案 A 到 C,中间的开环交越频率仍为200 rad/s,相位裕度增大;左边的超调减小,右边闭环幅频曲线隆起的峰值也逐渐降低,最后不再出现高于0 dB的隆起。这是这三组参数的对照结果,不是“某个闭环幅值峰值必然对应某个超调百分比”的通用公式。
还可以注意到,右边三组闭环幅值在低频都趋近0 dB。这里输入和输出都是电流,0 dB意味着幅值比趋近1;它不等于中间的开环低频增益也是0 dB。
这一章先把三种图放到一起,让读者知道:闭环伯德图不仅能画,而且它与闭环时域图是在从不同角度观察同一个系统。 至于闭环带宽怎样定义、幅值峰值与时域响应有什么联系,以及为什么整定时仍常看开环图,留到下一篇文章再细讲。
补充参考:MathWorks:闭环传递函数与环路增益的关系 。本图仍只包含前文的理想 RL 对象与 PI,不包含采样、延迟或限幅。
PI实验动图播放器
RL频率响应计算依赖
PI响应计算依赖
图1电路资源
图2桌面资源
图2窄屏资源
图3闭环电路资源