PID控制&Simulink&标定

目录

PID控制——Simulink模型篇

 序言

PID控制器的设计

PID控制——控制函数解析篇

1、问:什么是PID

2:问:PID三项的作用

3:总结一下PID

4:聊聊PID公式

5:详谈 比例、积分、微分 三个环节的作用

6:举个例子

6:Kp、Ki、Kd

7:PID的标定


PID控制——Simulink模型篇

 序言

        当今的自动控制技术都是基于反馈的概念;(控制理论的基石——反馈)反馈理论的要素包

括三个部分:测量、比较和执行。其中,测量关心的变量,与期望值相比较,用这个误差纠正、调

节控制系统的响应。它由于用途广泛、使用灵活,已有系列化产品,使用中只需设定三个参数

(Kp, Ki、Kd)即可。

        虽然很多工业过程是非线性或时变的,但通过对其简化可以变成基本线性和动态特性不随时

间变化的系统,这样PID就可控制了;PID参数较易整定(即:PID参数Kp, Ki、Kd可以根据过程

的动态特性及时整定)


PID控制器的设计

1:PID控制原理图

PID控制器结构框图

2:PID控制器传递函数的一般表达式(Simulink)

其中:Kp为比例增益;Ki为积分增益;Kd为微分增益

调整PID参数,以满足系统要求,从而使被控对象有更优良的动态、静态相应

比例环节:根据偏差量成比例的调节系统控制量,以此产生控制作用,减少偏差
        作用:增加系统响应的速度
        比例系数越大,系统响应越快,但系统容易产生超调
        比例系数过小,会影响系统调节的精度,系统响应时间变长,系统的动态响应变差

积分环节:用于消除静差,提高系统的无差度
        积分时间常数决定着积分环节作用的强度
        但是积分作用过强的话会影响系统的稳定性

微分环节:根据偏差量的变化趋势来调节系统控制量
        在偏差信号发生较大变化之前,提早引入一个校正信号
        作用:加快系统动作速度,减少调节时间的作用
        调节微分参数需要注意微分作用太强可能会引起系统振荡

SUM:
P——比例控制系统的响应快速性,快速作用于输出,好比"现在"
(现在就起作用,快)
I——积分控制系统的准确性,消除过去的累积误差,好比"过去"
(清除过去积怨,回到准确轨道)
D——微分控制系统的稳定性,具有超前控制作用,好比"未来"
(放眼未来,未雨绸缪,稳定才能发展)


PID系统仿真

1:控制对象为传递函数

2:用Simulink建立由PID控制器组成的系统仿真模型如下图所示

其中:比例增益Kp取值0.04;积分增益取值0.005;微分增益取值1.2;选用的输入是单位阶跃信号

PID_Simulink_模型


 



PID控制——控制函数解析篇

1、问:什么是PID

        PID:就是 “比例(Proportional)、积分(Integral)、微分(Derivative)”;是一种常见的

“保持稳定”的控制算法;从信号变换的角度而言,超前校正(Now)、滞后校正(Past)、滞后-

超前校正(Future)可以总结为比例、积分、微分三种运算及其组合。

2:问:PID三项的作用

对P:

增大比例系数P将加快系统的响应,它的作用是输出值较快,但不能很好稳定在一个理想的数;

不良的结果是虽较能有效的克服扰动的影响,但有余差出现,过大的比例系数会使系统有比较大的

超调,并产生振荡,使稳定性变坏。

对I:

积分能在比例的基础上消除余差,它能对稳定后有累积误差的系统进行误差修整,减小稳态误差。

对D:

微分具有超前作用,对于具有容量滞后的控制通道,引入微分参与控制,在微分项设置得当的情况

下,对于提高系统的动态性能指标,有着显著效果,它可以使系统超调量减小,稳定性增加,动态

误差减小。

3:总结一下PID

P—比例控制系统的响应快速性,快速作用于输出,好比"现在"
(现在就起作用,快)


I—积分控制系统的准确性,消除过去的累积误差,好比"过去"
(清除过去积怨,回到准确轨道)


D—微分控制系统的稳定性,具有超前控制作用,好比"未来"
(放眼未来,未雨绸缪,稳定才能发展)


(当然这个结论也不可一概而论)

4:聊聊PID公式

常规的模拟PID系统原理框图

PID控制函数

其中:

Kp:比例增益,调适参数

Ki:积分增益,调适参数

Kd:微分增益,调适参数

e:误差=设定值(SP)- 回授值(PV)

t:当前时间

5:详谈 比例、积分、微分 三个环节的作用

比例环节 :

        成比例地反映控制系统的偏差信号e(t),偏差一旦产生,控制器立即产生控制作用,以减小偏

差。当仅有比例控制时系统输出存在稳态误差(Steady-state error)。P参数越大比例作用越强,

动态响应越快,消除误差的能力越强。但实际系统是有惯性的,控制输出变化后,实际y(t)值变化

还需等待一段时间才会缓慢变化。由于实际系统是有惯性的,比例作用不宜太强,比例作用太强会

引起系统振荡不稳定。

        P参数的大小应在以上定量计算的基础上根据系统响应情况,现场调试决定,通常将P参数由

大向小调,以能达到最快响应又无超调(或无大的超调)为最佳参数。

优点:调整系统的开环比例系数,提高系统的稳态精度,减低系统的惰性,加快响应速度。

缺点:仅用P控制器,过大的开环比例系数不仅会使系统的超调量增大,而且会使系统稳定裕度变

           小,甚至不稳定。


积分环节

        控制器的输出与输入误差信号的积分成正比关系。主要用于消除静差,提高系统的无差度。

积分作用的强弱取决于积分时间常数T,T越大,积分作用越弱,反之则越强。

  为什么要引进积分作用?

        比例作用的输出与误差的大小成正比,误差越大,输出越大,误差越小,输出越小,误差为

零,输出为零。由于没有误差时输出为零,因此比例调节不可能完全消除误差,不可能使被控的

PV值达到给定值。必须存在一个稳定的误差,以维持一个稳定的输出,才能使系统的PV值保持稳

定。这就是通常所说的比例作用是有差调节,是有静差的,加强比例作用只能减少静差,不能消除

静差(静差:即静态误差,也称稳态误差)。

        为了消除静差必须引入积分作用,积分作用可以消除静差,以使被控的y(t)值最后与给定值一

致。引进积分作用的目的也就是为了消除静差,使y(t)值达到给定值,并保持一致。

        积分作用消除静差的原理是,只要有误差存在,就对误差进行积分,使输出继续增大或减

小,一直到误差为零,积分停止,输出不再变化,系统的PV值保持稳定,y(t)值等于u(t)值,达到

无差调节的效果。但由于实际系统是有惯性的,输出变化后,y(t)值不会马上变化,须等待一段时

间才缓慢变化,因此积分的快慢必须与实际系统的惯性相匹配,惯性大、积分作用就应该弱,积分

时间I就应该大些,反之而然。如果积分作用太强,积分输出变化过快,就会引起积分过头的现

象,产生积分超调和振荡。通常I参数也是由大往小调,即积分作用由小往大调,观察系统响应以

能达到快速消除误差,达到给定值,又不引起振荡为准。

        对一个自动控制系统,如果在进入稳态后存在稳态误差,则称这个控制系统是有稳态误差的

或简称有差系统(System with Steady-state Error)。为了消除稳态误差,在控制器中必须引入“积

分项”。积分项对误差取决于时间的积分,随着时间的增加,积分项会增大。这样,即便误差很

小,积分项也会随着时间的增加而加大,它推动控制器的输出增大使稳态误差进一步减小,直到等

于零。因此,比例+积分(PI)控制器,可以使系统在进入稳态后无稳态误差。PI控制器不但保持了

积分控制器消除稳态误差的“记忆功能”,而且克服了单独使用积分控制消除误差时反应不灵敏的缺

点。

优点:消除稳态误差。
  
缺点:积分控制器的加入会影响系统的稳定性,使系统的稳定裕度减小。


微分环节

        反映偏差信号的变化趋势,并能在偏差信号变得太大之前,在系统中引入一个有效的早期修

正信号,从而加快系统的动作速度,减少调节时间。在微分控制中,控制器的输出与输入误差信号

的微分(即误差的变化率)成正比关系。

        为什么要引进微分作用?

        前面已经分析过,不论比例调节作用,还是积分调节作用都是建立在产生误差后才进行调节

以消除误差,都是事后调节,因此这种调节对稳态来说是无差的,对动态来说肯定是有差的,因为

对于负载变化或给定值变化所产生的扰动,必须等待产生误差以后,然后再来慢慢调节予以消除。

        但一般的控制系统,不仅对稳定控制有要求,而且对动态指标也有要求,通常都要求负载变

化或给定调整等引起扰动后,恢复到稳态的速度要快,因此光有比例和积分调节作用还不能完全满

足要求,必须引入微分作用。

        比例作用和积分作用是事后调节(即发生误差后才进行调节),而微分作用则是事前预防控制,

即一发现y(t)有变大或变小的趋势,马上就输出一个阻止其变化的控制信号,以防止出现过冲或超

调等。D越大,微分作用越强,D越小,微分作用越弱。系统调试时通常把D从小往大调,具体参

数由试验决定。

        如:由于给定值调整或负载扰动引起y(t)变化,比例作用和微分作用一定等到y(t)值变化后才进

行调节,并且误差小时,产生的比例和积分调节作用也小,纠正误差的能力也小,误差大时,产生

的比例和积分作用才增大。因为是事后调节动态指标不会很理想。而微分作用可以在产生误差之前

一发现有产生误差的趋势就开始调节,是提前控制,所以及时性更好,可以最大限度地减少动态误

差,使整体效果更好。但微分作用只能作为比例和积分控制的一种补充,不能起主导作用,微分作

用不能太强,太强也会引起系统不稳定,产生振荡,微分作用只能在P和I调好后再由小往大调,一

点一点试着加上去。

        自动控制系统在克服误差的调节过程中可能会出现振荡甚至失稳。其原因是由于存在有较大

惯性组件(环节)或有滞后(delay)组件,具有抑制误差的作用,其变化总是落后于误差的变化。

        解决的办法是使抑制误差的作用的变化“超前”,即在误差接近零时,抑制误差的作用就应该是

零。这就是说,在控制器中仅引入“比例”项往往是不够的,比例项的作用仅是放大误差的幅值,而

目前需要增加的是“微分项”,它能预测误差变化的趋势。这样,具有比例+微分的控制器,就能够

提前使抑制误差的控制作用等于零,甚至为负值,从而避免了被控量的严重超调。所以对有较大惯

性或滞后的被控对象,比例+微分(PD)控制器能改善系统在调节过程中的动态特性。PD控制只在动

态过程中才起作用,对恒定稳态情况起阻断作用。因此,微分控制在任何情况下都不能单独使用。

优点:使系统的响应速度变快,超调减小,振荡减轻,对动态过程有“预测”作用。


SUM:

在低频段,主要是PI控制规律起作用,提高系统型别,消除或减少稳态误差;

在中高频段主要是PD规律起作用,增大截止频率和相角裕度,提高响应速度;

因此,控制器可以全面地提高系统的控制性能。


6:举个例子

        例如,使用控制器使一锅水的温度保持在50℃,小于50℃就让它加热,大于50度就断电,不

就行了?没错,在要求不高的情况下,确实可以这么干。如果如果控制对象是一辆汽车呢?要是希

望汽车的车速保持在50km/h不动,这种方法就存在问题了。

        设想一下,假如汽车的定速巡航ECU在某一时刻测到车速是45km/h,它立刻命令发动机:加

速!结果,发动机那边突然来了个100%全油门,嗡的一下汽车急加速到了60km/h,这时电脑又发

出命令:刹车!结果,乘客吐......

        所以,在大多数场合中,用“开关量”来控制一个物理量就显得比较简单粗暴了,有时候是无法

保持稳定的,因为单片机、传感器不是无限快的,采集、控制需要时间。而且,控制对象具有惯

性,比如将热水控制器拔掉,它的“余热”(即热惯性)可能还会使水温继续升高一小会。


6:Kp、Ki、Kd

Kp比例增益

        Kp比例控制考虑当前误差,误差值和一个正值的常数Kp(表示比例)相乘。需要控制的量,

比如水温,有它现在的当前值,也有我们期望的目标值。当两者差距不大时,就让加热器“轻轻地”

加热一下。要是因为某些原因,温度降低了很多,就让加热器“稍稍用力”加热一下。要是当前温度

比目标温度低得多,就让加热器“开足马力”加热,尽快让水温到达目标附近。

        这就是P的作用,跟开关控制方法相比,是不是“温文尔雅”了很多!

        实际写程序时,就让偏差(目标减去当前)与调节装置的“调节力度”,建立一个一次函数的关

系,就可以实现最基本的“比例”控制了;Kp越大,调节作用越激进,Kp调小,调节作用越保守。

        但是,如果你正在制作一个平衡车,有了P的作用,你会发现,平衡车在平衡角度附近来回

“狂抖”,比较难稳住。

Kd微分增益

        Kd微分控制考虑将来额误差,计算误差的一阶导,并和一个正值的常数Kd相乘。有了P的作

用,不难发现,只有P好像不能让平衡车站起来,水温也控制得晃晃悠悠,好像整个系统不是特别

稳定,总是在“抖动”。

        设想有一个弹簧:现在在平衡位置上,拉它一下,然后松手,这时它会震荡起来,因为阻力

很小,它可能会震荡很长时间,才会重新停在平衡位置。

        此时就需要一个控制,让被控制的物理量的“变化速度”趋于0,即类似于“阻尼”的作用。D的作

用就是让这个物理量的变化速度趋于0,只要什么时候,这个量具有了速度,D就向相反的方向用

力,尽力刹住这个变化。

        Kd参数越大,向速度相反方向刹车的力道就越强,如果是平衡小车,加上P和D两种控制作

用,如果参数调节合适,它应该可以站起来了。

Ki积分增益

        Ki积分控制考虑过去误差,将误差值过去一段时间和(即:误差和)乘以一个正值的常数Ki。

还是以热水为例,假如有个人把加热装置带到了非常冷的地方,开始烧水了,需要烧到50℃。在P

的作用下,水温慢慢升高,直到升高到45℃时,他发现了一个不好的事情:天气太冷,水散热的速

度,和P控制的加热的速度相等了。

        这可怎么办?

        P兄这样想:我和目标已经很近了,只需要轻轻加热就可以了。

        D兄这样想:加热和散热相等,温度没有波动,我好像不用调整什么。

        于是,水温永远地停留在45℃,永远到不了50℃。

根据常识,我们知道,应该进一步增加加热的功率,可是增加多少该如何计算呢?

前辈科学家们想到的方法是真的巧妙:设置一个积分量,只要偏差存在,就不断地对偏差进行积分

(累加),并反应在调节力度上。这样一来,即使45℃和50℃相差不是太大,但是随着时间的推

移,只要没达到目标温度,这个积分量就不断增加,系统就会慢慢意识到:还没有到达目标温度,

该增加功率啦!到了目标温度后,假设温度没有波动,积分值就不会再变动,这时,加热功率仍然

等于散热功率,但是,温度是稳稳的50℃。

        Ki的值越大,积分时乘的系数就越大,积分效果越明显,所以,I的作用就是,减小静态情况

下的误差,让受控物理量尽可能接近目标值。I 在使用时还有个问题:需要设定积分限制,防止在

刚开始加热时,就把积分量积得太大,难以控制。


7:PID的标定

        PID算法的参数调试是指通过调整控制参数(比例增益、积分增益/时间、微分增益/时间)让

系统达到最佳的控制效果。调试中稳定性(不会有发散性的震荡)是首要条件,此外,不同系统有

不同的行为,不同的应用其需求也不同,而且这些需求还可能会互相冲突。PID算法只有三个参

数,在原理上容易说明,但PID算法参数调试是一个困难的工作,因为要符合一些特别的判据,而

且PID控制有其限制存在。

a、稳定性

        若PID算法控制器的参数未挑选妥当,其控制器输出可能是不稳定的,也就是其输出发散,过

程中可能有震荡,也可能没有震荡,且其输出只受饱和或是机械损坏等原因所限制。不稳定一般是

因为过大增益造成,特别是针对延迟时间很长的系统。

b、最佳性能

        PID控制器的最佳性能可能和针对过程变化或是设定值变化有关,也会随应用而不同。 两个

基本的需求是调整能力(regulation,干扰拒绝,使系统维持在设定值)及命令追随 (设定值变化

下,控制器输出追随设定值的反应速度)。有关命令追随的一些判据包括有上升时间及整定时间。

有些应用可能因为安全考量,不允许输出超过设定值,也有些应用要求在到达设定值过程中的能量

可以最小化。

c、各调试方法对比

方法   优点缺点
人工调试不需要数学,可在线调试        需要有经验的工程师
齐格勒·尼科尔斯法被证实有效的方法,可在线调试需要试误
软件工具可在线or离线调试需要学习成本
Cohen-Coon好的程序模型需要学习成本

  d、调整PID参数对系统的影响  

  

  

<think>好的,用户想了解如何使用Matlab/Simulink进行PID调参。首先,我需要回忆一下PID控制的基本原理,以及MatlabSimulink中的相关工具。用户可能是工程师或者学生,需要实际应用的指导,所以步骤要清晰,方法要具体。 首先,我应该介绍PID的三个参数的作用,可能用户已经了解,但作为基础还是需要简要提及。然后,进入Matlab的具体方法,比如使用PID Tuner工具,这是比较自动化的方式,适合新手。需要说明如何打开PID Tuner,调整参数,生成代码等步骤。 接下来是Simulink部分,用户可能更倾向于图形化界面操作。需要提到搭建模型的基本步骤,比如添加PID Controller模块,配置参数,使用自动调参功能。这要详细说明如何设置输入输出,调整响应曲线,以及如何导出参数到工作区。 然后,手动调参的方法也不能少,毕竟有时候自动调参可能不够理想。需要解释齐格勒-尼科尔斯方法,以及如何根据响应曲线调整参数。这部分需要给出具体步骤,比如先调P,再调I,最后调D,并注意稳定性。 可能用户会遇到一些问题,比如振荡或稳态误差,所以常见问题及解决方法也是必要的。这部分需要简明扼要,给出实际建议,比如检查积分项或调整微分时间。 最后,总结一下步骤,强调实践的重要性,并提醒用户结合理论进行分析。可能还需要提到其他工具,如Control System Toolbox,但根据用户的问题,重点放在PID TunerSimulink上比较合适。 需要注意避免使用复杂的术语,保持语言通俗,结构清晰。同时,检查是否有遗漏的步骤,比如模型搭建的具体细节,或者调参时的注意事项。确保每个步骤都有示例,比如PID Tuner的界面操作,Simulink模块的位置等。 可能用户对自动生成代码感兴趣,所以提到将调好的参数导出到代码是有帮助的。另外,手动调参部分需要具体参数调整公式,比如齐格勒-尼科尔斯法的临界增益周期计算,但可能用户更关注步骤而不是公式,所以简要说明即可。 还要检查LaTeX格式是否正确,所有数学表达式用$...$,独立公式用$$...$$,但根据用户的问题,可能数学公式不多,所以主要注意PID参数符号的正确表示,比如$K_p$、$K_i$等。 最后,确保回答结构清晰,分点说明,让用户能一步步跟随操作,同时提供实际应用中的技巧注意事项,确保回答的实用性可靠性。</think>在Matlab/Simulink中实现PID参数整定,可通过自动调参工具与手动调参结合。以下是具体步骤: --- ### **一、使用Matlab PID Tuner工具** 1. **定义系统模型** ```matlab sys = tf([1],[1 10 20]); % 示例:二阶系统传递函数 ``` 2. **打开PID Tuner** ```matlab pidTuner(sys, 'PID') % 启动GUI界面 ``` - 选择控制器类型(P/PI/PID) - 设置目标响应时间、相位裕度等指标 3. **自动调参** - 点击 **Tune** 按钮,工具自动计算$K_p$, $K_i$, $K_d$ - 拖动响应曲线实时观察系统性能 4. **导出参数** - 点击 **Update Block** 将参数导出到Simulink模型 - 或通过工作区变量保存:`Kp = C.Kp; Ki = C.Ki; Kd = C.Kd;` --- ### **二、Simulink仿真调参** 1. **搭建模型** - 拖入 **PID Controller** 模块(Simulink Library > Continuous) - 连接被控对象(如Transfer Function或物理系统模型) 2. **自动调参** - 右键PID模块 > **Tune...** 启动调参工具 - 设置阶跃响应目标(超调量、调节时间等) - 点击 **Update Block** 应用参数 3. **手动调整** - 双击PID模块,直接修改$K_p$, $K_i$, $K_d$ - 通过 **Simulation > Run** 观察响应曲线(建议使用Scope模块) --- ### **三、手动调参方法(齐格勒-尼科尔斯法)** 1. **纯比例控制** - 设$K_i=0$, $K_d=0$,逐渐增大$K_p$直到系统出现等幅振荡 - 记录临界增益$K_u$振荡周期$T_u$ 2. **计算参数** - P控制器:$K_p = 0.5K_u$ - PI控制器:$K_p = 0.45K_u$, $K_i = 1.2K_p/T_u$ - PID控制器:$K_p = 0.6K_u$, $K_i = 2K_p/T_u$, $K_d = K_pT_u/8$ --- ### **四、调参技巧与注意事项** 1. **响应分析** - **超调过大**:增大$K_d$或减小$K_p$ - **调节缓慢**:增大$K_i$或减小$K_d$ - **稳态误差**:检查积分项是否启用 2. **抗饱处理** - 在PID模块中启用 **Anti-windup**(积分限幅) 3. **离散化设置** - 若用于数字控制,需指定采样时间(如`Ts=0.01`) --- ### **五、验证与优化** 1. **阶跃响应测试** - 观察上升时间、超调量、稳态误差等指标 2. **扰动测试** - 在系统中加入脉冲扰动,验证鲁棒性 3. **频域分析** - 使用`bode(sys_cl)`检查相位裕度与增益裕度 --- ### **示例代码(导出PID参数到Simulink)** ```matlab % 自动调参后导出参数 pidBlock = 'model_name/PID'; set_param(pidBlock, 'P', num2str(Kp)); set_param(pidBlock, 'I', num2str(Ki)); set_param(pidBlock, 'D', num2str(Kd)); ``` 通过结合自动工具与手动调整,可快速实现PID参数优化。建议先用PID Tuner获取初始参数,再根据实际响应微调。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值