4、PID控制器的离散化:位置式PID与增量式PID的算法推导、区别及在运动控制中的选择依据
在连续时间域中,PID控制器的理想传递函数为 \( u(t)=K_p e(t)+K_i \int e(t)dt+K_d \frac{de(t)}{dt} \)。然而,现代运动控制系统(如伺服驱动器、PLC、嵌入式运动控制器)均以固定采样周期 \( T_s \) 运行,必须将连续PID方程离散化为数字递推算法。离散化的核心任务是将积分项和微分项分别用数值累加和数值差分近似,从而得到可在每个中断周期内执行的代数方程。根据输出量的计算方式不同,离散PID分为位置式PID和增量式PID两种基本形式,二者在算法结构、存储开销、抗积分饱和能力、执行器适配性及故障安全性上存在显著差异,直接决定了其在具体运动控制场景中的选型。
4.1 位置式PID的算法推导与工程实现
核心原理:位置式PID直接计算执行机构在每个采样周期应处的位置(或控制量)。对连续PID方程进行离散化,令 \( t = kT_s \),积分项用矩形法累加近似,微分项用一阶后向差分近似,得到:
u(k) = Kp·e(k) + Ki·Ts·Σe(j) + (Kd/Ts)·[e(k) - e(k-1)]
其中 \( \Sigma e(j) \) 表示从启动到当前时刻所有误差的累加和。实际工程中,通常将 \( K_i T_s \) 合并为积分系数 \( K_{i\_d} \),将 \( K_d / T_s \) 合并为微分系数 \( K_{d\_d} \),以减少乘法运算。位置式PID的输出 \( u(k) \) 直接对应D/A转换器的输出值或伺服驱动器的速度/力矩指令值。
工程实现要点:位置式PID必须维护一个积分累加器 \( \text{sum\_e} \),每个周期执行 \( \text{sum\_e} += e(k) \)。该累加器是双刃剑——它保证了系统对稳态误差的消除能力,但也带来了积分饱和风险。当执行器达到输出限幅(如伺服最大力矩)而误差持续存在时,累加器会不断增大,导致执行器长时间停留在饱和区,当误差反向时系统响应严重滞后。因此,位置式PID必须配套抗积分饱和策略,常用方法包括:
- 积分限幅法:将累加器限制在合理范围内,如 \( |\text{sum\_e}| \le \text{max\_sum} \),防止积分项无限增长。
- 积分分离法:当误差值大于阈值 \( \varepsilon \) 时,暂时关闭积分作用,只保留比例和微分;误差减小后再恢复积分。
- 条件积分法:仅在执行器未饱和时允许积分累加,饱和时冻结积分项。
4.2 增量式PID的算法推导与工程实现
核心原理:增量式PID不计算控制量的值,而是计算控制量的增量 \( \Delta u(k) = u(k) - u(k-1) \)。对位置式PID的递推式做差分运算,消去积分累加项,得到:
Δu(k) = Kp·[e(k) - e(k-1)] + Ki·Ts·e(k) + (Kd/Ts)·[e(k) - 2e(k-1) + e(k-2)]
实际输出为 \( u(k) = u(k-1) + \Delta u(k) \)。增量式PID的显著优势在于:它不需要存储全部历史误差,只需保留最近三个误差采样值 \( e(k) \)、\( e(k-1) \)、\( e(k-2) \),且积分作用隐含在增量计算中,不存在积分累加器,因此天然避免了积分饱和问题。
工程实现要点:增量式PID的输出 \( \Delta u(k) \) 通常被发送给具有积分性质的执行器,例如步进电机的脉冲频率、伺服驱动器的速度给定增量、或电动阀门的开度增量。执行器自身具备“保持”功能,即当控制器输出为零增量时,执行器维持当前状态。这种“增量输出+执行器保持”的架构,使得系统在控制器故障或通信中断时,执行器能停留在最后位置,安全性更高。
4.3 位置式与增量式的核心区别及对比表
两种算法在数学上等价(当位置式PID的积分累加器不饱和时),但在工程行为上差异显著。下表从多个维度进行对比:
| 对比维度 | 位置式PID | 增量式PID |
|---|---|---|
| 输出含义 | 执行器的位置/控制量 | 控制量的增量(相对变化量) |
| 存储需求 | 需存储全部历史误差累加和 | 仅需最近3个误差值 |
| 积分饱和 | 存在,需额外抗饱和策略 | 天然免疫,无积分累加器 |
| 故障安全性 | 输出跳变风险高,需输出限幅 | 输出增量,执行器保持最后位置 |
| 手动/自动切换 | 需特殊处理积分初值 | 天然无扰切换 |
| 适用执行器 | 伺服驱动器(速度/力矩指令)、D/A输出 | 步进电机(脉冲频率)、电动阀门、增量式驱动器 |
| 算力开销 | 需乘法+累加,运算量略大 | 需3次误差差分,运算量略小 |
| 调试直观性 | 输出直接反映控制量,便于示波器观察 | 输出为增量,需积分后观察 |
4.4 运动控制中的选择依据与实战案例
选择依据:在运动控制系统中,选择位置式还是增量式,主要取决于执行器类型、控制环结构、安全要求及调试习惯。以下是工程判断路径:
- 执行器是否自带积分保持功能?若执行器是步进电机(脉冲频率控制)或电动阀门(开度增量控制),必须使用增量式PID,因为执行器本身对增量进行积分。若执行器是伺服驱动器(接受速度/力矩指令),则位置式和增量式均可,但位置式更直观。
- 是否需要抗积分饱和?若系统存在频繁启停、负载突变或执行器限幅,优先选择增量式PID,省去复杂的抗饱和逻辑。
- 故障安全要求:若控制器故障时要求执行器保持原位(如CNC主轴、机器人关节),增量式PID更安全;若要求执行器回到安全位置(如紧急回零),位置式PID配合输出限幅更合适。
- 调试与监控:位置式PID的输出可直接显示在HMI上,便于观察控制量是否饱和;增量式PID的输出需累加后才能显示,调试时略繁琐。
实战案例:三轴直角坐标机械臂的Z轴控制
背景与约束:某自动化装配线使用三轴直角坐标机械臂,Z轴由步进电机驱动,通过滚珠丝杠传动,最大行程200mm,负载质量约8kg。控制器为PLC,采样周期 \( T_s = 2ms \)。原系统使用位置式PID,出现两个问题:① 当Z轴下降碰到硬限位时,积分累加器持续增大,导致电机堵转过热;② 手动/自动切换时,Z轴瞬间跳动约5mm,存在安全隐患。
初始现象与目标:目标是将Z轴定位精度控制在±0.05mm内,同时消除堵转风险和切换冲击。
关键输入数据:步进电机每转200步,丝杠导程5mm,即脉冲当量0.025mm/脉冲。原位置式PID参数:\( K_p=0.8 \),\( K_i=0.15 \),\( K_d=0.02 \)。
分析判断过程:步进电机本身是增量式执行器——它接收脉冲频率信号,内部对脉冲计数实现位置积分。位置式PID输出的是脉冲数,但PLC通过高速脉冲口发送时,实际发送的是频率增量。这导致位置式PID的积分累加器与步进电机的内部计数器重复积分,造成控制冗余。且位置式PID的积分累加器在堵转时无法清零,是堵转过热的直接原因。
实际操作步骤:
- 将Z轴控制算法改为增量式PID,输出 \( \Delta u(k) \) 直接作为脉冲频率增量。
- 重新整定参数:\( K_p=0.5 \),\( K_i=0.08 \),\( K_d=0.01 \),通过阶跃响应法逐步调整。
- 在PLC中设置脉冲频率上限为20kHz(对应500mm/s),防止增量过大。
- 手动/自动切换时,将当前脉冲频率作为 \( u(k-1) \) 初值,实现无扰切换。
结果对比:改造后,Z轴定位精度达到±0.03mm,优于目标;堵转时电机电流稳定在额定值,不再过热;手动/自动切换时Z轴位移小于0.1mm,满足安全要求。
风险与代价:增量式PID在调试初期,由于输出不直观,需要额外编写监控程序累加显示控制量。此外,若步进电机失步(丢步),增量式PID无法感知位置偏差,需配合外部编码器做闭环补偿。
复盘经验:选择PID算法形式时,应首先分析执行器的“积分属性”。步进电机、电动阀门等增量型执行器应匹配增量式PID;伺服驱动器、液压比例阀等型执行器可匹配位置式PID。同时,增量式PID并非万能,在需要精确控制位置且执行器无保持功能的场合,仍需使用位置式PID并做好抗饱和设计。
4.5 常见误区与总结复盘
误区一:混淆“离散化”与“增量式”。有些工程师认为“数字PID就是增量式PID”,实际上位置式和增量式都是离散化的产物,区别在于输出量的定义方式。
误区二:忽视采样周期对微分项的影响。离散化后,微分项系数为 \( K_d / T_s \),当 \( T_s \) 较小时,微分项会被放大,容易引入噪声。工程上常对微分项做一阶低通滤波,即 \( D(z) = \frac{K_d}{T_s} \cdot \frac{1 - z^{-1}}{1 + \alpha z^{-1}} \),其中 \( \alpha \) 为滤波系数。
误区三:认为增量式PID不需要输出限幅。虽然增量式PID无积分饱和,但 \( \Delta u(k) \) 过大仍会导致执行器过载。必须对增量本身和累加后的输出同时限幅。
误区四:忽略执行器饱和对积分项的影响。位置式PID在输出饱和时,积分累加器仍在工作,必须采用条件积分或积分分离策略。增量式PID虽然免疫积分饱和,但若执行器本身饱和(如步进电机达到最大脉冲频率),增量输出会丢失,需在算法中检测执行器饱和状态并暂停增量输出。