我要提问
ARTICLE DETAIL

资讯详情

前沿编程新知与开发实战干货的深度解读。

自动控制原理入门:从反馈控制到数学模型的完整梳理

自动控制原理入门:从反馈控制到数学模型的完整梳理 很多人第一次翻开《自动控制原理》教材第一节课就被“自动控制的一般概念”和“数学模型的建立”这两块内容砸晕。明明每个字都认识串起来却完全不知道在说什么反馈、偏差、被控对象、传递函数……直到后来自己动手做过几个控制系统再回头看才发现这门课真正的逻辑非常朴素——先搞清楚什么叫自动控制再把物理世界翻译成数学语言。这篇笔记就是沿着这条主线整理的前半部分梳理自动控制的一般概念后半部分说清控制系统的数学模型是怎么搭起来的。适合正在啃教材、觉得概念零散、想建立整体框架的初学者也适合做项目时快速回顾基础知识。1. 自动控制的起点一个系统什么时候才算“自动”1.1 从人工控制到自动控制把人的工作拆给机器讲自动控制之前先想一个最简单的水箱水位例子。如果让你手动把水箱水位保持在50%你会怎么做你要先用眼睛读刻度知道当前水位是35%心里跟目标值50%比一下发现差了15%然后伸手去开大进水阀等水位到了接近50%再慢慢关小阀门。整个过程看起来平常但拆开就是三个动作观测、判断、执行。自动控制干的事就是把这三步分别交给测量元件、控制装置和执行机构。眼睛换成液位传感器大脑换成控制器手换成调节阀。这时候系统就能自己完成“保持水位50%”这件事了。这里有几个贯穿全书的概念必须先立住被控对象被控制的设备或过程比如水箱、电机、加热炉。被控量你真正关心的输出量比如水位、转速、温度。给定量/参考输入希望被控量达到的值比如水位50%、转速1500转。扰动让被控量偏离期望值的外部因素比如用水量突然变大、电网电压波动。控制量控制器输出给执行机构的量比如阀门开度、电机电压。你会发现后面所有章节的推导本质上都绕不开这五个词。学控制理论最大的门槛不是数学而是你能不能把任何一个实际问题都精准地映射到这五个词上。1.2 开环控制与闭环控制一个反馈带来的质变根据控制信号的通路控制系统可以分为开环控制和闭环控制。这个分类几乎是全书的起点。开环控制的结构非常简单输入直接经过控制器和执行机构到达被控对象输出端不再回头影响输入。经典例子是定时洗衣机——你设定好洗涤时间电机就按程序正转反转洗完之后停。它不管衣服到底洗干净没有。闭环控制则多了一条从输出端返回到输入端的通路这条通路叫反馈。电热水器就是典型温度传感器测到水温和目标温度比较有偏差就继续加热到温度了就停止。整个过程不需要人干预系统自己在修正。两者的差异我用一张表说明对比项开环控制闭环控制结构单向通路无反馈有反馈通路精度低受扰后无法修正高按偏差自动修正成本低较高需要传感器和比较环节稳定性不存在稳定问题可能产生振荡甚至不稳定适用场景扰动小、精度要求低的场合扰动大、性能要求高的场合典型例子步进电机定位、普通程序控制空调温控、电机调速、无人机姿态开环并不等于“落后”。精度要求不高、外部干扰又可控的场合开环结构简单可靠、成本低很多工业设备至今仍在使用。但如果你面临的是负载突变、电源波动、参数漂移开环就无能为力了这时候必须上闭环。1.3 为什么负反馈是闭环系统的灵魂闭环里用的反馈绝大多数是负反馈也就是把输出信号反相后与给定值做比较。比较结果是偏差偏差 给定值 - 反馈值。系统按偏差工作偏差大控制作用就强偏差小了控制作用就减弱偏差为零控制作用稳定下来。正因为负反馈天生就有“自己跟自己过不去”的纠错能力它才能自动抑制扰动的影响也能在被控对象参数发生变化时维持输出基本不变。代价是什么代价是引入了稳定性问题。负反馈信号绕一圈回来如果相位不对可能变成正反馈——不但不纠偏反而越纠越偏最终振荡起来。所以“闭环”不是灵丹妙药它把开环没有的稳定性问题一并带进来了。这一点在后面分析系统动态特性时会成为贯穿始终的主线。顺带提一句正反馈也不是毫无用处很多振荡器、信号发生器就是靠正反馈工作的。但在自动控制的主回路里几乎总是负反馈这一点建议直接记住。2. 看穿一台控制设备组成、分类与信号流向2.1 典型控制系统的“六件套”几乎所有闭环控制系统都可以抽象成同一套结构。教科书上通常列出一大串元件名称看着吓人其实就六类给定元件给出参考输入比较元件完成给定值与反馈值的相减串联在校正位置的是控制器或校正装置它后面跟着放大元件和执行机构执行机构直接驱动被控对象而测量元件从输出端取样并送回比较元件。用一个蒸汽加热器温度控制来串一遍你设定温度80℃这个设定值由给定电位器给出温度传感器测到实际温度75℃反馈电压和设定电压在比较器里相减得到偏差信号偏差经过控制器运算后送给晶闸管调压器改变加热丝功率温度上升传感器反馈值变大偏差变小直到稳定在80℃附近。这里面有一个很容易被忽略的关键点测量元件的精度决定了整个系统的控制上限。你控制器算得再准执行机构做得再精细如果温度传感器本身误差有±3℃那系统最终的稳态精度也最多就±3℃。我做项目时习惯先确认“测得到、测得准”再去设计控制器这能省下后面一大半调试时间。2.2 从三个维度看控制系统的分类教材上给控制系统分类的角度很多没必要一次全记住但下面三个维度一定要留个印象按给定信号的形式分恒值控制系统给定值是固定的任务是克服扰动把被控量稳住。稳压电源、恒温箱、调速系统都属于这一类。随动控制系统给定值不断变化要求输出快速、准确地跟随给定值。雷达天线跟踪目标、伺服电机定位都算。程序控制系统给定值按预先设定的时间程序变化比如数控机床按G代码走刀。按系统是否满足叠加原理分线性系统可以用线性微分方程描述满足齐次性和叠加性。经典控制理论研究的大多数对象都假设是线性系统。非线性系统含有饱和、死区、间隙、摩擦等非线性特性叠加原理失效分析方法完全不同。按信号时间特性分连续系统各处信号都是连续时间函数。离散系统系统中存在采样开关或数字计算机信号以脉冲序列或数字序列形式传递。现在很多实际系统都是“数字控制器 连续被控对象”的混合结构分析时通常用采样周期把连续对象离散化再统一处理这也是后面离散控制章节的入口。2.3 拿到一台设备先回答三个问题在项目里看到一个控制系统我习惯先做一道“三问”被控对象到底是什么是电机轴、温度场还是液体流量被控量是哪个物理量转速、位移、温度还是压力执行机构和测量元件分别在哪是伺服电机加编码器还是加热丝加热电偶这三个问题回答清楚了控制系统的框架就自动浮出来了。举两个例子。无人机俯仰姿态控制被控对象是机体被控量是俯仰角执行机构是舵机/电机带动螺旋桨测量元件是陀螺仪和加速度计。变频空调被控对象是房间空气被控量是室内温度执行机构是变频压缩机测量元件是温度传感器。你可以试试随便找一个带自动功能的设备只要能答全这三问它的控制逻辑大概就懂了一半。3. 控制系统的性能尺度稳、准、快3.1 稳定性一切性能的前提一个控制系统连稳定都做不到后面谈什么都白搭。稳定性说的是系统在扰动作用下偏离了原来的平衡状态当扰动消失后它能自动回到原来的平衡状态。最常见的生活类比是小球。凹面底部的小球你推它一下它滚出去又滚回来最终停在最低点这是稳定的平衡状态。凸面顶部的小球你轻轻一推就滚走回不来这就不稳定。系统不稳定时哪怕输入只有一点点变化输出也可能越摆越大最终撞到物理限幅或者彻底发散。在经典控制理论里稳定性判定最终会归结到特征方程的根在复平面上的位置也就是后面根轨迹法和奈奎斯特判据要解决的问题。现在只需要先有这个概念稳定性描述的是系统固有的动态性质跟输入信号是什么形式基本无关。3.2 动态性能从阶跃响应看“快”和“稳”给一个系统输入一单位阶跃信号观察它的输出响应曲线就能看出系统的动态品质。常用的指标包括上升时间输出从稳态值的10%上升到90%所需的时间也有定义成从0到第一次到达稳态值的时间它反映了响应的快慢。峰值时间输出到达第一个峰值的时间。超调量输出最大值超出稳态值的百分比。超调大说明系统“冲过头”了动态过程不那么平稳。调节时间输出进入并停留在稳态值±5%或±2%误差带内所需的最短时间它是动态过程总体快慢的综合指标。振荡次数调节时间内输出波动的次数。这几个指标之间的关系其实是一体两面。系统阻尼偏小时超调量大、振荡次数多但上升时间短阻尼偏大时响应平稳但慢吞吞。实际工程里常见的选择是把阻尼比调在0.4到0.8之间兼顾快速性和平稳性。3.3 稳态精度系统跑完多久才能“准”动态过程结束之后系统进入稳态这时输出与给定值之间往往还残留一个差值叫稳态误差。稳态误差为零的系统当然最理想但实际系统因为增益有限、结构限制通常达不到。这里引出控制系统“型别”的概念开环传递函数里有几个积分环节系统就是几型系统。0型系统跟踪阶跃输入时有有限稳态误差1型系统跟踪阶跃输入误差为零但跟踪斜坡输入仍有常数误差2型系统跟踪斜坡输入误差为零跟踪加速度输入有常数误差。换句话说积分环节越多系统消除稳态误差的能力越强但稳定性也越容易被破坏。这个“型别”概念跟后面静态误差系数的计算是绑在一起的现在先理解成“系统吃不吃得下某种输入信号”就行。3.4 稳、准、快是三个互相打架的指标初学者最容易踩的坑是以为这三个指标可以同时做到最好实际上它们彼此制约提高开环增益可以减小稳态误差但增益一大系统阻尼比下降超调量增大甚至不稳定。加入积分环节能消除某个典型输入的稳态误差但积分环节带来相位滞后通常会让系统的稳定性恶化容易振荡。想加快响应速度减小上升时间往往就要牺牲超调量和调节时间。我用PID参数整定举个直观例子。温控系统P值太小温度慢慢蹭上去半天到不了目标P值调大升温快了但温度开始过冲反复振荡加I之后静差没了但超调又变大再加D提前刹车才把振荡压住。整定的过程本质就是在稳准快之间找一个平衡点不存在一个参数能把这三点同时推到最优。4. 从物理系统到数学模型微分方程的建立4.1 为什么要绕这么大一圈去建模真实系统是看得见摸得着的为什么非要用数学式子去描述它因为不写成数学模型你就没法做定量计算没法预测系统在某种输入下的响应。就像医生不能光靠一句“感觉不太好”来诊断必须看体温、血压、血液指标这些量化数据控制工程师也需要把系统的动态行为用数学语言固定下来才能分析、仿真、设计控制器。控制领域绝大多数数学工具从拉普拉斯变换到传递函数从根轨迹到频域分析全都建立在被控对象有数学模型这个前提上。模型错了后面一切分析都是空中楼阁。4.2 列写微分方程的四个通用步骤用机理法建模本质上就是按物理定律列方程步骤非常固定明确输入量和输出量。先分清谁是原因、谁是结果这是建模的边界条件。根据物理规律列写原始方程。力学系统用牛顿第二定律电路系统用基尔霍夫定律热力系统用能量守恒定律流体系统用流量连续性方程。消去中间变量。把方程组里不想要的中间量一点点带掉只保留输入、输出以及系统参数。整理成标准形式。把输出量及其各阶导数放左边输入量放右边系数归一化写成类似m y c y k y F(t)的形式。第四步非常重要标准形式能让后面求传递函数时直接“照抄”系数还能顺便判断系统阶数。4.3 力学系统实例质量—弹簧—阻尼几乎所有机械振动系统最后都会化成一个质量-弹簧-阻尼模型它的应用范围从汽车悬挂到建筑抗震都在覆盖。假设外力 F(t) 作用在质量 m 上弹簧刚度 k阻尼系数 c输出是位移 y(t)。对质量块做受力分析外力 F(t) 是输入弹簧产生与位移成正比的恢复力 ky阻尼器产生与速度成正比的阻力 c y根据牛顿第二定律合力等于 m y。于是得到方程m y(t) c y(t) k y(t) F(t)每一项的物理意义都清晰对应。二阶系统之所以在工程里到处都是就是因为大量系统同时包含“储能”和“耗能”两个要素储能对应惯性项或弹性项耗能对应阻尼项自然就凑出二阶微分方程。4.4 电学系统实例RLC电路再看一个外行觉得完全不同、但数学家一看就笑的电路例子。RLC串联电路输入电压 u(t)输出电容两端电压 u_c(t)。基尔霍夫电压定律给出u(t) R i(t) L di/dt u_c(t)再由电容的电流关系i C du_c/dt代进去整理得到LC u_c(t) RC u_c(t) u_c(t) u(t)把这个式子跟质量-弹簧-阻尼的方程对比一下电感对应质量电阻对应阻尼电容的倒数对应弹簧刚度。两边结构完全一样只是物理量替换了一下。这种“力-电压类比”非常有用因为你在一个领域积累的直觉可以迁移到另一个看起来毫无关系的领域。4.5 线性化为什么教材都围绕线性系统转上面两个例子是理想的线性模型但真实世界几乎没有绝对的线性。弹簧在大载荷下会非线性电阻会随温度变化阀门流量特性本身就不是直线。如果方程是非线性的经典控制理论那一整套解析工具基本都用不了了。所以工程上引入了一个非常重要的手段在工作点附近做线性化处理。把非线性函数在平衡工作点处做泰勒展开保留一阶项忽略高阶小量得到一个小偏差范围内的线性方程。这个做法有一个必须遵守的前提系统只能在工作点附近做小范围运动。如果被控量来回大跳、结构上有不可忽略的饱和特性或死区线性化模型就会失真。比如一个继电器控制系统输出只有开和关两个状态你怎么线性化都不像一条直线这种对象就不能硬套线性模型。5. 拉普拉斯变换与传递函数数学模型的“工作语言”5.1 拉普拉斯变换到底解决了什么问题微分方程虽然能精确描述系统但解起来太麻烦。尤其遇到高阶系统、初始条件复杂的情况手动解微分方程解到怀疑人生。拉普拉斯变换的核心作用是把时域里的微分方程变成复频域里的代数方程。原来要做的微积分运算全部变成关于复数变量 s 的乘除法。解完代数方程之后再反变换回时域就能得到系统的时间响应。初学阶段真的不需要死记那个定义式更实用的做法是记一张常用变换表时域函数 f(t)拉氏变换 F(s)单位冲激 δ(t)1单位阶跃 1(t)1/s单位斜坡 t1/s^2指数函数 e^{-at}1/(sa)真正做分析时手算反变换也是查表加部分分式展开。脑子里有这张表后面所有传递函数相关的推导就顺了。5.2 传递函数系统结构的“身份证”在零初始条件下对系统的线性定常微分方程两边做拉普拉斯变换整理后得到输出拉氏变换 Y(s) 与输入拉氏变换 R(s) 之比G(s) Y(s) / R(s)这个 G(s) 就叫传递函数。它有两条重要性质值得单独划重点第一传递函数只取决于系统本身的结积参数与输入信号无关。同一个系统不管输入是阶跃、斜坡还是正弦传递函数都不变。它是系统的固有属性相当于系统的“身份证”。第二传递函数分母多项式叫特征多项式分母等于零就是特征方程特征方程的根决定了系统的稳定性。以后学劳斯判据、根轨迹、奈奎斯特判据追根溯源都是围着特征方程转。这里还想多说一个容易踩的坑教材里为了简化计算经常允许分子分母约掉公共因子。但在工程实际中约掉的零极点可能意味着某些内部状态从输入端不可控制或者从输出端不可观测直接约分会掩盖真实系统的隐患。初学阶段跟着教材约分没问题做项目写报告时至少要意识到这一步不是无代价的。5.3 典型环节控制系统的“零件库”任何复杂系统传递函数拆开之后都是由若干典型环节组合而成的。熟悉这些环节等于手里有了一套标准零件库。环节名称传递函数时域响应特征常见物理实例比例环节K输出与输入成比例、无延迟电位器、齿轮副、放大器惯性环节K/(Ts1)阶跃响应指数上升时间常数TRC电路、电机发热过程积分环节K/s阶跃响应随时间直线上升水箱液位、电容充电微分环节Ks输出正比于输入变化率测速发电机近似振荡环节ω_n^2/(s^22ζω_n sω_n^2)阶跃响应可能振荡取决于ζ质量-弹簧-阻尼、RLC电路延迟环节e^{-τs}输出延迟τ后才开始响应管道传输、输送带一阶微分环节K(Ts1)输出含输入导数项RC超前校正网络这里有个值得说的细节纯粹的微分环节在物理上无法独立实现因为理想微分器会放大高频噪声实际做到的都是“带惯性的微分”。学这几类环节时最好把每个环节都对应到一个你能想到的实物上否则后面方块图化简你就是会算也不知道算出来的东西对不对。5.4 方块图化简与闭环传递函数把多个环节用信号线连起来就成了方块图。方块图里有四种元素信号线、表示环节的方框、表示信号相加的求和点、表示信号分路的分支点。化简规则不多三条够用串联环节相乘两个传递函数首尾相接等效传函为G1(s) * G2(s)。并联环节相加等效传函为G1(s) G2(s)。负反馈连接前向传函 G(s)反馈传函 H(s)等效闭环传函G(s)/(1G(s)H(s))。举一个非常常见的例子电机转速开环特性近似为一阶惯性K/(Ts1)加入单位负反馈后闭环传递函数为G(s)/(1G(s)) K/(Ts1) / (1 K/(Ts1)) K/(Ts1K)整理一下闭环系统仍然是一个惯性环节时间常数变成了T/(1K)。这意味着什么加入负反馈之后系统响应变快了因为等效时间常数变小了但稳态增益也变成了K/(1K)小于1说明跟着跟着就会差一点。想消除这个静差就得加入积分环节提升系统型别。这一小段分析已经把“反馈改变系统动态性能”这个核心结论清清楚楚地推到公式层面了。实际化简方块图时建议每做一步就检查一次量纲至少确认信号在求和点处是同一物理量、单位一致。这是新手最容易忽略的坑。6. 建模实操中的坑与我的使用习惯6.1 三个让你白干一夜的小问题理论推导做得再漂亮落到实际建模和仿真时翻车的往往是几个“小问题”。单位不统一。我见过真实项目里有人把电机轴惯量用kg·cm^2表示而力矩常数用N·m/A最后算出来的加速度差了好几个数量级。建模前先把所有物理量统一到国际单位制转速用 rad/s惯量用 kg·m^2力矩用 N·m这是最省事的办法。参考方向不统一。力学系统里力的正方向、位移正方向、速度正方向要一致电路系统里电流参考方向、电压参考方向要一致。建模时一旦方向反了方程的符号就全乱闭环一加就直接发散。初始条件遗漏。传递函数是在零初始条件下定义的但实际系统上电时可能有初速度、有初始位移、电容有初始电压。这些初值不会进入传递函数但会影响仿真初始响应对比理论曲线时长就对不上。6.2 模型参数从哪里来三条路径微分方程的形式容易搭困难的是参数。对一个一阶惯性环节K/(Ts1)K 和 T 从哪来第一条路是查厂家资料和铭牌。电机有额定转矩、额定转速加热器有功率这些参数可以直接写进模型。但要注意厂家给的都是标称值实际设备可能存在 ±10% 的偏差。第二条路是实验辨识。最经典的是阶跃响应法给系统输入一个阶跃信号记录输出曲线。对一阶惯性环节输出从初始值上升到稳态值的63.2%处所花的时间就是时间常数 T稳态输出增量除以输入阶跃幅值就是比例系数 K。这个方法的优点是不需要任何额外设备一个数据采集器加一个阶跃激励就够了。第三条路是仿真拟合法。在仿真软件里搭建模型调参数让仿真响应跟实测数据拟合目标函数可以是绝对误差平方和。这本质上是一个优化问题有经验的人一两轮就能调出合理的参数。6.3 哪些因素可以忽略什么时候不能忽略建模不是越细越好关键是“用得上”。如果项目关心的是工作频率范围附近的动态那些远离这个频段的小惯性环节可以合并成一个等效小时间常数因为它们在感兴趣的频段内影响很小。但有些情况绝对不能拍脑袋忽略干摩擦和非线性死区在低速精密运动控制里是致命问题会引起爬行和稳态极限环振荡机械传动间隙在换向时会产生回程误差如果控制器带宽又高很容易激发振荡长管道传输的纯延迟环节在高精度温度控制里会导致控制严重滞后忽略延迟会让你的仿真“过分乐观”。所以“模型忽略什么东西”是一个取决于任务目标的判断。同一个水箱做液位控制时可以把阀门动态忽略做快速随动时就得算上执行机构的响应时间。6.4 从模型到仿真验证的完整闭环建好模型之后我习惯按这个顺序验证先搭仿真模型跑开环阶跃响应跟理论推导的解析解对比确认微分方程和传递函数没有抄错。加上负反馈观察闭环响应是否跟预期的超调量、调节时间一致。把仿真结果跟实际系统的实验数据放到同一张图上比看趋势对不对。如果差距明显先回查机理假设是不是有遗漏而不是盲目去调参数凑数。参数修正后重新仿真再把可能的工作点偏移范围扫一遍确认模型在该范围内都可用。这一步的重要性很容易被低估。很多时候模型推完了公式也对但塞进仿真就发散最后查到原因往往是求和点符号反了或者单位没统一。仿真存在的意义就是让你用一个低成本的虚拟环境把模型里的低级错误全部筛掉等到上真机的时候你已经对系统行为有准确的预期。另外补充一个长期实践后的体会对同一个被控对象因为分析目的不同可以建出好几个不同的模型。研究稳态精度时可以用简化线性模型研究抗扰特性时可能得加上扰动通道的模型研究极限工况时又得考虑饱和非线性。模型不是越复杂越好而是越匹配当前问题越好。如果你读到这儿正准备开始做第一个控制系统的建模练习我的建议是找一台你身边最常见的设备比如家里的风扇或者加热器用三问法拆解它的控制结构再用机理法写出它的微分方程最后用仿真或者实际数据验证一遍。这个过程走通一次你对“自动控制的一般概念”和“控制系统数学模型”这两块内容的感受会比翻十遍教材都深刻。
返回列表