搞控制的人,十有八九都经历过这么一段:手头有个系统要调,照着网上的口诀“先比例,后积分,再微分”,把P从0开始一点点往上加,看着波形振荡了就往回调,然后加I消静差,加D压超调。一顿操作猛如虎,波形也确实能压住,但你要是问他“为什么P大了会振荡”“为什么积分能消静差”“微分为什么能预测未来”,他十有八九会卡壳。
这其实就是典型的“只知其然,不知其所以然”。PID参数调节如果只停留在旋旋钮、试参数的层面,那你永远只能当个“调参侠”,换个对象就不会玩了。今天这篇文章,我不打算给你背公式、抄口诀,而是带着你从控制理论的地基开始,把PID三个字母的底裤一层层扒干净。目标只有一个:让你调完参数之后,能自己说清楚“我这一步到底在干什么”。
这篇文章适合谁?适合刚入门的自动化、电气、机械专业学生,适合在现场被PID折磨得死去活来的工程师,也适合那些用过PID但总觉得差点意思、想往上走一步的开发者。看完之后,你会对这个“有手就能调”的算法产生完全不一样的理解。
1. 内容整体设计与思路拆解
在讲PID公式之前,我觉得有必要先把“反馈控制”这件事的底层逻辑聊透。因为PID只是反馈控制的一种实现形式,你看不懂PID,本质上是没看懂反馈。
1.1 反馈控制的本质:不是为了“知道”,而是为了“纠偏”
控制系统这门学科,往深了说可以扯到现代控制理论的矩阵、状态空间、李雅普诺夫稳定性,但往本质了说,就一句话:让系统的输出跟随我们想要的输入,并且在有扰动的情况下依然能保持这个跟随关系。
这句话有三个关键词:输出、输入、扰动。你想要的是输出等于输入,但现实世界永远有误差,有建模误差、有外部干扰、有摩擦力、有重力、有温度漂移。反馈控制干的事情就是:测量输出,算出和输入的偏差,然后用这个偏差去修正输入,让偏差变小。这是一个闭环的自我修正过程。
你想想家里空调是怎么工作的。你设定26度,温度传感器测出室温,如果室温高于26,压缩机就加力制冷;低于26,就停机或者降频。这里没有任何人知道空调内部那个压缩机的精确数学模型,但照样能把温度控制住。这就是反馈的力量——它不依赖精确建模,只依赖“测出来不准就改”。
PID就是这个“改”的策略。它解决的问题是:拿到偏差之后,我到底该使多大劲去改?使劲小了跟不上,使劲大了又冲过头,那到底怎么使劲才正好?这就是控制理论里最核心的“权衡”问题。
1.2 PID三个字母到底在干嘛:过去、现在和未来
如果你把计算机的采样周期看得足够小,把控制过程想成连续时间的动态过程,那么PID其实就是在回答三个问题:
- P(比例):现在偏差有多大?我立刻按比例给劲儿。偏差大就大动作,偏差小就小动作,这是最直接的反馈,也是控制器的主心骨。
- I(积分):过去攒了多少旧账?只要偏差长期存在,积分项就一笔一笔往上记,记到一定程度输出就会变化,直到把偏差消除。这是用来“还旧账”的。
- D(微分):偏差正在以什么趋势变化?如果偏差正在快速缩小,说明马上就要到达目标了,这时候得提前收手,否则就会冲过头。这是用来“预测未来”的。
你看,这其实是一个挺朴素的思想:看现在动手,看过去算账,看趋势刹车。控制理论给这三个朴素的直觉提供了严格的数学支撑,告诉我们在什么条件下这个回路是稳定的,在什么条件下会振荡甚至发散,以及每个参数对系统动态性能的具体影响是什么。
1.3 为什么不应该跳过理论直接调参
我在现场见过很多老工程师,PID调得贼好,全凭手感。手感这个东西确实有价值,但它有个致命前提:你必须在同一个类型的系统上攒足够长时间的经验。换个平台,换个执行机构,换个负载,手感可能要推倒重来。
而控制理论的思路是反过来的:我先建立一个不太精确但能反映核心动态的模型,然后用数学工具分析出参数的大致范围,再上现场去微调。这条路开始的时候稍微费点劲,但一旦走通了,你面对任何新对象都有章法。这就像学开车,老司机可能不知道每个齿轮的传动比,但你要让他去开一台全新结构的新能源车,他依然是老司机,因为他掌握的是一套通用的“控车逻辑”,而不是针对某台车的肌肉记忆。
这篇文章后面所有内容,都是围绕着“通用逻辑”这四个字展开的。
2. 核心细节解析与实操要点
理论这东西,光讲大道理没用,还得落到公式和曲线上去。这一章我们就从数学定义出发,把PID的每一项掰开揉碎地讲。
2.1 从传递函数看PID:数学语言说的才是实话
PID在连续域的经典表达式是:
u(t) = Kp * e(t) + Ki * ∫e(t)dt + Kd * de(t)/dt写成传递函数形式就是:
Gc(s) = Kp + Ki/s + Kd*s很多初学者看到这个式子就头皮发麻,其实完全没必要。你得把s理解成一个运算符号,而不是一个变量。1/s表示积分,s表示微分,所以这个式子的含义就是:控制器输出等于误差的比例、误差的积分、误差的微分三者的加权和。
这里有一个特别重要的点:Kp、Ki、Kd这三个参数不是独立起作用的,它们之间是协同的。Kp大了,系统的响应会变快,但Ki对应的积分项也会跟着改变整个回路的动态特性。你不能只盯着某一个参数,你得看整个闭环传递函数的极点分布。
闭环传递函数的标准形式是:
Gcl(s) = Gc(s) * Gp(s) / (1 + Gc(s) * Gp(s))其中Gp(s)是被控对象的传递函数。系统的稳定性,由闭环传递函数分母的根(也就是闭环极点)决定。如果所有极点都在复平面的左半平面,系统就是稳定的;只要有一个极点在右半平面,系统就发散。
这就是为什么P调太大会振荡的原因所在——过大的Kp会把闭环极点推向虚轴甚至推过虚轴,一推过虚轴,系统就从临界稳定变成不稳定,振荡就来了。
2.2 比例项P:快速反应的代价是什么
比例项最直观,输出和误差成正比,误差越大,输出越猛。
但它有两个先天缺陷:
第一,有静差。比例控制存在一个无法消除的稳态误差。你想想,如果系统稳定在某个输出位置,这时候误差不为零,那比例输出就是一个固定值,这个固定值用来维持系统平衡。但如果想要让输出再靠近目标值一点,就需要更大的控制输出,而更大的控制输出又需要更大的误差来产生。死循环了,最终只能在某个误差点上停下来,这个点就是静差。
静差的大小和开环增益有关。开环增益越大,静差越小,但开环增益又不能无限大,因为它直接关系到稳定性。这就是P本身的死结。
第二,响应快但容易超调。Kp大了以后,系统动作很猛,但惯性会让它冲过目标值,冲过头之后,误差反向,控制器又往反向猛拉,于是来回振荡。
现场调试P的时候,一般是从小往大加,观察响应曲线,加到临界振荡之前的位置。这是工程经验,但你现在应该明白这背后的原理是:Kp在这个值附近已经让闭环极点靠近虚轴了。
2.3 积分项I:就是来还旧账的
积分项做的事情,是把过去所有时刻的误差累加起来。只要有误差,不管多小,积分项都会一直累积,累积到一定程度,输出就会变化,直到把误差完全压到零。
这就是积分消除静差的原理。它解决的是比例控制解决不了的问题:比例输出需要误差来维持,而积分输出可以靠历史误差的积累来维持,误差最终归零,积分项却仍然保留着那个“还债”得到的输出值。
积分有个大坑,叫做积分饱和(Integral Windup)。想象一下,如果执行机构已经输出到极限了,比如阀门已经全开了,但误差还是很大,积分项还在拼命往上累计。等误差终于反过来的时候,积分项的值已经积累得很高,需要花很长时间才能把它“消化”掉,这段时间里系统会冲出很远,超调巨大。
破解积分饱和的常用方法有:积分限幅、积分分离、抗积分饱和算法。现场最简单的做法是给积分项的输出加一个上限,不让它无限累积。
积分时间的设置也有讲究。积分时间Ti定义为Kp/Ki,它表示积分作用相对于比例作用的强弱。Ti越小,积分作用越强,消静差越快,但也越容易振荡和超调。Ti越大,积分作用越弱,稳态误差消得越慢。
2.4 微分项D:提前刹车,但小心噪音
微分项的作用是“看趋势”。如果误差在快速减小,说明马上要到了,微分项会输出一个反向的控制量,给系统“踩一脚刹车”,抑制超调。
从控制理论的角度看,微分项是在给系统增加阻尼。你可以把一个二阶系统理解成弹簧-质量-阻尼系统,P相当于弹簧刚度,I相当于消除静差的外力,D相当于阻尼器。阻尼越大,振荡衰减越快,但阻尼太大,系统会变得迟钝,响应很慢。
微分项最大的问题是噪声放大。微分是求变化率,而传感器噪声恰好是高频率的剧烈变化。一旦信号有噪声,微分项就会把这些噪声放大然后叠加到输出上,执行机构会高频抖动。这在工程上非常致命,会磨损阀门、烧坏电机驱动器、甚至激起机械共振。
所以实际工程中,很少直接用纯微分,一般都会加一个低通滤波器,把高频噪声先滤掉再微分。也就是所谓的“不完全微分PID”。D参数宁肯小一点,也不要为了压超调而猛加D,否则你的系统会从“超调大”变成“抖得没法用”。
2.5 位置式PID和增量式PID:同一个内核的不同写法
工程实现上,PID有两种常见形式:位置式和增量式。
位置式PID直接计算执行机构的绝对位置输出,每次采样都要重新算一次全量输出,任何变动都可能引起输出的大幅跳变。增量式PID计算的是输出的增量,只和最近几次的误差有关,输出变化量小,执行机构动作平稳,而且天然自带一定抗积分饱和能力。
增量式的控制律是:
Δu(k) = Kp * [e(k) - e(k-1)] + Ki * e(k) + Kd * [e(k) - 2e(k-1) + e(k-2)]这个式子本质上是位置式PID的差分形式。在单片机或者PLC里实现的时候,增量式比位置式更安全,因为即使计算机死机重启,执行机构也只会停留在上一次的位置,不会突然跳到某个离谱的输出值。做运动控制和电机控制的时候,增量式用得非常多。
3. 实操过程与核心环节实现
说完了理论,我们来点能直接上手的干货。这一章我带着你过一遍完整的PID整定过程,从建立模型到参数计算,再到现场调试,全程是实操视角。
3.1 第一步:搭建一个让自己看得懂的模型
就算你手头没有精确模型,也可以先用一个近似的模型来帮助理解系统。大多数工业被控对象,在某个工作点附近都可以近似成一阶惯性加纯延迟模型:
Gp(s) = K * exp(-Ls) / (Ts + 1)其中K是增益,T是时间常数,L是纯延迟时间。别小看这个简单的模型,它背后是控制工程里最常用的辨识思路——阶跃响应法。
现场辨识的方法很简单:
- 让系统稳定在某个工作点。
- 给执行机构一个阶跃输入(比如阀门开度突然增加5%)。
- 记录输出变量随时间变化的曲线。
- 从曲线上读出K(稳态变化量与输入变化量的比值)、T(输出达到63.2%稳态值所需的时间)、L(从输入变化到输出开始变化的纯延迟时间)。
为什么要选63.2%?因为一阶惯性系统在t=T时刻的输出正好是稳态值的63.2%,这是从指数响应特性推出来的,不是人为拍脑袋定的。
我用一个实际案例说明。假设我们要控制一个电加热炉的温度,给加热器加10%的功率阶跃,温度经过30秒延迟后开始上升,最终从100度升到120度。那么:
- K = (120-100) / 10% = 2 度/%
- L = 30 秒
- T = 从温度开始变化到达到稳态偏差63.2%的时间,假设是150秒
于是模型就是Gp(s) = 2 * exp(-30s) / (150s + 1)。这个模型不完美,但足以指导我们进行下一步的参数计算。
3.2 第二步:用工程整定公式估算初值
有了这个模型,我们不需要直接盲调,可以用一些经典工程整定公式来估算PID参数的初值。最经典的是齐格勒-尼科尔斯(Ziegler-Nichols)整定法。这里我推荐用它的第一法,也就是基于阶跃响应曲线的版本。
对于上面这个一阶惯性加纯延迟模型,Ziegler-Nichols第一法给的参数公式是:
- Kp = 1.2 * T / (K * L)
- Ti = 2 * L
- Td = 0.5 * L
其中比例增益用Kp,积分时间Ti = Kp/Ki,微分时间Td = Kd/Kp。
代入我们刚才辨识出的K=2,T=150,L=30:
- Kp = 1.2 * 150 / (2 * 30) = 3
- Ti = 2 * 30 = 60 秒,所以 Ki = Kp / Ti = 3 / 60 = 0.05
- Td = 0.5 * 30 = 15 秒,所以 Kd = Kp * Td = 3 * 15 = 45
这组参数可以直接作为初值烧进控制器里,然后用下面的步骤去微调。注意,ZN公式给出的参数偏激进,通常会有一定超调,它最大的作用是提供一个合理的起点,而不是直接给出最终答案。
3.3 第三步:现场调试的完整流程
拿到初值之后,上现场要按顺序来:
- 先设I=0,D=0,只保留P。把Kp设为估算值的一半左右,比如1.5,让系统跑起来,观察响应曲线。
- 逐步增加Kp,每次增加20%到30%,观察系统响应。如果出现等幅振荡,说明Kp已经到达临界值,马上回调20%左右。
- 加入积分项。把Ki从估算值的50%开始加,观察稳态误差的消除速度。如果出现低频振荡(周期很长的那种摆动),说明Ki太大,往回减一半。
- 最后加微分。把Kd从估算值的50%开始加,观察超调量的变化。如果输出开始出现高频抖动,说明Kd过大,或者需要加滤波。
- 每一次修改参数后,都要给系统一个阶跃给定或外加扰动,观察它的动态响应过程。只看稳态曲线是看不出动态性能的,必须加扰动测试。
这一步里面有个现场经验:记录每一次的参数变化和对应的响应特征。很多人调参全凭感觉,调来调去忘了自己试过什么值,最后调乱了都不知道从哪里恢复。我个人的习惯是做一个参数变更记录表,每次改动一行,记录时间、参数值、响应特征(超调量、调节时间、振荡次数)。
3.4 一个完整的PID代码实现样张
如果你是在单片机或者PLC上实现PID,我给你一个最基础的位置式PID的C语言伪代码,方便你对照理解:
typedef struct { float Kp, Ki, Kd; // PID参数 float integral; // 积分累积值 float prev_error; // 上一次误差 float out_max, out_min; // 输出限幅 } PID_t; float PID_Update(PID_t *pid, float setpoint, float measurement) { float error = setpoint - measurement; // P float P_out = pid->Kp * error; // I,带积分限幅防饱和 pid->integral += error * dt; if (pid->integral > pid->integral_limit) pid->integral = pid->integral_limit; if (pid->integral < -pid->integral_limit) pid->integral = -pid->integral_limit; float I_out = pid->Ki * pid->integral; // D(实际工程中建议加低通滤波,这里用简易差分) float derivative = (error - pid->prev_error) / dt; float D_out = pid->Kd * derivative; // 总输出 float output = P_out + I_out + D_out; // 输出限幅 if (output > pid->out_max) output = pid->out_max; if (output < pid->out_min) output = pid->out_min; pid->prev_error = error; return output; }这个代码本身很简单,但有几个细节我得强调:
- dt是采样周期,必须固定。如果你采样周期忽长忽短,积分和微分的计算结果都会失真,系统行为会变得不可预测。所以PID控制器的采样必须由定时器严格触发,不能用延时函数凑合。
- 积分限幅很重要。就算你知道位置式PID有这个毛病,不能保证别人改你代码的时候还记得住。写代码的时候就做防御,比事后排查省事得多。
- 微分项必须加滤波。上面的代码用的是最简差分,真实的工程里我会建议用一阶低通滤波处理误差后再微分,或者使用带有滤波系数的微分项,这个后面会说。
3.5 抗积分饱和的实现细节
上面提到了积分饱和,这里我想展开一下工程上最常见的几种处理方法:
积分限幅法是最简单的,就是给积分累积值设个上限,超过就不再积分了。这个办法粗鲁但有效,缺点是如果限幅设得不好,可能在接近稳态时残留小静差。
积分分离法的思路是:当误差比较大的时候,直接关闭积分;当误差进入某个阈值以内时,再开启积分。这样在误差大的时候依靠P和D快速逼近,误差小时依靠I来消静差。代码上只需要加一句:
if (fabs(error) < integral_zone) pid->integral += error * dt;Back-calculation(反算)法是一种更精细的处理方式。当输出被限幅后,把“限幅后输出和未限幅输出的差值”按比例反馈到积分项,把积分值往回拉:
float unsat_output = P_out + I_out + D_out; float output = clamp(unsat_output, out_min, out_max); pid->integral += Kb * (output - unsat_output) * dt;其中Kb是反馈增益,一般取Ki的2到3倍。这种做法的好处是积分项被连续、平滑地修正,不会突然变号也不会卡在限幅值附近不动。
3.6 微分项的滤波器实现
纯微分在工程上基本不可用,标准解法是给微分加一阶低通滤波。使用滤波后的微分项,传递函数变成:
Gd(s) = Kd * s / (Tf * s + 1)其中Tf是滤波时间常数,通常取(Td/N),N在2到20之间。数字实现上可以用一阶惯性滤波:
// 低通滤波系数取决于采样周期和截止频率 float alpha = dt / (Tf + dt); float filtered_derivative = alpha * raw_derivative + (1 - alpha) * prev_filtered_derivative;这样处理后,高频噪声被抑制,微分的“预测刹车”功能依然保留。你要是用纯微分在现场调出一个抖动的系统,别怪PID不行,先看看是不是D项没加滤波。
4. 常见问题与排查技巧实录
调PID这事,十个问题里有八个是“系统振荡”,剩下两个是“响应慢”和“静差消不掉”。这一章我把这些年踩过的坑总结成一张速查表,再展开讲几个典型场景。
4.1 高频振荡和低频振荡怎么区分
很多人一听振荡就慌了,其实振荡分好几种,处理方式完全相反:
| 现象 | 可能原因 | 处理方式 |
|---|---|---|
| 高频抖动(执行机构快速震动、有嗡嗡声) | D项过大、噪声放大、采样频率太高 | 减小Kd,给微分加滤波 |
| 等幅振荡(波形均匀、周期固定) | Kp过大,系统接近临界稳定 | 减小Kp 20%~30% |
| 低频摆动(周期长、幅度缓慢增大或衰减) | Ki过大,积分作用过强 | 减小Ki,增大积分时间 |
| 系统发散不振荡(输出一路冲到底) | 参数组合严重不合理或系统本身不稳定 | 先回安全范围,重新整定 |
| 响应慢但稳定 | Kp太小或Td不合适 | 增大Kp,适当增加微分 |
这个表看起来简单,但现场最容易搞反。我遇到过工程师把积分引起的低频摆动当成比例振荡来处理,猛减Kp,结果系统变得更慢了,摆动反而更明显。所以判断振荡性质之前,先看振荡周期。周期长(几十秒甚至几分钟)的,先怀疑积分;周期短(零点几秒到几秒)的,先怀疑比例和微分。
4.2 执行机构频繁动作、阀门磨损怎么办
现场最常见的投诉是“阀门一直在动,很快就会坏”。这种情况多数是D项或测量噪声引起的,也不排除P过大导致系统在稳态附近来回调整。
排查思路是:
- 先看测量信号本身是否有噪声——把控制器切到手动手动模式,观察过程变量曲线是否毛糙。如果测量曲线本身就很毛糙,优先处理测量问题(加滤波、加防抖延迟、检查接地屏蔽)。
- 再看控制输出是否在手动模式下平稳——手动输出平稳但自动输出抖动,说明是控制器参数或反馈问题。
- 最后调整策略——减小D项、加死区、加输出变化率限幅。
在工业现场,我强烈建议给控制输出加一个变化率限幅。也就是说,每次控制量的变化幅度不能超过某个最大值。这个功能的本质是给控制动作加一个“速度限制”,牺牲一点响应的快速性,换来执行机构的寿命和系统的平稳性。
4.3 静差一直消不掉是为什么
积分加了,误差还是存在,有几个常见原因:
- 积分限幅设得太小,积分输出被限制住,无法继续累积以消除误差。
- 积分分离的阈值设得太大,误差一直在阈值附近徘徊,积分始终没被激活。
- 执行机构已经饱和,比如阀门已经开到底了,控制器输出再大也没用。这时候你得检查执行机构的选型和系统容量问题,而不是继续调PID。
- 测量值本身有偏,传感器零点飘了。这个很隐蔽,明明控制器算出来输出是对的,但测量就是不准确,误差实际上不在控制回路里。
排查静差问题的时候,我建议你先切手动模式,手动给一个固定输出,看执行机构的实际效果和测量值的响应是否匹配。如果手动模式下输出和测量值之间的关系就不对,那问题大概率出在传感器或者执行机构上,PID参数再怎么调都白搭。
4.4 参数整定的“玄学问题”:为什么同样参数不同批次产品表现差
这个问题的根源不在PID参数,而在被控对象的一致性上。每个电机、阀门、加热器的特性都有差异,即使是同型号产品,增益和时间常数也会有不同。PID参数是基于某个标称模型整定的,一旦对象参数偏移,闭环特性就会变化。
解决办法有两个方向:
一是提高参数鲁棒性。整定的时候不要以某一个工作点为唯一目标,要给系统加不同幅值的阶跃测试,找到一个在多种工况下都不振荡、性能可接受的折中参数。
二是采用自整定或自适应控制。现代很多控制器内置了自整定功能,它会自动对被控对象做一次辨识,然后根据辨识结果整定参数。更进一步的就是模型参考自适应控制(MRAC)、自校正控制等。这些属于现代控制理论的范畴,理论体系更庞大,但基本思想还是“先建模再算控制率”——本质上和我们前面做的事是一样的。
4.5 低频干扰和负载突变怎么应对
负载突变是最考验控制器的场景。比如一个卷绕系统,材料卷径越来越粗,转动惯量越来越大;或者一个加热系统,突然加入了冷料。这时候P和I如果来不及响应,温度会产生较大波动。
一种有效的策略是前馈补偿。如果负载变化是可测量的(比如材料速度、进料量),你可以把这路信号直接引入控制器输出端,提前做一个补偿,而不需要等误差出现再去调节。PID负责“反馈”兜底,前馈负责“预测”提前量,两者结合效果远好于单独加大PID增益。
前馈补偿的系数不一定要精确,哪怕补偿掉50%的干扰,剩下的交给PID处理,也比全让PID扛着强得多。
5. 进阶视角:从PID走向现代控制理论
写到这里,我想再往上拔一层。PID虽然好用,但它本质上是一个“单输入单输出、线性近似、固定参数”的控制器。面对一些更复杂的系统,它是吃力不讨好的。
5.1 什么时候该换思路了
如果你手头是这样一个系统:多输入多输出(MIMO)、强耦合、非线性明显、约束条件多、参数时变,这时候PID会变得非常难调。比如四旋翼的姿态控制,四个通道之间强耦合,用PID也能飞,但调起来极度痛苦;比如机器人关节的变负载控制,PID参数在空载时调好,抓了重物就又不行了。
这个时候,现代控制理论就该登场了。状态空间描述、能控能观性分析、极点配置、LQR最优控制、卡尔曼滤波状态估计、模型预测控制(MPC),这些工具能够系统地处理上述复杂问题。它们的思想是:把系统的所有内部状态都纳入考量,而不是只看输入输出这一个“外壳”。
5.2 PID在现代控制理论的坐标
但那是不是说PID就过时了?当然不是。工业现场超过90%的控制回路依然是PID,原因很简单:它简单、可靠、鲁棒、工程人员都懂。
现代控制理论和PID不是对立的。你去看那些先进控制算法,很多在最终工程实现时,底层还是会保留PID或者PID的结构。LQR算出来的最优状态反馈,其实可以看作一个广义的P和D的组合。MPC的底层也需要一个被控对象的预测模型,而在模型失配时,依然需要通过反馈修正来兜底。
我认为对工程师来说,正确的路径是:先把PID这层天花板捅破,理解反馈控制的本质,然后再以此为跳板去学习现代控制理论。你会发现状态空间的概念和PID里的“P、I、D每一项都在操纵系统状态”是一脉相承的,无非是描述方式更结构化、处理能力更强了。
5.3 推荐的学习路径和参考资料
如果你想从PID往现代控制理论迈进,我推荐这样一条路径:
- 把经典控制理论吃透:传递函数、根轨迹、频域分析(Bode图、Nyquist判据)、校正网络。这是理解一切控制算法的基础。
- 进入状态空间:从单输入单输出到多输入多输出,理解状态变量、状态转移矩阵、可控性、可观性。
- 掌握最优控制:LQR、MPC的基本思想和求解方法。
- 融入系统辨识:如果模型都建不准,后面的一切算法都是空谈。
至于参考书,经典教材《自动控制原理》(胡寿松版或者Katsuhiko Ogata的《现代控制工程》)都可以作为地基。如果想看现代控制理论的系统讲解,推荐《线性系统理论》(郑大钟)或者《Modern Control Systems》(Richard C. Dorf)。这些书可以配合仿真工具(MATLAB/Simulink、Python control库)边学边验证,光看不练很难形成感性认识。
我个人经验是:看一遍书不如跑一遍仿真,跑一遍仿真不如上一个真实平台试一次。理论的每个结论,你都要亲手在某个系统上验证过,才真正算你的东西。
调PID这件事,入门只需要一个小时背口诀,但真的想调明白,需要沉下心去啃一啃控制理论。很枯燥,但值得。等你某天调完参数不再靠猜,而是能直接说出“这个峰是闭环零点造成的”“这个振荡频率和相位裕度对得上”的时候,你就算真正上了道。