4. PID参数整定方法(一):经验试凑法、Ziegler-Nichols整定法(临界比例度法)、Cohen-Coon整定法
参数整定这事儿,说白了就是给PID控制器找到三个最合适的数——Kp、Ki、Kd。我刚开始做电机控制那会儿,觉得这玩意儿不就是调三个旋钮嘛,拧到系统不抖不就行了?结果被现实狠狠教育了一顿。
后来我才明白,整定方法是有套路的。今天咱们就聊三种最常用的:经验试凑法、Ziegler-Nichols临界比例度法、还有Cohen-Coon整定法。每种方法都有自己的脾气,用对了地方,事半功倍。
核心观点:没有万能的方法,只有最合适的场景。经验试凑法适合现场快速调试,Z-N法适合有自振荡能力的系统,Cohen-Coon法专门对付大滞后对象。
4.1 经验试凑法——老工程师的直觉
经验试凑法,说白了就是靠手感。我见过很多老工程师,拧电位器的手比示波器还准。这方法不需要数学模型,不需要复杂的计算,全靠对系统响应的观察。
具体怎么操作?我一般按这个步骤来:
- 先把Ki和Kd置零,只保留比例项Kp。从一个小值开始,比如0.1或0.5,慢慢往上加。
- 观察系统响应:给一个阶跃输入,看输出波形。如果响应太慢,就加大Kp;如果出现持续振荡,就减小Kp。
- 找到临界状态:把Kp调到系统刚好出现等幅振荡的位置,记下这个值。然后退回来一点,留点余量。
- 加入积分项Ki:Ki的作用是消除稳态误差。从一个小值开始,比如Kp的1/10。加多了系统会振荡,加少了消除误差太慢。
- 最后加微分项Kd:Kd用来抑制超调,改善动态响应。从Kp的1/8到1/4开始试。注意,Kd对噪声非常敏感。
我的经验:调Kp的时候,我习惯用「二分法」——先给一个值,看响应;如果振荡就减半,如果太慢就加倍。这样来回几次,很快就能找到大概范围。比瞎拧快多了。
经验试凑法的优点很明显——简单、直观、不需要理论。但缺点也很致命:依赖个人经验,不同的人调出来的参数可能差很多。而且对于大滞后系统,这方法基本失效。
4.2 Ziegler-Nichols整定法——经典的临界比例度法
Z-N法,搞控制的没人不知道。1942年提出的方法,到现在还在用。它的核心思想是:找到系统的临界振荡点,然后用经验公式算出PID参数。
操作步骤是这样的:
- 把Ki和Kd置零,只保留Kp。
- 慢慢增大Kp,直到系统输出出现等幅振荡。记下此时的Kp值,称为临界增益Ku。
- 测量振荡周期,称为临界周期Tu。
- 根据下表查公式,算出Kp、Ki、Kd。
| 控制器类型 | Kp | Ki | Kd |
|---|---|---|---|
| P控制器 | 0.5 × Ku | — | — |
| PI控制器 | 0.45 × Ku | 1.2 × Kp / Tu | — |
| PID控制器 | 0.6 × Ku | 2 × Kp / Tu | Kp × Tu / 8 |
举个例子。我调一个直流电机速度环,慢慢加Kp到5.2的时候,电机转速开始等幅振荡,周期是0.8秒。那么Ku=5.2,Tu=0.8。如果要整定PID:
- Kp = 0.6 × 5.2 = 3.12
- Ki = 2 × 3.12 / 0.8 = 7.8
- Kd = 3.12 × 0.8 / 8 = 0.312
注意:Z-N法算出来的参数,系统通常会有较大的超调(约25%~50%)。这不是bug,是Z-N法的设计目标就是追求快速响应,而不是小超调。如果对超调敏感,需要后续手动微调。
Z-N法的优点是有理论依据,可重复性好。但前提是系统必须能出现等幅振荡。有些系统不允许振荡(比如温度控制,振荡一次可能就烧了),或者根本振荡不起来,那Z-N法就没法用。
4.3 Cohen-Coon整定法——大滞后的克星
Cohen-Coon法,很多人不太熟悉。它专门针对大滞后系统——就是那种你给了控制信号,半天才有反应的系统。比如温度控制、管道压力控制等。
这个方法基于开环阶跃响应,不需要让系统振荡。具体步骤:
- 把系统切换到开环模式(断开反馈)。
- 给一个阶跃输入,记录输出响应曲线。
- 从曲线上提取三个参数:
- L:纯滞后时间(从输入变化到输出开始变化的时间)
- T:时间常数(输出从0变化到63.2%所需的时间)
- K:开环增益(稳态输出变化量 / 输入变化量)
- 代入Cohen-Coon公式计算PID参数。
公式长这样(以PID为例):
Kp = (1.35 / K) × (T / L) × (1 + 0.18 × L / T)
Ki = Kp × (0.54 × L + 0.33 × T) / (T + 0.33 × L)²
Kd = Kp × (0.27 × T - 0.36 × L) / (0.54 × L + 0.33 × T)
看着复杂,其实用Excel算一下就行。我当年第一次用这个方法,是在一个工业炉温控制项目上。那个系统滞后时间L有30多秒,用经验法调了一整天都没搞定。后来用Cohen-Coon法,一次算出来,上机就跑通了。
关键点:Cohen-Coon法对滞后时间L的测量精度非常敏感。L测不准,参数全偏。我建议用示波器或数据采集卡记录响应曲线,在电脑上放大看,比肉眼估准确得多。
4.4 三种方法的对比与选择
我把三种方法的特点整理了一下,方便你对照选择:
| 方法 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|
| 经验试凑法 | 现场快速调试、简单系统 | 简单直观,无需理论 | 依赖经验,不可重复 |
| Z-N法 | 可自振荡的系统 | 有理论依据,可重复 | 超调大,需后续微调 |
| Cohen-Coon法 | 大滞后系统 | 不开环振荡,针对性强 | 公式复杂,对L敏感 |
我个人习惯是:先用经验法快速试一下,如果系统响应还行,就微调收工。如果经验法搞不定,就上Z-N法。如果系统滞后明显,直接上Cohen-Coon法。
避坑指南:我曾经在一个项目上,用Z-N法算完参数直接上机,结果系统振荡得跟打摆子一样。后来发现是执行器饱和了——Z-N法算出来的Kp太大,导致积分饱和。所以记住:算出来的参数只是起点,不是终点。一定要在实际系统上验证和微调。
好了,三种方法都讲完了。下一种方法——基于模型的自整定,咱们后面再聊。先把这三种方法练熟,应付90%的现场问题足够了。