工作原理
PID 控制器根据给定值与测量值之间的误差计算输出:比例项响应当前误差,积分项消除稳态误差,微分项响应误差的变化速度。在电力电子中,PI 控制器是电流环和电压环的主力。
本生成器针对固定采样周期 dt 生成离散时间实现代码,可直接放入控制中断。可选择 C(包括用于中断服务程序和 TI C2000 CLA 的直接访问风格)、C++、Python 或 Arduino,并可启用抗积分饱和、前馈以及输入和输出限幅。
这里的抗积分饱和是把积分累加值限制在 ±windup_limit,因此输出饱和期间积分不会持续增大,退出饱和时可避免大的超调。请让 Ki × 限值大致等于输出范围。输出限幅则把控制量限制在例如 PWM 占空比范围内。
设计步骤
- 1将采样周期 dt 固定为真实的中断周期,并保持不变。
- 2从 PI 控制器开始:按期望的穿越频率整定 Kp,再加入 Ki,使积分零点位于穿越频率以下。
- 3将输出限幅设为执行器的物理范围,例如 PWM 占空比取 0 到 1。
- 4启用抗积分饱和,并设置积分限值,使 Ki 乘以限值大致等于输出范围。
- 5只有当被控对象需要额外相位超前时才加入微分项,并先对测量值滤波,因为微分会放大噪声。
公式
- 连续 PID
- u(t) = Kp·e(t) + Ki·∫e dt + Kd·de/dt
- 离散积分(矩形法)
- I[k] = I[k−1] + e[k] · dt
- 离散微分
- D[k] = (e[k] − e[k−1]) / dt
- 输出
- u[k] = Kp·e[k] + Ki·I[k] + Kd·D[k]
计算示例
对于 20 kHz 采样的电流环,设 dt = 50 µs,选择 PI,启用抗积分饱和,并把输出限制在占空比范围 0–1。生成的函数可以在每次 PWM 中断中调用一次,传入电流给定值和测量电流。
常见错误
- 使用与实际中断频率不符的 dt,会使 Ki 和 Kd 的缩放出错。
- 在控制器运行时修改增益而不处理积分状态,会导致输出出现突变。
- 对误差而不是对测量值做微分,每次给定值变化时都会产生尖峰。
- 省略输出限幅和抗积分饱和,会导致饱和后出现很大的超调。
常见问题
应该用 PI 还是 PID?
大多数功率变换器的电流环和电压环使用 PI。微分项会放大测量噪声和开关纹波,只有在被控对象需要额外相位超前时才使用。
如何选择 Kp 和 Ki?
从被控对象模型和期望的穿越频率出发,电流环通常取开关频率的十分之一或更低,然后在波特图上检查相位裕度。
为什么采样时间很重要?
离散积分和微分都按 dt 缩放。如果 dt 与实际中断周期不同,有效增益就会改变。
计算结果为工程估算值,请结合数据手册、仿真和实测验证设计。