基于遗传算法PID控制寻优实现(有代码超详细)

基于遗传算法PID控制寻优实现(有代码超详细)
基于遗传算法PID控制寻优实现(有代码超详细)

基于遗传优化算法对离散PID控制器参数的优化设计摘要

PID控制作为一种经典的控制方法,从诞生至今,历经数十年的发展和完善,因其优越的控制性能业已成为过程控制领域最为广泛的控制方法;PID控制器具有结构简单、适应性强、不依赖于被控对象的精确模型、鲁棒性较强等优点,其控制性能直接关系到生产过程的平稳高效运行,因此对PID控制器设计和参数整定问题的研究不但具有理论价值更具有很大的实践意义,遗传算法是一种借鉴生物界自然选择和自然遗传学机理上的迭代自适应概率性搜索算法。本论文主要应用遗传算法对PID调节器参数进行优化。

关键词:遗传优化算法PID控制器参数优化

1.前言

PID调节器是最早发展起来的控制策略之一,因为它所涉及的设计算法和控制结构都是简单的,并且十分适用于工程应用背景,此外PID控制方案并不要求精确的受控对象的数学模型,且采用PID控制的控制效果一般是比较令人满意的,所以在工业实际应用中,PID调节器是应用最为广泛的一种控制策略,也是历史最久、生命力最强的基本控制方式。调查结果表明: 在当今使用的控制方式中,PID型占84. 5% ,优化PID型占68%,现代控制型占有15%,手动控制型66%,人工智能(AI)型占0.6% 。如果把PID型和优化PID型二者加起来,则占90% 以上,这说明PID控制方式占绝大多数,如果把手动控制型再与上述两种加在一起,则占97.5% ,这说明古典控制占绝大多数。就连科学技术高度发达的日本,PID控制的使用率也高达84.5%。这是由于理论分析及实际运行经验已经证明了PID调节器对于相当多的工业过程能够起到较为满足的控制效果。它结构简单、适用面广、鲁棒性强、参数易于调整、在实际中容易被理解和实现、在长期应用中己积累了丰富的经验。特别在工业过程中,由于控制对象的精确数学模型难以建立,系统的参数又经常发生变化,运用现代控制理论分析综合要耗费很大的代价进行模型辨识,但往往不能达到预期的效果,所以不论常规调节仪表还是数

字智能仪表都广泛采用这种调节方式。正是PID控制算法具有以上多种优点,所以这种算法仍将在现场控制中居于主导地位。

PID控制器参数整定的方法很多,概括起来有两大类:一是实验凑试法,它主要依赖调试经验,直接在控制系统的试验中进行,且方法简单、易于掌握,在工程实际中被广泛采用。二是理论计算整定法,它主要是依据系统的数学模型,经过理论计算确定控制器参数。这种方法所得到的计算数据未必可以直接用,还必须通过工程实际进行调整和修改[1]。但根据参数凑试法得出的控制器参数的控制效果并不是很理想,而手动调整控制器参数找到较优值费时又费力,因此利用一种优化算法对控制器参数进行优化是非常必要的。

本文采用遗传优化算法,在二次型性能指标下对离散PID控制器的控制参数进行优化并给出了优化结果,同时通过仿真进行研究与分析。本文的其余部分安排如下:第二部分介绍了PID控制器的基本原理;第三部分介绍了遗传优化算法;第四部分采用MATLAB编程和simulink模块对被控对象进行建模;第五部分使用遗传算法对系统进行仿真分析。最后,在第六部分对本文的研究进行了总结。

2.PID控制器

2.1. PID控制器基本原理

PID控制是基于对变量“过去”、“现在”和“未来”信息估计的交叉控制算法。控制系统框图如图2-1所示,系统主要由被控对象和PID控制器两部分组成。常规的PID一般为线性控制器,实际输出值和给定值会存在一个偏差,将偏差按比例、积分和微分通过线性组合来构成控制量,最后对被控对象进行控制,故称PID控制器。

图2-1 PID控制器结构图

当系统是连续控制时,PID 控制器的输出u(t)与输入e(t)之间会存在比例、积分、微分的关系,用下式表示出来,

1()()[()()]

t c d

i

de t u t k e t e t dt T T dt

=+

+?

(2-1)

也可写成常见的传递函数形式:

1()(1)()

c d i U s K T s E s T s

=+

+(2-2)

式中,()()()e t r t y t =-,c K 是比例增益,i T 是积分时间,d T 是微分时间。 在计算机控制系统中,也普遍采用PID 控制思想。此时,调节器的输出与输入之间的关系为:

(){()()[()()]}

k

d c i i

T T u kT K e kT e it e kT e kT T T T

==+

+

--∑ (2-3)

其中,c K 、i T 、d T 分别为比例系数、积分时间常数和微分时间常数;T 为采样周期;k 为采样序号,k=0,1,2,…;u(kT)为第k 次采样输出值;e(kT)为第k 次采样的输入偏差值;e(kT-T)为第(K-1)次采样的输入偏差值。

2.2. PID 控制器参数对控制性能的影响

PID 控制器各个参数对系统的动态和稳态性能起着不同的作用,这三个参数的取值优劣将直接影响PID 控制系统的控制品质好坏。 2.2.1. 比例作用

比例作用就是以比例形式来反应系统的偏差信号e(t),以最快速度来产生控制作用,使偏差逐渐趋于减小。

(1)对动态特性的影响

比例控制参数K c 加大,使系统的动作灵敏,速度加快,K c 越大,振荡次数加多,调节时间也越长。当K c 太大时,系统会趋于不稳定,若K c 太小,又会使系统的动作缓慢。

(2)对稳态特性的影响

在系统稳定的情况下,比例系数K c 增大,稳态误差就会减少,以此来提高控制精度,但是加大K c 只是减少,却无法从本质上上消除稳态误差。

2.2.2. 积分作用

引入积分作用,主要是为了在稳态状态下,满足被控量对设定值的无静差跟踪,对系统的性能影响主要表现如下:

(1)对动态特性的影响

积分作用会引起系统的稳定性下降,T i太小,系统将不稳定,T i偏小到一定程度时,系统会出现振荡;T i太大,对系统性能的影响力也会缩减,只有当T i 合适时,才能出现比较理想的过渡特性。

(2)对稳态特性的影响

积分作用能够降低系统稳态误差,同时也能提高系统的控制精度,不过,当T i值太大时,积分作用将会变得非常弱,稳态误差e ss也不会紧随减弱了。

2.2.

3. 微分作用

微分作用常规使用会与比例作用、比例积分作用联合,构成PD控制器或者PID控制器。微分作用主要改善闭环系统的动态特性和稳定性。T d偏大时,超调量会较大,调节时间也会较长;T d偏小时,超调量也较大,相应调节时间也会较长。

3.遗传优化算法

遗传算法是-类可用于复杂系统优化计算的鲁棒搜索算法,与其他一些优化算法相比,它主要有下述几个恃点:

(1)遗传算法以决策变量的编码作为运算对象。这种对决策变量的编码处理方式,使得我们在优化计算过程中可以借鉴生物学中染色体和基因等概念,可以模仿自然界中生物的遗传和进化等机理,也使得我们可以方便地应用遗传操作算子。

(2) 遗传算法直接以目标函数值作为搜索信息。传统优化算法不仅需要利用目标函数值,而且往往需要目标函数的导数值等其他一些辅助信息才能确定搜索方向。而遗传算法仅使用由目标函数值变换来的适应度函数值,就可确定进一步的搜索方向和搜索范围,无需目标函数的导数值等其他一些辅助信息。这个特性对很多目标函数是无法或很难求导数的函数,或导数不存在的函数的优化问

题,以及组合优化问题等,应用遗传算法时就显得比较方便,因为它避开了函数求导这个障碍。

(3) 遗传算法同时使用多个搜索点的搜索信息。单个搜索点所提供的搜索信息毕竟不多,所以搜索效率不高,有时甚至使搜索过程陷于局部最优解而停滞不前。遗传算法从由很多个体所组成的一个初始群体开始最优解的搜索过程,而不是从一个单一的个体开始搜索,这是遗传算法所特有的一种隐含并行性。

(4) 遗传算法使用概率搜索技术。很多传统的优化算法往往使用的是确定性的搜索方法,而遗传算法属于一种自适应概率搜索技术,其选择、交叉、变异等运算都是以一种概率的方式来进行的,从而增加了其搜索过程的灵活性。当然,交叉概率和奇异概率等参数也会影响算法的搜索效果和搜索效率,所以如何选择溃传算法的参数在其应用中是一个比较重要的问题。而另一方面,与其他一些算法相比,遗传算法的鲁棒性又会使得参数对其搜索效果的影响会尽可能地低。

3.1. SGA的基本实现技术

基于对自然界中生物遗传与进化机理的模仿,针对不同的问题,很多学者设计了许多不同的编码方法来表示问题的可行解,开发出了许多种不同的遗传算子来模仿不同环境下的生物遗传特性。这样,由不同的编码方法和不同的遗传算子就构成了各种不同的遗传算法。但这些遗传算法都有共同的特点,即通过对生物遗传和进化过程中选择、交叉、变异机理的模仿,来完成对问题最忧解的自适应搏索过程。基于这个共同特点,Goldberg总结出了一种统一的最基本的遗传算法——基本遗传算法(Simple Genetic Algorithms,简称SGA)。基本遗传算法只使用选择算子、交叉算子和变异算子这三种基本遗传算子,其遗传进化操作过程简单,容易理解,是其他一些遗传算法的雏形和基础,它不仅给各种遗传算法提供了一个基本框架,同时也具有一定的应用价值。

3.2. 编码方法

在遗传算法中如何描述问题的可行解,即把一个问题的可行解从其解空间转换到遗传算法所能处理的搜索空间的转换方法称为编码。编码是应用遗传算法时要解决的首要问题,也是设计遗传算法时的一个关键步骤。二进制编码方法是

遗传算法中最常用的一种编码方法。假设某一个参数U 的取值范围是[U min , U max ],用- 1 位二进制数n 来表示,则它们的关系如下式(3- 1)所示:

min max min ()

21

l

n u U U U =+

-- (3-1)

上述过程为解码,它的反过程即为编码。

3.3. 适应度函数

在研究自然界中生物的遗传和进化现象时,生物学家使用适应度这个术语来度量某个物种对于其生存环境的适应程度。遗传算法中也使用适应度这个概念来度量群体中各个个体在优化计算中有可能达到或接近于或有助于找到最优解的优良程度。适应度较高的个体遗传到下一代的概率就较大:而适应度较低的个体遗传到下一代的概率就相对小一些。度量个体适应度的函数称为适应度函数( Fitness Function)。

3.4. 选择、交叉、变异算子

遗传算法使用选择算子来对群体中的个体进行优胜劣汰操作。最常用的选择算子是基本遗传算法中的比例选择算子。其基本思想是:各个个体被选中的概率与其适应度大小成E 比。设群体大小为M ,个体i 的适应度为F ,则个体i 被选中的概率P is 为:

1

,(1,2,...,)

i

is M

i

i F p i M F

==

=∑(3-2)

交叉算子是指对两个相互配对的染色体按某种方式相互交换其部分基因,从而形成两个新的个体。交叉运算是遗传算法区别于其他进化算法的重要特征,它在遗传算法中起关键作用,是产生新个体的主要办法。最简单的交叉算子是单点交叉算子, 即在群体中随机选取两个个体, 并在个体编码串中只随机设置一个交叉点,然后在该点以一定的概率P c 相互交换两个配对个体的部分染色体。一般民的经验取值范围是0.4-0.99。变异运算是指将个体染色体编码串中某些基因座上的基因值用该基因座的其它等位基因来替换, 从而形成一个新的个体。最简单的变异算子是基本位变异算子,即对个体编码串中的每一位基因座上的基因值均以变异概率p 作变异运算。一般P m 的经验取值范围是0.0001-0.10变异可使

遗传算法具有局部随机搜索功能, 又可维持群体的多样性, 避免出现初期收敛问题。

4. 被控对象及建模

已知被控对象的传递函数模型为:

1()(101)

G s s s =

+ (4-1)

采样周期T=1s ,要求阶跃响应超调量20%

δ≤。

如图4-1所示,利用MATLAB/Simulink 搭建系统仿真模型。

图4-1 系统仿真模型

PID 控制器模块如图所示,其中PID 控制器的K i 、K d 、K p 三个参数利用图4-2给定

图4-2 PID 控制器模型

对于PID 控制器,给定如下二次型性能指标函数:

2

20

[()k ]k J e

k u ρ∞

==

+∑()

(4-2)

其中ρ为常数,取值范围为01

ρ

≤≤,搭出如图4-3所示模型。

图4-3 系统模型及二次型性能指标函数亦可直接编写M函数对系统进行建模,程序如下:

function [Kpidi,BsJ]=pid_gaf(Kpidi,BsJ)

global rinyouttimef

ts=1

sys=tf(1,[10,1,0]); %被控对象函数

dsys=c2d(sys,ts,'z'); %零阶保持器法离散化

[num,den]=tfdata(dsys,'v');%提取被控对象参数

rin=1.0; %赋初值

u_1=0.0;u_2=0.0;

y_1=0.0;y_2=0.0;

x=[0,0,0]';

B=0;

error_1=0;

tu=1;

s=0;

P=100;

for k=1:1:P

timef(k)=k*ts;

r(k)=rin;

u(k)=Kpidi(1)*x(1)+Kpidi(2)*x(2)+Kpidi(3)*x(3); %控制器输出

if u(k)>=10

u(k)=10;

end

if u(k)<=-10

u(k)=-10;

end

yout(k)=-den(2)*y_1-den(3)*y_2+num(2)*u_1+num(3)*u_2; %输出

error(k)=r(k)-yout(k); %误差

%------------ 返回PID参数-------------

u_2=u_1;u_1=u(k);

y_2=y_1;y_1=yout(k);

x(1)=error(k); % 计算P

x(2)=(error(k)-error_1)/ts; % 计算 D

x(3)=x(3)+error(k)*ts; % 计算I

error_2=error_1;

error_1=error(k);

if s==0

if yout(k)>0.95&yout(k)<1.05

tu=timef(k);

s=1;

end

end

end

for i=1:1:P

Ji(i)=error(i)^2 +rol*u(i)^2; %二次型性能指标函数

B=B+Ji(i); %叠加

end

BsJ=B;

5.算法实现与仿真分析

5.1. 遗传算法流程及程序

第一步,随机产生初始种群,个体数目一定,每个个体表示为染色体的基因编码;第二步,计算个体的适应度,并判断是否符合优化准则,若符合,输出最佳个体及其代表的最优解,并结束计算,否则转向第三步;第三步,依据适应度选择再生个体,适应度高的个体被选中的概率高,适应度低的个体可能被淘汰;第四步,按照一定的交叉概率和交叉方法,生成新的个体;第五步,按照一定的

变异概率和变异方法,生成新的个体;第六步,由交叉和变异产生新一代的种群,返回到第二步。遗传算法的一般流程如图5-1 所示。

图5-1基本遗传算法的算法流程

遗传算法中的优化准则,一般依据问题的不同有不同的确定方式。例如,可以采用以下的准则之一作为判断条件:

①种群中个体的最大适应度超过预先设定值;

②种群中个体的平均适应度超过预先设定值;

③世代数超过预先设定值。

5.2. 遗传算法仿真程序

%用于优化PID参数的遗传算法

clear all;

close all;

global rinyouttimef

Size=30;

CodeL=3;

MinX(1)=zeros(1);

MaxX(1)=20*ones(1);

MinX(2)=zeros(1);

MaxX(2)=1.0*ones(1);

MinX(3)=zeros(1);

MaxX(3)=1.0*ones(1);

%产生初始种群

Kpid(:,1)=MinX(1)+(MaxX(1)-MinX(1))*rand(Size,1);

Kpid(:,2)=MinX(2)+(MaxX(2)-MinX(2))*rand(Size,1);

Kpid(:,3)=MinX(3)+(MaxX(3)-MinX(3))*rand(Size,1);

G=1000;

BsJ=0;

%*************** 开始运行***************

for kg=1:1:G

time(kg)=kg;

%****** 步骤 1 : 产生BestJ ******

for i=1:1:Size

Kpidi=Kpid(i,:); %代入PID参数

[Kpidi,BsJ]=chap5_3f(Kpidi,BsJ);%调用系统模型函数

BsJi(i)=BsJ; %取出最优值

end

[OderJi,IndexJi]=sort(BsJi);

BestJ(kg)=OderJi(1);

BJ=BestJ(kg);

Ji=BsJi+1e-10; %避免除0运算

fi=1./Ji;

[Oderfi,Indexfi]=sort(fi); %从小到大排列fi

Bestfi=Oderfi(Size); %令Bestfi=max(fi)

BestS=Kpid(Indexfi(Size),:); %令BestS=E(m), m 是max(fi) 的索引

kg

BJ

BestS

%****** 步骤 2 : 选择与新种群产生******

fi_sum=sum(fi);

fi_Size=(Oderfi/fi_sum)*Size;

fi_S=floor(fi_Size); % 向下取整运算r=Size-sum(fi_S);

Rest=fi_Size-fi_S;

[RestV alue,Index]=sort(Rest);

for i=Size:-1:Size-r+1

fi_S(Index(i))=fi_S(Index(i))+1; % 使得种群大小保持不变end

k=1;

for i=Size:-1:1

for j=1:1:fi_S(i)

TempE(k,:)=Kpid(Indexfi(i),:); % 选择与生成新个体

k=k+1; % k 用来生成新个体end

end

%************ 步骤 3 : 交叉运算************

Pc=0.90;

for i=1:2:(Size-1)

temp=rand;

if Pc>temp %交叉条件

alfa=rand;

TempE(i,:)=alfa*Kpid(i+1,:)+(1-alfa)*Kpid(i,:);

TempE(i+1,:)=alfa*Kpid(i,:)+(1-alfa)*Kpid(i+1,:);

end

end

TempE(Size,:)=BestS;

Kpid=TempE;

%************ 步骤4: 变异运算**************

Pm=0.10-[1:1:Size]*(0.01)/Size; %具有更大fi的个体具有更小的Pm Pm_rand=rand(Size,CodeL);

Mean=(MaxX + MinX)/2;

Dif=(MaxX-MinX);

for i=1:1:Size

for j=1:1:CodeL

if Pm(i)>Pm_rand(i,j) %变异条件

TempE(i,j)=Mean(j)+Dif(j)*(rand-0.5);

end

end

end

%保证TempE(Size,:) 为最优个体

TempE(Size,:)=BestS;

Kpid=TempE;

end

Bestfi

BestS

Best_J=BestJ(G)

figure(1);

plot(time,BestJ);

xlabel('Times');ylabel('Best J'); figure(2);

plot(timef,rin,'r',timef,yout,'b'); xlabel('Time(s)');ylabel('rin,yout');

5.3. 仿真优化及分析

由式(4-2)可知,二次型性能指标的常数ρ的取值范围为01ρ≤

≤,

首先取1ρ=。

设置控制系统M 函数模型的运行时间为100秒。给定阶跃信号,采用实数编码方式,经过100代进化,获得的优化PID 整定结果为K p =0.2756,K i =0,K d =0.9210,性能指标J=5.1323。得到系统动态响应曲线,如图5-2所示。

图5-2 系统响应曲线

由图5-2可测得,系统调节时间T=34s ,超调量为12.5%,最终达到稳定,无静态误差,得到较好的动静态响应特性。图5-3表示控制器输出波形,如图,控制器输出峰值为1.17,并且35秒后趋于稳定。

Time(s)

O u t (t )

Time(t)

U (t )

图5-3 控制器输出波形

图5-4为遗传算法随进化代数增加,性能指标J 的变化过程,在100代前后得到最优参数。

图5-4 遗传算法优化过程

二次型性能指标系数是否对对优化结果产生影响,可通过改变ρ值并进行寻优来研究。ρ值分别为0.25,0.5,0.75,1时的响应曲线比较图如图5-4所示。

图5-5 不同参数值下的响应曲线比较

当ρ值增加时超调量上升,调节时间增加。

4

Times

B e s t J

Time(s)

O u t

6.总结

本文在二次型性能指标的要求下,通过研究遗传算法,对控制对象进行PID 参数整定,对PID系数进行了优化。利用优化结果进行了系统仿真,分析了控制器输出响应与系统动态响应。并对在不同 值下的的系统响应进行了对比分析,得出结论。可以得出,利用遗传算法可以较好的优化PID控制器参数,使系统得到较好的动静态响应。

参考文献

1.关守平,周玮等. 计算机控制系统[M]. 北京:科学出版社,2009.

2.薛定宇,陈泉阳. 高等应用数学问题的MATLAB求解[M].北京:清华大学出版社,2008.

3.薛定宇.控制系统计算机辅助设计[M].北京:清华大学出版社,2006.

4.周明,孙树栋.遗传算法原理及应用[M].北京:国防工业出版社,1999.

5.刘金琨.先进PID控制MATLAB仿真[M].北京:电子工业出版社,2004.

6.苏小林,阎晓霞.基于遗传算法的PID参数优化技术电力系统及其自动化学

报,1997, 9(2):20----26.

7.刘国贤,林宪枢,杨奇逊.基于遗传算法的控制器参数寻优[J],现代电力,1997,14(3):18----22

8.杨智,高靖,基于遗传算法的预测自整定PID控制器[J].控制与决策,2000,15(1):113----115,118

PID 通俗解释

PID控制原理 3个故事:看完您就明白了。 1、:PID的故事小明接到这样一个任务:有一个水缸点漏水(而且漏 水的速度还不一定固定不变),要求水面高度维持在某个位置,一旦发 现水面高度低于要求位置,就要往水缸里加水。 小明接到任务后就一直守在水缸旁边,时间长就觉得无聊,就跑到房 里看小说了,每30分钟来检查一次水面高度。水漏得太快,每次小明 来检查时,水都快漏完了,离要求的高度相差很远,小明改为每3分 钟来检查一次,结果每次来水都没怎么漏,不需要加水,来得太频繁 做的是无用功。几次试验后,确定每10分钟来检查一次。这个检查时 间就称为采样周期 开始小明用瓢加水,水龙头离水缸有十几米的距离,经常要跑好几趟 才加够水,于是小明又改为用桶加,一加就是一桶,跑的次数少了, 加水的速度也快了,但好几次将缸给加溢出了,不小心弄湿了几次鞋,小明又动脑筋,我不用瓢也不用桶,老子用盆,几次下来,发现刚刚好,不用跑太多次,也不会让水溢出。这个加水工具的大小就称为比 例系数 小明又发现水虽然不会加过量溢出了,有时会高过要求位置比较多, 还是有打湿鞋的危险。他又想了个办法,在水缸上装一个漏斗,每次 加水不直接倒进水缸,而是倒进漏斗让它慢慢加。这样溢出的问题解 决了,但加水的速度又慢了,有时还赶不上漏水的速度。于是他试着 变换不同大小口径的漏斗来控制加水的速度,最后终于找到了满意的 漏斗。漏斗的时间就称为积分时间 小明终于喘了一口,但任务的要求突然严了,水位控制的及时性要求 大大提高,一旦水位过低,必须立即将水加到要求位置,而且不能高 出太多,否则不给工钱。小明又为难了!于是他又开努脑筋,终于让 它想到一个办法,常放一盆备用水在旁边,一发现水位低了,不经过 漏斗就是一盆水下去,这样及时性是保证了,但水位有时会高多了。 他又在要求水面位置上面一点将水凿一孔,再接一根管子到下面的备 用桶里这样多出的水会从上面的孔里漏出来。这个水漏出的快慢就称 为微分时间 看到几个问采样周期的帖子,临时想了这么个故事。微分的比喻一点 牵强,不过能帮助理解就行了,呵呵,入门级的,如能帮助新手理解 下PID,于愿足矣。故事中小明的试验是一步步独立做,但实际加水 工具、漏斗口径、溢水孔的大小同时都会影响加水的速度,水位超调 量的大小,做了后面的实验后,往往还要修改改前面实验的结果。 2、控制模型:人以PID控制的方式用水壶往水杯里倒印有刻度的半杯 水后停下; 设定值:水杯的半杯刻度;

MATLAB遗传算法作业

MATLAB遗传算法 一:遗传算法简介: 遗传算法(Genetic Algorithm)是一类借鉴生物界的进化规律(适者生存,优胜劣汰遗传机制)演化而来的随机化搜索方法。它是由美国的J.Holland教授1975年首先提出,其主要特点是直接对结构对象进行操作,不存在求导和函数连续性的限定;具有内在的隐并行性和更好的全局寻优能力;采用概率化的寻优方法,能自动获取和指导优化的搜索空间,自适应地调整搜索方向,不需要确定的规则。遗传算法的这些性质,已被人们广泛地应用于组合优化、机器学习、信号处理、自适应控制和人工生命等领域。它是现代有关智能计算中的关键技术。 二:遗传算法的基本步骤 a)初始化:设置进化代数计数器t=0,设置最大进化代数T,随机生成M个个体作为初始群体P(0)。 b)个体评价:计算群体P(t)中各个个体的适应度。 c)选择运算:将选择算子作用于群体。选择的目的是把优化的个体直接遗传到下一代或通过配对交叉产生新的个 体再遗传到下一代。选择操作是建立在群体中个体的适应度评估基础上的。

d)交叉运算:将交叉算子作用于群体。遗传算法中起核心作用的就是交叉算子。 e)变异运算:将变异算子作用于群体。即是对群体中的个体串的某些基因座上的基因值作变动。 群体P(t)经过选择、交叉、变异运算之后得到下一代群体P(t+1)。 f)终止条件判断:若t=T,则以进化过程中所得到的具有最大适应度个体作为最优解输出,终止计算。 三:matlab实现 例子:f(x)=10*sin(5x)+7*cos(4x)x∈[0,10]将变量域[0,10]离散化为二值域[0,1023],x=0+10*b/1023。 1.初始化 initpop.m function pop=initpop(popsize,chromlength) pop=round(rand(popsize,chromlength));%rand随机产生每个单元为0或者1 行数(种群数量)为popsize,列数为chromlength(个体所含基因数)的矩阵, 2.计算目标函数值 2.1将二进制数转化为十进制数(1) decodebinary.m %产生[2^n2^(n-1)...1]的行向量,然后求和,将二进制转化为十进制function pop2=decodebinary(pop) [px,py]=size(pop)%Pop的行和列数 for i=1:px pop2(i)=0 for j=1:py pop2(i)=pop2(i)+2.^(py-j)*pop(i,j) end end 2.2将二进制编码转化为十进制数(2) Decodechrom.m %函数的功能是将染色体(或二进制编码)转换为十进制,参数spoint表示待解码的二进制串的

PID控制的基本原理

盛年不重来,一日难再晨。及时宜自勉,岁月不待人。 PID 控制的基本原理 1.PID 控制概述 当今的自动控制技术绝大部分是基于反馈概念的。反馈理论包括三个基本要素:测量、比较和执行。测量关心的是变量,并与期望值相比较,以此误差来纠正和控制系统的响应。反馈理论及其在自动控制中应用的关键是:做出正确测量与比较后,如何用于系统的纠正与调节。 在过去的几十年里,PID 控制,也就是比例积分微分控制在工业控制中得到了广泛应用。在控制理论和技术飞速发展的今天,在工业过程控制中95%以上的控制回路都具有PID 结构,而且许多高级控制都是以PID 控制为基础的。 PID 控制器由比例单元(P)、积分单元(I)和微分单元(D)组成,它的基本原理比较简单,基本的PID 控制规律可描述为: G(S ) = K P + K1 + K D S (1-1) PID 控制用途广泛,使用灵活,已有系列化控制器产品,使用中只需设定三个参数(K P ,K I和K D )即可。在很多情况下,并不一定需要三个单元,可以取其中的一到两个单元,不过比例控制单元是必不可少的。 PID 控制具有以下优点: (1)原理简单,使用方便,PID 参数K P、K I和K D 可以根据过程动态特性变化,PID 参数就可以重新进行调整与设定。 (2)适应性强,按PID 控制规律进行工作的控制器早已商品化,即使目前最新式的过程控制计算机,其基本控制功能也仍然是PID 控制。PID 应用范围广,虽然很多工业过程是非线性或时变的,但通过适当简化,也可以将其变成基本线性和动态特性不随时间变化的系统,就可以进行PID 控制了。 (3)鲁棒性强,即其控制品质对被控对象特性的变化不太敏感。但不可否认PID 也有其固有的缺点。PID 在控制非线性、时变、偶合及参数和结构不缺点的复杂过程时,效果不是太好; 最主要的是:如果PID 控制器不能控制复杂过程,无论怎么调参数作用都不大。 在科学技术尤其是计算机技术迅速发展的今天,虽然涌现出了许多新的控制方法,但PID 仍因其自身的优点而得到了最广泛的应用,PID 控制规律仍是最普遍的控制规律。PID 控制器是最简单且许多时候最好的控制器。 在过程控制中,PID 控制也是应用最广泛的,一个大型现代化控制系统的控制回路可能达二三百个甚至更多,其中绝大部分都采用PID 控制。由此可见,在过程控制中,PID 控制的重要性是显然的,下面将结合实例讲述PID 控制。 1.1.1 比例(P)控制 比例控制是一种最简单的控制方式,其控制器的输出与输入误差信号成比例关系。当仅有比例控制时系统输出存在稳定误差。比例控制器的传递函数为: G C (S ) = K P (1- 2) 式中,K P 称为比例系数或增益(视情况可设置为正或负),一些传统的控制器又常用比例带(Proportional Band,PB),来取代比例系数K P ,比例带是比例系数的倒数,比例带也称为比例度。 对于单位反馈系统,0 型系统响应实际阶跃信号R0 1(t)的稳态误差与其开环增益K 近视成反比,即: t→∞

精心编制的 S7-300 PID 使用说明

定时中断组织块OB35 西门子S7-300/400有9个定时中断组织块:OB30、OB31、OB32、OB33、OB34、OB35、OB36、OB37、OB38 。 CPU可以定时中断去执行这些模块中的程序,即:每隔一段时间就停止当前的程序,转去执行定时中断组织块中的程序,执行结速后再返回。相当于单片机的定时中断。 这9个组织块功能相同,你可以选择其中之一使用,区别是它们的中断优先级不同,如果程序中用到了多个定时中断组织块,应设好它们的执行优先级。 S7-300CPU 可用的定时中断组织模块是OB35,在300站点的硬件组态中,打开CPU 属性设置可以看到其它的中断组织块为灰色。OB35默认的调用时间间隔为100ms 我们可以根据需要更改,定时范围是1-60000毫秒(ms) 设置中断时间间隔如下图所示 注意:设置的时间必须大于OB35中程序执行所花费的时间。 例如:如果中断时间间隔为50ms而OB35中的程序花费的时间是70ms,那么OB35中的程序还没执行完毕就产生第二次中断,程序就会出错,这显然是我们不想看到的结果。 以现在的技术,让你间隔一小时去月球拿一块石头你能做到吗??? 去月球所用的时间大于去月球的时间间隔,你做不到吧??? 正确设置:中断时间间隔大于OB35中程序执行完毕一次所需的时间

使用FB41实现PID控制 在自动化领域中常常要用到PID控制,而常规仪表里一个控制器就只能实现一路的PID 控制,如果要现实多路的PID控制成本就会变得非常高,而且不便于我们集中控制与管理。 经过学习西门子S7-300PLC,我们可以使用模块FB41来实现PID控制,FB41就相当于我们常规仪表里的控制器,既然是PID控制器就应该能够设定P、I、D参数。即:比例度、积分时间、微分时间。常规仪表的面板上可以更改PID参数,又有手动/自动切换按钮等。 今天我们要做的就是使用S7-300PLC 的FB41来代替常规仪表,如何使用FB41来实现PID控制的呢?? FB41是一个功能块,它所能实现的功能(PID)已经由专业人员设计好,我们只要调用它,并根据我们的需要来更改相应的参数即可使用。所以我们不用理会FB41是如何实现比例运算、积分运算、微分运算等等这些问题,只需要会调用就可以了。 现在我们已经知道FB41就相当于常规仪表里的一个控制器了,那么我们是如何使用FB41并给它设置相应的参数呢?? FB41相当于一个子程序,它是用来实现PID运算的,我们只需要每隔一段时间去调用这一“子程序”就可以实现PID控制。所以我们在OB35里调用FB41就可以了,调用的频率可以在属性里面设置。 我们是在OB35里调用FB41的所以在OB35里可以看到FB41的端口。因此可以直接在这些端口上直接设参数。 如下图所示

基于遗传算法的PID参数优化毕业设计(论文)

本科生毕业设计(论文) 论文题目:基于遗传算法的PID参数优化

毕业设计(论文)原创性声明和使用授权说明 原创性声明 本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。 作者签名:日期: 指导教师签名:日期: 使用授权说明 本人完全了解大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。 作者签名:日期:

学位论文原创性声明 本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律后果由本人承担。 作者签名:日期:年月日 学位论文版权使用授权书 本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。 涉密论文按学校规定处理。 作者签名:日期:年月日 导师签名:日期:年月日

PID调节和温度控制原理

P I D调节和温度控制原理 字体大小:||2006-10-2123:17-阅读:209-:0 当通过热电偶采集的被测温度偏离所希望的给定值时,PID控制可根据测量信号与给定值的偏差进行比例(P)、积分(I)、微分(D)运算,从而输出某个适当的控制信号给执行机构,促使测量值恢复到给定值,达到自动控制的效果。 比例运算是指输出控制量与偏差的比例关系。比例参数P设定值越大,控制的灵敏度越低,设定值越小,控制的灵敏度越高,例如比例参数P设定为4%,表示测量值偏离给定值4%时,输出控制量变化100%。积分运算的目的是消除偏差。只要偏差存在,积分作用将控制量向使偏差消除的方向移动。积分时间是表示积分作用强度的单位。设定的积分时间越短,积分作用越强。例如积分时间设定为240秒时,表示对固定的偏差,积分作用的输出量达到和比例作用相同的输出量需要240秒。比例作用和积分作用是对控制结果的修正动作,响应较慢。微分作用是为了消除其缺点而补充的。微分作用根据偏差产生的速度对输出量进行修正,使控制过程尽快恢复到原来的控制状态,微分时间是表示微分作用强度的单位,仪表设定的微分时间越长,则以微分作用进行的修正越强。 PID模块操作非常简捷只要设定4个参数就可以进行温度精确控制: 1、温度设定 2、P值 3、I值 4、D值

PID模块的温度控制精度主要受P、I、D这三个参数影响。其中P代表比例,I代表积分,D 代表微分。 比例运算(P) 比例控制是建立与设定值(SV)相关的一种运算,并根据偏差在求得运算值(控制输出量)。如果当前值(PV)小,运算值为100%。如果当前值在比例带内,运算值根据偏差比例求得并逐渐减小直到SV和PV匹配(即,直到偏差为0),此时运算值回复到先前值(前馈运算)。若出现静差(残余偏差),可用减小P方法减小残余偏差。如果P太小,反而会出现振荡。 积分运算(I) 将积分与比例运算相结合,随着调节时间延续可减小静差。积分强度用积分时间表示,积分时间相当于积分运算值到比例运算值在阶跃偏差响应下达到的作用所需要的时间。积分时间越小,积分运算的校正时间越强。但如果积分时间值太小,校正作用太强会出现振荡。 微分运算(D) 比例和积分运算都校正控制结果,所以不可避免地会产生响应延时现象。微分运算可弥补这些缺陷。在一个突发的干扰响应中,微分运算提供了一个很大的运算值,以恢复原始状态。微分运算采用一个正比于偏差变化率(微分系数)的运算值校正控制。微分运算的强度由微分时间表示,微分时间相当于微分运算值达到比例运算值在阶跃偏差响应下达到的作用所需的时间。微分时间值越大,微分运算的校正强度越强。 通常,对于温度控制的理解,是觉得其技术成熟且改变不大。有一些工业的应用,不仅对时间进行精确的控制,而且在当设定值改变时,对于快速加温阶段和扰动的快速响应形成最小程度的过冲(overshoot)和下冲(undershoot)。一般采用的PID控制技术难以满足这些特殊的场合。

PID参数设置参考说明

FB41称为连续控制的PID用于控制连续变化的模拟量,与FB42的差别在于后者是离散型的,用于控制开关量,其他二者的使用方法和许多参数都相同或相似。 PID的初始化可以通过在OB100中调用一次,将参数COM-RST置位,当然也可在别的地方初始化它,关键的是要控制COM-RST; PID的调用可以在OB35中完成,一般设置时间为200MS, 一定要结合帮助文档中的PID框图研究以下的参数,可以起到事半功倍的效果 以下将重要参数用黑体标明.如果你比较懒一点,只需重点关注黑体字的参数就可以了。其他的可以使用默认参数。 A:所有的输入参数: COM_RST:BOOL: 重新启动PID:当该位TURE时:PID执行重启动功能,复位PID内部参数到默认值;通常在系统重启动时执行一个扫描周期,或在PID进入饱和状态需要退出时用这个位; MAN_ON:BOOL:手动值ON;当该位为TURE时,PID功能块直接将MAN的值输出到LMN,这可以在PID框图中看到;也就是说,这个位是PID的手动/自动切换位;(默认为1) PEPER_ON:BOOL:过程变量外围值ON:过程变量即反馈量,此PID可直接使用过程变量PIW(不推荐),也可使用PIW规格化后的值(常用),因此,这个位为FALSE; P_SEL:BOOL:比例选择位:该位ON时,选择P(比例)控制有效;一般选择有效; I_SEL:BOOL:积分选择位;该位ON时,选择I(积分)控制有效;一般选择有效; INT_HOLD BOOL:积分保持,不去设置它; I_ITL_ON BOOL:积分初值有效,I-ITLVAL(积分初值)变量和这个位对应,当此位ON 时,则使用I-ITLVAL变量积分初值。一般当发现PID功能的积分值增长比较慢或系统反应不够时可以考虑使用积分初值; D_SEL :BOOL:微分选择位,该位ON时,选择D(微分)控制有效;一般的控制系统不用; CYCLE :TIME:PID采样周期,一般设为200MS; SP_INT:REAL:PID的给定值; PV_IN :REAL:PID的反馈值(也称过程变量); PV_PER:WORD:未经规格化的反馈值,由PEPER-ON选择有效;(不推荐) MAN :REAL:手动值,由MAN-ON选择有效; GAIN :REAL:比例增益; TI :TIME:积分时间; TD :TIME:微分时间; TM_LAG:TIME:我也不知道,没用过它,和微分有关; DEADB_W:REAL:死区宽度;如果输出在平衡点附近微小幅度振荡,可以考虑用死区来降低灵敏度; LMN_HLM:REAL:PID上极限,一般是100%; LMN_LLM:REAL:PID下极限;一般为0%,如果需要双极性调节,则需设置为-100%;(正负10V输出就是典型的双极性输出,此时需要设置-100%); PV_FAC:REAL:过程变量比例因子 PV_OFF:REAL:过程变量偏置值(OFFSET) LMN_FAC:REAL:PID输出值比例因子; LMN_OFF:REAL:PID输出值偏置值(OFFSET); I_ITLVAL:REAL:PID的积分初值;有I-ITL-ON选择有效;

PID白话式理解说明及智能车闭环控制详解

PID白话式理解说明及智能车闭环控制详解 By jiahangsonic 编码器专卖https://www.360docs.net/doc/8d10425787.html, 本文只是技术交流,仅仅是鄙人对一些知识的看法和认识,由于鄙人学疏才浅,必然会在本文中出现定义理解不深刻,原理叙述有误等错误,敬请各位高人理解,如有错误之处,请大家指出,我将积极学习改进。 其实很早就应该写这么一个东西,由于学习和工作太忙,一直没有时间去写,春节放假,偶尔有了时间,决心一定要写好,本文只是针对初学者,对于那些老鸟和大神们,基本上没有看的必要,所以再您看这篇文章之前,还要对我多多的理解和宽容,写不好,我改进学习,写的好,希望对您有帮助。 (一) PID的背景和一些原理上理解 PID控制技术,是最简单的闭环控制技术之一,一般都是利用单反馈或者多反馈来实现对控制对象的调节,实现被控对象的可控性和可预知性的控制。使得设备运行的更加的可靠,合理且平稳。 PID的全称为比例积分微分控制,P即为比例,I即为积分,D即为微分。PID往往都是应用于惰性系统,所谓惰性系统就是变化较慢且无法精确控制和调节的对象,其中最最重要的特点就是变化速度慢,调节速度慢,控制周期较长,最经典的控制对象就为温度的温控。 下面就举一个简单的例子进行说明: 比如我们要对一个水箱里面的水进行加热,我们的目标加热温度为100℃,首先我们不用闭环对水温进行加热,也就是说我们只是靠人为观察温度计的温度值来对加热器进行人工的干预。

当温度加热到100℃以后,我们就停止加热,这个时候,虽然水温已经到达100且加热器已经不再通电加热,但是由于加热器的预热和水本身传递温度的惰性,导致水温会继续上升,经过一段时间后,水温会继续升高,并且超过100℃,那么该系统就无法达到我们所预期的要求。 这个时候您谁想,停止加热后本身会继续散热继续升温,那等到温度到90摄氏度左右以后,我们停止加热,然后利用水的惰性和加热器的散热,让水温继续升温,正好达到100℃,这样不就解决问题了吗?这么想是对的,但是水温要达到90几度的时候我们停止加热呢?还有就是从停止加热到100℃的时间是多少?经过一段时间后,温度没有达到100℃,而是小于100摄氏度以后温度就达到了顶峰,这样怎么办? 上述所有的办法,可能能够解决水温到达100℃的要求,但是其中很多环节很多结果都是无法预测和无法控制的,即便经历了很麻烦的人为干预同时经过了一个较长的时间达到了我们对水温加热到100℃的要求,也要经历一个相当复杂和相当漫长的时间才能达到,并且整个过程一直要有人为的干预,实在是属于劳民伤财。 不只是对温度的控制,还有其他很多领域的过程控制,都遇到了这些让人很困惑问题,所以科学家就针对此类问题发明了闭环控制原理,其中最经典最简单最实用的就是PID闭环控制。该控制原理简单可靠,参数调整简便,实用性强,广泛的受到人们的支持。 利用PID控制原理对水温进行加热控制,我现在进行举例说明:目标温度

基于遗传算法的PID整定原理及matlab仿真程序

主程序:chap5_2.m %GA(Generic Algorithm) Program to optimize PID Parameters clear all; close all; global rin yout timef Size=30; CodeL=3; MinX(1)=zeros(1); MaxX(1)=20*ones(1); MinX(2)=zeros(1); MaxX(2)=1.0*ones(1); MinX(3)=zeros(1); MaxX(3)=1.0*ones(1); Kpid(:,1)=MinX(1)+(MaxX(1)-MinX(1))*rand(Size,1); Kpid(:,2)=MinX(2)+(MaxX(2)-MinX(2))*rand(Size,1); Kpid(:,3)=MinX(3)+(MaxX(3)-MinX(3))*rand(Size,1); G=100; BsJ=0; %*************** Start Running *************** for kg=1:1:G time(kg)=kg; %****** Step 1 : Evaluate BestJ ****** for i=1:1:Size Kpidi=Kpid(i,:); [Kpidi,BsJ]=chap5_2f(Kpidi,BsJ); BsJi(i)=BsJ; end [OderJi,IndexJi]=sort(BsJi); BestJ(kg)=OderJi(1); BJ=BestJ(kg); Ji=BsJi+1e-10; %Avoiding deviding zero fi=1./Ji; % Cm=max(Ji);

PID控制详解

PID控制原理和特点 工程实际中,应用最为广泛调节器控制规律为比例、积分、微分控制,简称PID控制,又称PID调节。PID控制器问世至今已有近70年历史,它以其结构简单、稳定性好、工作可靠、调整方便而成为工业控制主要技术之一。当被控对象结构和参数不能完全掌握,或不到精确数学模型时,控制理论其它技术难以采用时,系统控制器结构和参数必须依靠经验和现场调试来确定,这时应用PID控制技术最为方便。即当我们不完全了解一个系统和被控对象﹐或不能有效测量手段来获系统参数时,最适合用PID控制技术。PID控制,实际中也有PI和PD控制。PID控制器就是系统误差,利用比例、积分、微分计算出控制量进行控制。 1、比例控制(P): 比例控制是最常用的控制手段之一,比方说我们控制一个加热器的恒温100度,当开始加热时,离目标温度相差比较远,这时我们通常会加大加热,使温度快速上升,当温度超过100度时,我们则关闭输出,通常我们会使用这样一个函数 e(t) = SP – y(t)- u(t) = e(t)*P SP——设定值 e(t)——误差值 y(t)——反馈值 u(t)——输出值 P——比例系数 滞后性不是很大的控制对象使用比例控制方式就可以满足控制要求,但很多被控对象中因为有滞后性。 也就是如果设定温度是200度,当采用比例方式控制时,如果P选择比较大,则会出现当温度达到200度输出为0后,温度仍然会止不住的向上爬升,比方说升至230度,当温度超过200度太多后又开始回落,尽管这时输出开始出力加热,但温度仍然会向下跌落一定的温度才会止跌回升,比方说降至170度,最后整个系统会稳定在一定的范围内进行振荡。 如果这个振荡的幅度是允许的比方说家用电器的控制,那则可以选用比例控制 2、比例积分控制(PI): 积分的存在是针对比例控制要不就是有差值要不就是振荡的这种特点提出的改进,它常与比例一块进行控制,也就是PI控制。 其公式有很多种,但大多差别不大,标准公式如下: u(t) = Kp*e(t) + Ki∑e(t) +u0

PID使用说明

PID调节器又称回路调节器,本调节器提供的具体功能有:手动、自动、串级、及跟踪运行方式的切换,设定值、手动输出值的调整,PID参数的整定等。 PID调节有三种画面:回路操作画面、趋势显示画面和参数调整画面。下面介绍每种画面显示的信息及用途。 1.回路操作画面 在预先设置的PID热点上,单击鼠标左键,屏幕上将弹出如图3.11-1所示回路操作画面,由回路操作画面可分别进入其它两种画面。 (1)显示信息说明 在回路调节画面中显示的有设定值、过程值和输出值的棒图及数值显示,运行方式显示,报警状态显示等。 ?棒图显示 画面左边的三个棒图分别代表设定值、过程值和输出值,棒的颜色依次为蓝、天蓝、粉色。 设定值棒的高度为当前值相对量程的百分数。如果PID运行于串级状态,则设定棒显示串级外给定值,在其它运行状态下显示内给定值。 过程值棒的高度表示过程输入值。 输出棒的高度表示输出值。 ?数值显示 画面右下区域的三个方框中显示的内容依次为设定量、过程量及输出量的当前值,各数值颜色与棒颜色相对应。 当PID调节器运行于手动、自动或跟踪状态时,设定值为内部给定值;当运行于串级状态时,显示为串级输入值。 当PID调节器运行于手动状态时,输出值由手动给出;运行于自动和串级状态时,由算法结果给出;运行于跟踪状态时,为跟踪量点值。 ?报警状态显示 当偏差报警到来时,左上角灯置亮(呈红色);报警消失时,恢复正常颜色。 ?运行方式显示 PID调节器的运行方式包括手动、自动、串级及跟踪四种,当某个运行方式下的状态灯呈绿色时,表示调节器处于某方式。 ?其它 PID调节器画面静态显示的内容有点名、点描述(说明)等。

MATLAB遗传算法PID大作业.

遗传算法在调节控制系统参数中的应用 【摘要】自动化控制系统多采用PID 控制器来调节系统稳定性和动态性,PID 的 Kp,Ki,Kd 参数需要合理选择方能达到目标。遗传算法是一种模拟生物进化寻求最优解的有效算法,本文通过利用GAbx 工具箱实现对控制电机的PID 进行参数优化,利用matlab 的仿真功能可以观察控制效果。 1. 直流伺服电机模型 1.1物理模型 图1 直流伺服电机的物理模型 αu ---电枢输入电压(V ) a R ---电枢电阻(Ω) S L ---电枢电感(H ) q u ---感应电动势(V ) g T ---电机电磁转矩(N m ?) J---转动惯量(2m kg ?) B---粘性阻尼系数(s m N ??) g i ---流过电枢的电流(A ) θ---电机输出的转角(rad ) 1.2传递函数 利用基尔霍夫定律和牛顿第二定律得出电机基本方程并进行拉布拉斯变换 ) ()()()()()()()()()()(2s s K s U K s I s T s Bs s Js s T s I s L R s I s U s U e q t a g g a a a a q a θθθ?=?=?+?=?+?=- 式中:t K 为电机的转动常数(m N ?)A ;e K 为感应电动势常数(s V ?)rad

图2 直流伺服电机模型方框图 消去中间变量得系统的开环传递函数: s K K B Js R s L K s U s s G C t a d t a ]))([() () ()(+++= = θ 系统参数如下:s m uN B m mg J ??=?=51.3,23.32 A m N K K uH L R e t a a )(03.0,75.2,4?===Ω= 2. PID 校正 图3 PID 校正 s K s K K s G d i p c ++ =)( Kp,Ki,Kd 为比例,积分,微分系数 令Kp=15、Ki=0.8 、Kd=0.6 M 文件:J=3.23E-6; B=3.51E-6; Ra=4; La=2.75E-6; Kt=0.03; num= Kt; den=[(J*La) ((J*Ra)+(La*B)) ((B*Ra)+Kt*Kt) 0]; t=0:0.001:0.2; step(num,den,t); Kp=15; Ki=0.8; Kd=0.6; numcf=[Kd Kp Ki]; dencf=[1 0]; numf=conv(numcf,num); denf=conv(dencf,den); [numc,denc]=cloop(numf,denf); t=0:0.001:0.04; step(numc,denc,t); matlab 进行仿真,我们可以看出不恰当的PID 参数并不能使系统达到控制系统的要求,

常规pid控制器与模糊控制器的比较 ()

上机实验 已知系统的传递函数为G(S)=1/(10S+1)e-0.5s。假设系统给定为阶跃值r=30,系统的初始值r(0)=0试分别设计常规PID控制器和模糊控制器。 常规PID控制器的设计: 利用Ziegler-Nichols整定公式整定PID调节器的初始参数 由公式可得 P=18 Ti=1.65 Td=0

SIMULINK仿真图 设定仿真时间为10s 仿真结果

模糊控制器的设定 1 在matlab命令窗口输入“fuzzy”确定模糊控制器结构:即根据具体的系统确定输入、输出量。选取二维控制结构,即输入为误差e和误差变化ec,输出 为u如下图所示

2 输入输出变量的模糊化:即把输入输出的精确量转化为对应语言变量的模糊集合。首先我们要确定描述输入输出变量语言值的模糊子集,如{NB,NM,NS,ZO,PS,PM,PB},并设置输入输出变量的论域,然后我们为模糊语言变量选取相应的隶属度函数。如下图所示

3 模糊推理决策算法设计:即根据模糊控制规则进行模糊推理,并决策出模糊输出量。首先要确定模糊规则,即专家经验。如图。 制定完之后,会形成一个模糊控制规则矩阵,然后根据模糊输入量按照相应的模糊推理算法完成计算,并决策出模糊输出量。

4.对输出模糊量的解模糊:模糊控制器的输出量是一个模糊集合,通过反模糊化方法判决出一个确切的精确量,反模糊化方法很多,我们这里选取重心法。 SIMULINK仿真图 在模糊控制器的输入和输出均有一个比例系数,我们叫它量化因子,它反映的是模糊论域范围与实际范围之间的比例关系,这里模糊控制器输入的论域范围均为[-6,6],假设误差的范围是[-10,10],误差变化率范围是[-100,100],控制量的范围是[-24,24],那么我们就可以算出量化因子分别为0.6,0.06,8。量

S7-300PID控制说明

S7-300的PID控制的方法 1、这是一个典型的PID控制系统。 通过模拟量4--20mA的传感器来监视水池的液位,对应PLC的0-27648的工程值,经这个比例转换成水池的液位。对应的液位是你液位传感器对应的最高量程。这个值就是PID的反馈值。 阀门调节由量模拟量输出控制阀门调节开度,控制你水池的液位。 2、无法与实际水位对应(读的参数不知道表示什么意思)? 在PID调节中有不同的物理量,因此在参数设定中需将其规格化。参数规格化: 1.规格化概念及方法:PID参数中重要的几个变量,给定值, 反馈值和输出值都是用0.0~1.0之间的实数表示,因此,需要将模拟输入转换为0.0~1.0的数据,或将0.0~1.0的数据转换为模拟输出,这个过程称为规格化。规格化的方法:(即变量相对所占整个值域范围内的百分比对应与27648数字量范围内的量)。对于输入和反馈,执行:变量*100/27648,然后将结果传送到PV-IN和SP-INT,对于输出变量,执行:LMN*27648/100,然后将结果取整传送给PQW即可; 2.例: 输入参数: SP_INT(给定值):0--100%的实数。 假定模块的输入变量量程为0-10Mpa,则SP_IN的范围0.0-1.00

对应0-10米.可以根据这一比例关系来设置给定值。例:如给定5.0米 SP_INT(给定值)=5.0/(10.0-0.0)*100.0=50.0(50%) PV_IN(过程值,即反馈值):0--100%的实数。 此值来自与阀门阀位(开度)的相应的压力反馈值。其范围0.0-1.0对应0-100%.即,当模拟量模板输入为数值为27648时则对应100%(量程的上限),数值为0时则对应0%(量程的下限)。 可以根据这一比例关系来换算PV_IN值。例:如输入数值为12000时 PV_IN(过程值,即反馈值)=12000/27648*100.0=43.403(43.403%) 输出参数: 当通过PID控制器(FB41)运算后,即得出调节值LMN_PER,该值已转化范围为0-27648的整型数值。例如经运算为43.403%, LMN_PER=43.403*27648/100,取整后为12000,将LMN_PER 送入模拟量输出模板即可. 3、积分时间不知道该如何设定? (1)对于比例控制来说,将比例度调到比较大的位置,逐步减小以得到满意的曲线。 (2)对于比例积分来说,先将积分时间无限大,按纯比例作用

基于遗传算法的PID控制概述

龙源期刊网 https://www.360docs.net/doc/8d10425787.html, 基于遗传算法的PID控制概述 作者:张亚飞 来源:《卷宗》2013年第08期 摘要:基于PID控制应用的广泛性,本文简要阐述了遗传算法理论的关键思想及其在PID 控制中的应用策略,并用Matlab软件对一个控制实例进行了仿真研究。 关键词:PID控制;遗传算法;Matlab仿真 0 引言 PID控制作为最早实用化的控制算法已有70多年历史,现在仍然是控制系统中应用最为 普遍的一种控制规律。它所涉及的算法和控制结构简单,实际经验以及理论分析都表明,这种控制规律对许多工业过程进行控制时,一般都能得到较为满意的控制效果。随着控制理论的 发展,尤其是人工智能研究的日趋成熟,许多先进的算法理论逐渐被应用到传统的PID控制中,并取得了更为优越的控制效果。本文就以传统PID控制和遗传算法理论为基础,简述了基于遗传算法整定的PID控制基本理论和方法。 1 PID控制 通过将偏差的比例(Proportional)、积分(Integral)、微分(Derivative)进行线性组合构成控制量,对被控对象进行控制,这种控制方法叫做PID控制。在自动控制发展的历程中,常规PID控制得到了广泛的应用,整个控制系统由常规PID控制器和被控对象组成,根据系统给定值r(t)与实际输出值y(t)存在的控制偏差e(t)=r(t)-y(t)组成控制规律。PID控制器将偏差e(t)的比例-积分-微分通过线性组合构成控制量,对被控对象进行控制。其基本控制规律为 式中,Kp为比例增益,Ti为积分时间常数,Td为微分时间常数,u(t)为控制量,e (t)为偏差。 2 遗传算法基本操作 遗传算法,简称GA(Genetic Algorithms),是由美国Michigan大学的Holland教授于上世纪六十年代率先提出的一种高效并行全局最优搜索方法。遗传算法是模拟达尔文生物进化论的自然选择和孟德尔遗传学机理的生物进化过程的计算模型,它将“优胜劣汰,适者生存”的生物进化理论引入优化参数形成的编码串联群体中,按所选择的适配值函数通过遗传中的复制、交叉和变异对种群个体进行筛选,并保留适配值高的种群个体,组成新的群体。新的群体既继承了上一代的种群信息,又包含有优于上一代的个体信息,这样周而复始,种群中个体的适应度不断提高,直到满足一定的特定条件而停止运算,从而得到最优解。

基于遗传算法的PID参数整定

摘要:研究自动控制器参数整定问题,PID参数整定是自动控制领域研究的重要内容,系统参数选择决定控制的稳定性和快速性,也可保证系统的可靠性。传统的PID参数多采用试验加试凑的方式由人工进行优化,往往费时而且难以满足控制的实时要求。为了解决控制参数优化,改善系统性能,提出一种遗传算法的PID 参数整定策略。 在本文里,通过介绍了遗传算法的基本原理,并针对简单遗传算法在PID控制中存在的问题进行了分析,提出在不同情况下采用不同的变异概率的方法,并对其进行了实验仿真。结果表明,用遗传算法来整定PID参数,可以提高优化性能,对控制系统具有良好的控制精度、动态性能和鲁棒性。 关键词:PID控制器;遗传算法;整定PID 1 引言 传统的比例、积分、微分控制,即PID控制具有算法简单、鲁棒性好和可靠性高等优点,已经被广泛用于工业生产过程。但工程实际中,PID控制器的比例、积分和微分调节参数往往采用实验加试凑的方法由人工整定。这不仅需要熟练的技巧,往往还相当费时。更为重要的是,当被控对象特性发生变化,需要控制器参数作相应调整时,PID控制器没有自适应能力,只能依靠人工重新整定参数,由于经验缺乏,整定结果往往达不到最优值,难以满足实际控制的要求。考虑生产过程的连续性以及参数整定费事费力,这种整定实际很难进行。所以,人们从工业生产实际需要出发,基于常规PID控制器的基本原理,对其进行了各种各样的改进。近年来许多学者提出了基于各种智能算法的PID整定策略,如模糊PID,神经元网络PID等…,但这些先进算法都要求对被控对象有很多的先验知识,在实际应用中往往难于做到。随着计算技术的发展,遗传算法有了很大的发展。将遗传算法用于控制器参数整定,已成为遗传算法的重要应用之一。 本文介绍基于遗传算法的PID参数整定设计方法。这是一种寻求全局最优的控制器优化方法,且无需对目标函数微分,可提高参数优化效果,简化计算过程。仿真实例表明该方法与其他传统寻优方法相比,在优化效果上具有一定的优势。 2 遗传算法简介 2.1 遗传算法的基本原理 遗传算法是John H.Holland根据生物进化的模型提出的一种优化算法。自然选择学说是进化论的中心内容。根据进化论,生物的发展进化主要有三个原因:即遗传、变异和选择。遗传算法基于自然选择和基因遗传学原理的搜索方法,将“优胜劣汰,适者生存”的生物进化原理引入待优化参数形成的编码串群体中,按照一定的适应度函数及一系列遗传操作对各个体进行筛选,从而使适应度高的个体被保留下来,组成新的群体;新群体包含上一代的大量信息,并且引入了新的优于上一代的个体。这样周而复始,群体中各个体适应度不断提高,直至满足一定的极限条件。此时,群体中适应度最高的个体即为待优化问题的最优解。 遗传算法通过对参数空间编码并用随机选择作为工具来引导搜索过程朝着更高效的方向发展。正是由于遗传算法独特的工作原理,使它能够在复杂空间进行全局优化搜索,具有较强的鲁棒性。另外,遗传算法对于搜索空问,基本上不需要什么限制性的假设(如连续、可微及单峰等)。而其它优化算法,如解析法,往往只能得到局部最优解而非全局最优解,且需要目标函数连续光滑及可微;枚举

PID控制原理讲解

经常有人问有关PID的用法,看一些有关单片及应用的书上都有关于PID的应用原理,但是面对具体的问题就不知道如何应用了,主要的问题是里面所用到的参数以及计算结果需要进行什么处理,通过什么样的换算才能具体的应用于实际,另外在计算方法上也存在着数值计算的算法问题,今天我在这里例举温度控中的PID部分,希望能够把PID的具体应用说明白。 一般书上提供的计算公式中的几个名词: 1. 直接计算法和增量算法,这里的所谓增量算法就是相对于标准算法的相邻两次运算之差,得到的 结果是增量,也就是说,在上一次的控制量的基础上需要增加(负值意味着减少)控制量,例如对于可控硅电机调速系统,就是可控硅的触发相位还需要提前(或迟后)的量,对于温度控制就是需要增加(或减少)加热比例,根据具体的应用适当选择采用哪一种算法,但基本的控制方法、原理是完全一样的,直接计算得到的是当前需要的控制量,相邻两次控制量的差就是增量; 2. 基本偏差e(t),表示当前测量值与设定目标间的差,设定目标是被减数,结果可以是正或负,正 数表示还没有达到,负数表示已经超过了设定值。这是面向比例项用的变动数据。 3. 累计偏差Σ(e)= e(t)+e(t-1)+e(t-2)+…e(1),这是我们每一次测量到的偏差值的总和,这是代 数和,考虑到他的正负符号的运算的,这是面向积分项用的一个变动数据。 4. 基本偏差的相对偏差e(t)-e(t-1),用本次的基本偏差减去上一次的基本偏差,用于考察当前控 制的对象的趋势,作为快速反应的重要依据,这是面向微分项的一个变动数据。 5. 三个基本参数:Kp,Ki,Kd.这是做好一个控制器的关键常数,分别称为比例常数、积分常数和 微分常数,不同的控制对象他们需要选择不同的数值,还需要经过现场调试才能获得较好的效果。 6. 标准的直接计算法公式: Pout(t)=Kp*e(t)+Ki*Σe(t)+Kd*(e(t)-e(t-1)); 上一次的计算值: Pout(t-1)=Kp*e(t-1)+Ki*Σe(t-1)+Kd*(e(t-1)-e(t-2)); 两式相减得到增量法计算公式: Pdlt=Kp*(e(t)-e(t-1)+Ki*Σe(t)+Kd*(e(t)-2*e(t-1)+e(t-2)); *这里我们对Σ项的表示应该是对e(i)从1到t全部总和,但为了打字的简便就记作Σe(t). 三个基本参数Kp,Ki,Kd.在实际控制中的作用: 比例调节作用:是按比例反应系统的偏差,系统一旦出现了偏差,比例调节立即产生调节作用用以减少偏差。比例作用大,可以加快调节,减少误差,但是过大的比例,使系统的稳定性下降,甚至造成系统的不稳定。 积分调节作用:是使系统消除稳态误差,提高无差度。因为有误差,积分调节就进行,甚至无差,积分调节停止,积分调节输出一常值。积分作用的强弱取决于积分时间常数Ti,Ti越小,积分作用就越强。反之Ti大则积分作用弱,加入积分调节可使系统稳定性下降,动态响应变慢。积分作用常与另两种调节规律结合,组成PI调节器或PID调节器。 微分调节作用:微分作用反映系统偏差信号的变化率,具有预见性,能遇见偏差变化的趋势,因此能产生超前的控制作用,在偏差还没有形成之前,已被微分调节作用消除。因此,可以改善系统的动态性能。在微分时间选择合适情况下。可以减少超调,减少调节时间。微分作用对噪声干扰有放大作用,因此过强的加微分调节,对系统抗干扰不利。此外,微分反应是变化率,而当输入没有变化时,微分作用输出为零。微分作用不能单独使用,需要与另外两种调节规律相结合,组成PD或PID控制器。 具体应用中的数值量化处理: 上面只是控制算法的数学方法,似乎有点抽象,在具体的控制项目中怎样对应呢?也就是具体的量化问题。下面举一个在温度控制中的处理方法。

相关文档
最新文档