PI 离散化计算器(Tustin、欧拉、ZOH)

把连续时间 PI 控制器 Kp + Ki/s 转换成差分方程的两个系数,并显示每种方法以及采样延迟在穿越频率处使增益和相位偏移多少。

PI 控制器

采样与评估频率

留空或超出 0 到 fs/2 范围时使用 PI 零点。Ki = Kp/Ti。

PI 零点

636.6 Hz

Ki = 2000 s⁻¹

连续增益

-4.54 dB

1 kHz 处

连续相位

-32.482°

1 kHz 处

1 kHz 处的延迟相位滞后

ZOH (0.5T)

9.00°

ZOH + 一个采样延迟 (1.5T)

27.00°

1.5T 假设计算结果在一个 PWM 周期后才生效。这部分滞后叠加在下面的误差之上,换离散化方法也消除不了。

1 kHz 处的系数与误差

方法b0b1增益误差 (dB)相位误差
Tustin0.55-0.45-0.021+0.214°
预畸变 Tustin0.550167-0.449833-0.012+0.128°
后向欧拉本站 PID 代码生成器使用的方法0.6-0.5+0.587+2.627°
前向欧拉 = ZOH0.5-0.4-0.655-2.569°

差分方程

Tustin
u[k] = u[k-1] + 0.55*e[k] - 0.45*e[k-1]
预畸变 Tustin
u[k] = u[k-1] + 0.550167*e[k] - 0.449833*e[k-1]
后向欧拉
u[k] = u[k-1] + 0.6*e[k] - 0.5*e[k-1]
前向欧拉 = ZOH
u[k] = u[k-1] + 0.5*e[k] - 0.4*e[k-1]

控制器伯德图

工作原理

在 s 域整定好的 PI 控制器,要在 MCU 或 DSP 上运行,必须先变成差分方程。常用方法得到的形式都是 u[k] = u[k-1] + b0·e[k] + b1·e[k-1],变化的只有 b0 和 b1。本计算器给出 Tustin(双线性)、带频率预畸变的 Tustin、后向欧拉和前向欧拉的系数。对 PI 而言,前向欧拉与零阶保持(ZOH)等效完全相同。

随后在单位圆 z = e^(jωT) 上计算各离散控制器,并在你输入的频率(通常是环路穿越频率)处与连续的 Kp + Ki/(jω) 比较。伯德图画到奈奎斯特频率 fs/2,可以看到离散响应在那附近偏离连续响应。

通常更重要的是最后一项结果:采样保持损失的相位(ωT/2)和一个采样周期计算延迟再损失的相位(ωT)。它们属于环路而不属于控制器,所以换哪种离散化方法都消除不了。

设计步骤

  1. 1用对象模型在连续域整定 Kp、Ki,记下穿越频率。
  2. 2输入控制环实际运行的采样频率。如果中断隔几个 PWM 周期才执行一次,它会低于 PWM 频率。
  3. 3没有特别理由就选 Tustin,抄下 b0、b1。预畸变频率放在 PI 零点;若想在穿越频率处精确匹配,就设为穿越频率。
  4. 4从设计的相位裕度中减去这里显示的延迟相位。若结果太小,应降低穿越频率或减小延迟,换离散化方法无法找回。

公式

差分方程
u[k] = u[k−1] + b0·e[k] + b1·e[k−1]
Tustin
b0 = Kp + Ki·T/2, b1 = −Kp + Ki·T/2
在 ωp 处预畸变的 Tustin
K = ωp / tan(ωp·T/2); b0 = Kp + Ki/K, b1 = −Kp + Ki/K
后向欧拉
b0 = Kp + Ki·T, b1 = −Kp
前向欧拉 = ZOH
b0 = Kp, b1 = −Kp + Ki·T
延迟相位
φ_ZOH = ω·T/2, φ_ZOH+1 sample = 1.5·ω·T (degrees: ×180/π)

计算示例

取 Kp = 0.5、Ki = 2000 s⁻¹(PI 零点 637 Hz)、fs = 20 kHz、穿越频率 1 kHz。Tustin 得到 b0 = 0.55、b1 = −0.45;后向欧拉为 0.60 / −0.50;前向欧拉(ZOH)为 0.50 / −0.40。1 kHz 处连续 PI 的相位为 −32.48°,Tustin 与之相差仅 0.21° 和 0.02 dB,两种欧拉方法则朝相反方向各偏约 2.6° 和 0.6 dB。再看延迟:1 kHz 时仅保持就损失 9.0°,加上一个采样的计算延迟共损失 27.0°;fs 减半到 10 kHz 则变为 54°。相位裕度不够时,应先检查采样与更新时序,而不是纠结 Tustin 还是欧拉。

常见错误

  • 单位混淆:这里的 Ki 单位是 1/s,即乘在 ∫e dt 上的积分增益。若用 Ti 整定,则 Ki = Kp/Ti。
  • 控制器每两个或四个 PWM 周期才运行一次,却把 PWM 频率当作 fs。T 是控制器自身的更新周期。
  • 忘记抗积分饱和。上面的差分方程没有输出限幅;u 饱和时若不限幅并停止积分,大阶跃后会出现严重超调。

常见问题

应该用哪种方法?

若 PI 的穿越频率远低于 fs/10,用 Tustin。它的增益和相位最接近连续设计,并把所有稳定的连续极点映射到单位圆内。穿越频率远低于 fs 时欧拉方法也可以,在代码评审中也更容易解释。

预畸变对 PI 有什么影响?

几乎没有。预畸变让离散响应在某一个频率上精确匹配。对位于 fs/20 的 PI,系数只在小数点后第四位变化。它对陷波滤波器和谐振控制器更重要,因为那里频率本身就是关键。

为什么这里前向欧拉与 ZOH 相同?

积分器 Ki/s 的 ZOH 等效是 Ki·T/(z−1),正好是前向欧拉积分器。比例项原样通过,所以对 PI 两种方法的 b0、b1 相同。对其他传递函数则不同。

本站的 PID 代码生成器用的是哪种方法?

生成的代码在使用积分值之前先加上 e[k]·dt,这是后向欧拉(b0 = Kp + Ki·T,b1 = −Kp)。在上面的例子中,它比连续 PI 超前约 2.6°,与延迟相比很小,但值得了解。

参考文献

  1. G. F. Franklin, J. D. Powell, M. L. Workman, "Digital Control of Dynamic Systems," 3rd ed., Addison-Wesley, 1998.

计算结果为工程估算值,请结合数据手册、仿真和实测验证设计。

相关指南

相关计算器