4. 自整定技术概览:基于阶跃响应、基于继电反馈、基于模型辨识

好,咱们进入正题。自整定技术,说白了就是让驱动器自己学会怎么调参数。你想想看,一个电机换上去,还要人工去试PI参数,费时费力不说,还不一定最优。我这些年做项目,最怕的就是现场调试——环境一变,参数就得重来。

自整定技术主要有三条路:阶跃响应法、继电反馈法、模型辨识法。每条路都有自己的脾气,咱们一条一条捋清楚。

核心观点:自整定的本质,就是用算法代替人工试凑。你只需要告诉系统“我要什么性能”,它自己算出PI参数。

4.1 三种方法的总体对比

先给个全景图。我习惯把这三条路比作三种性格的人:

  • 阶跃响应法——直来直去,给系统一个阶跃,看它怎么响应,然后算参数。简单粗暴,但容易受噪声影响。
  • 继电反馈法——有点小聪明,让系统自己振荡起来,从振荡中提取信息。抗干扰能力强,工业上用得最多。
  • 模型辨识法——最“学霸”,先建个数学模型,再用优化算法去拟合。精度高,但计算量大。

我早期做的一个伺服项目,用的就是阶跃响应法。当时觉得简单嘛,结果现场一跑,噪声一上来,参数抖得厉害。后来换成继电反馈,稳多了。

方法 原理 优点 缺点 适用场景
阶跃响应法 施加阶跃信号,提取响应特征 实现简单,物理意义明确 对噪声敏感,需人工判断稳态 实验室、低噪声环境
继电反馈法 引入继电环节,产生等幅振荡 抗干扰强,自动获取临界信息 振荡可能影响系统寿命 工业现场、在线整定
模型辨识法 采集数据,拟合传递函数 精度高,可离线优化 计算量大,需激励信号设计 高精度伺服、研发阶段

4.2 阶跃响应法——最直观的入门方法

阶跃响应法,我当年在学校里第一次接触PID时就在用。原理很简单:给系统一个阶跃指令,记录电流的响应曲线,然后从曲线上提取几个关键特征量。

具体怎么做?

  1. 施加阶跃:给电流环一个阶跃给定,比如从0A跳到1A。
  2. 记录响应:采集实际电流的上升过程。
  3. 提取特征:找到上升时间、超调量、稳态误差。
  4. 计算参数:用Ziegler-Nichols公式或改进公式算出Kp和Ki。

举个例子,Ziegler-Nichols的阶跃响应法公式:

// 从阶跃响应中提取 L(滞后时间)和 T(时间常数)
// 然后计算PI参数
Kp = 0.9 * T / (L * K)   // K是系统增益
Ki = Kp / (3 * L)         // 积分时间常数

注意:阶跃响应法对噪声非常敏感。我曾经在一个项目中,因为电流采样有1%的纹波,导致提取的L和T偏差了30%,算出来的参数根本不能用。后来加了低通滤波才解决。

阶跃响应法的优点是直观,你一眼就能看出系统响应快不快、有没有振荡。但缺点也很明显——它需要系统进入稳态才能开始测试,而且阶跃幅度要选好,太小信噪比低,太大可能触发保护。

4.3 继电反馈法——工业界的宠儿

继电反馈法,这是我在实际项目中最喜欢用的方法。为什么?因为它抗干扰能力强,而且不需要人工判断稳态。

原理是这样的:在电流环中插入一个继电环节(就是带滞环的比较器),让系统自己产生等幅振荡。从振荡的幅值和频率,就能算出临界增益Ku和临界周期Tu。

流程如下:

  1. 断开PI控制器,插入继电环节。
  2. 设置滞环宽度:一般取额定电流的1%~5%。
  3. 等待振荡稳定:通常3~5个周期就够了。
  4. 提取振荡信息:记录振荡幅值A和周期Tu。
  5. 计算临界参数:Ku = 4h / (πA),其中h是继电输出幅值。
  6. 整定PI参数:用Ziegler-Nichols或改进公式。

继电反馈法的Ziegler-Nichols整定公式:

// 从继电振荡中获取 Ku(临界增益)和 Tu(临界周期)
Kp = 0.45 * Ku
Ki = Kp / (0.85 * Tu)   // 注意:这里是积分时间常数,不是Ki本身

实战技巧:滞环宽度不能设得太小,否则噪声会引起误触发。我一般取额定电流的2%~3%。如果系统噪声大,可以适当加大滞环,但振荡幅值也会变大,要注意电流限幅。

继电反馈法的最大优势是鲁棒性强。即使电流采样有噪声,只要滞环设置合理,振荡依然稳定。我在一个电机参数变化很大的项目中(温度从-20℃到80℃),继电反馈法每次都能给出可用的参数,而阶跃响应法就经常翻车。

4.4 模型辨识法——精度最高的选择

模型辨识法,说白了就是给电机“建模”。你先假设电流环的传递函数形式(比如一阶惯性+纯滞后),然后采集输入输出数据,用最小二乘法或递推算法去拟合模型参数。

这种方法精度最高,但代价也最大——计算量大,而且需要精心设计激励信号。

常用的模型结构:

  • 一阶惯性+纯滞后:G(s) = K * e^(-Ls) / (Ts + 1)
  • 二阶系统:G(s) = ωn² / (s² + 2ζωn s + ωn²)
  • ARX模型:离散时间模型,适合在线辨识

我一般用递推最小二乘法(RLS)做在线辨识。代码框架如下:

// 递推最小二乘法(RLS)在线辨识
// 输入:u(k) 当前控制量,y(k) 当前反馈量
// 输出:theta 模型参数向量

// 初始化
P = 1000 * I;  // 协方差矩阵,初始值要大
theta = [0; 0; 0];  // 参数向量

// 每次采样执行
phi = [-y(k-1), -y(k-2), u(k-1)]';  // 回归向量
e = y(k) - phi' * theta;  // 预测误差
K = P * phi / (lambda + phi' * P * phi);  // 增益矩阵
theta = theta + K * e;  // 更新参数
P = (I - K * phi') * P / lambda;  // 更新协方差,lambda是遗忘因子

注意:RLS的遗忘因子lambda很关键。lambda=1时,所有数据权重相同,适合时不变系统;lambda<1时,旧数据被遗忘,适合时变系统。我一般取0.98~0.995,太小了参数会抖。

模型辨识法的好处是,你不仅能得到PI参数,还能得到系统的完整数学模型。这对于后续的前馈补偿、抗饱和设计都很有用。但缺点也很明显——计算量大,在低成本MCU上跑起来有点吃力。

4.5 三种方法的知识体系图

下面这张图,把三种方法的流程和关系画清楚了。你可以看到,它们最终都指向同一个目标——算出Kp和Ki。

电流环参数自整定三种方法对比 Kp, Ki 参数 阶跃响应法 步骤: 1. 施加阶跃信号 2. 提取L、T、K 3. Z-N公式计算 优点:简单直观 缺点:怕噪声 继电反馈法 步骤: 1. 插入继电环节 2. 等待等幅振荡 3. 提取Ku、Tu 优点:抗干扰强 缺点:有振荡 模型辨识法 步骤: 1. 设计激励信号 2. 采集输入输出 3. RLS拟合模型 优点:精度最高 缺点:计算量大 适合:实验室、低噪声 适合:工业现场、在线 适合:高精度、研发 适合:离线优化

4.6 怎么选?我的建议

三种方法各有千秋,没有绝对的好坏。我个人的选择原则是这样的:

  • 做原型验证:用阶跃响应法,快,能快速看到系统特性。
  • 做产品量产:用继电反馈法,稳定可靠,抗干扰。
  • 做高性能伺服:用模型辨识法,精度优先,算力不是问题。

还有一个组合拳:先用继电反馈法粗调,再用模型辨识法精调。我在一个机器人关节项目中就是这么干的——继电反馈先给出一个“能用”的参数,然后在线RLS微调,最终效果比单一方法好很多。

避坑指南:我曾经在一个项目中,直接用阶跃响应法整定大惯量负载,结果因为机械谐振,响应曲线乱七八糟,算出来的参数完全不对。后来加了前置滤波器,再用继电反馈法,才搞定。所以,系统有谐振时,优先用继电反馈法。