单片机模糊PID自整定控制算法的实现及仿真
供热系统模糊自整定PID控制的操作指南

供热系统模糊自整定PID控制的操作指南供热系统模糊自整定PID控制的操作指南供热系统模糊自整定PID控制操作指南供热系统模糊自整定PID控制是一种常用的控制方法,可以根据实时的供热需求自动调整控制参数,以实现系统的稳定运行和节能优化。
下面将介绍一种逐步思考和实施的操作指南。
1. 确定控制目标:首先,需要明确控制目标,例如保持供热温度稳定在设定值附近,或者根据供热负荷变化自动调整供热输出。
2. 收集系统数据:收集供热系统的相关数据,包括供热温度、供热负荷、供水流量等。
这些数据将用于模糊控制算法的计算和参数调整。
3. 设计模糊控制器:根据系统特性和控制目标,设计模糊控制器的输入和输出变量。
输入变量可以是供热温度误差和供热负荷变化率,输出变量可以是供热输出。
选择合适的模糊集合和模糊规则,以反映实际的供热控制逻辑。
4. 初始参数设定:根据经验或者系统特性,设定初始的模糊控制参数。
这些参数包括模糊集合的边界和中心值,模糊规则的权重等。
初始参数的设定可以根据实验结果进行调整。
5. 实时数据采集:将实时的供热系统数据输入到模糊控制器中。
这些数据可以通过传感器或者数据采集系统获取。
6. 模糊推理计算:根据输入数据和模糊规则,进行模糊推理计算,得到模糊输出。
这个输出表示了供热输出的调整幅度。
7. 去模糊处理:将模糊输出转化为具体的控制量,可以采用去模糊处理方法,例如重心法、最大值法等。
去模糊处理后得到的控制量即为供热系统的实际输出。
8. 控制参数调整:根据实际的供热效果和控制需求,可以进行控制参数的调整。
可以根据实验结果或者专家经验进行调整,以达到更好的控制效果。
9. 性能评估和优化:对控制系统的性能进行评估和优化。
可以根据控制误差、响应时间、稳定性等指标进行评估,进一步调整控制参数,以提高系统的性能和稳定性。
10. 持续监控和维护:在实际运行中,持续监控控制系统的运行情况,及时调整参数和处理故障。
定期进行系统维护和检修,确保供热系统的稳定运行和控制效果。
PID参数自整定的方法及实现

PID参数自整定的方法及实现近年来出现的各种智能型数字显示调节仪,一般都具有PID参数自整定功能。
仪表在初次使用时,可通过自整定确定系统的最佳P、I、D调节参数,实现理想的调节控制。
在自整定启动前,因为系统在不同设定值下整定的参数值不完全相同,应先将仪表的设定值设置在要控制的数值(如果水电站或是中间值)上。
在启动自整定后,仪表强制系统产生扰动,经过2~3个振荡周期后结束自整定状态。
仪表通过检测系统从超调恢复到稳态(测量值与设定值一致)的过度特性,分析振荡的周期、幅度及波形来计算仪表的最佳调节参数。
理想的调节效果是,设定值应与测量值保持一致,可从动态(设定值变化或扰动)合稳态(设定值固定)两个方面来评价系统调节品质,通过PID参数自整定,能够满足大多数的系统。
不同的系统由于惯性不同,自整定时间有所不同,从几分钟到几小时不等。
我单位有一台DYJ-36-2型油加热器。
该油加热器是由加热炉体、载体传输通道、膨胀系统及电控装置构成,与用热设备组成了一个循环加热系统。
热载体(导热油)在炉体内被电热管加热后,用热油泵通过管路传送到用热设备,放热后再次回到炉体内升温,实现连续循环过程。
控制油温的调节仪表时日本SHIMADEN(岛电)公司的SR73型PID自整定温控仪。
温度控制系统为闭环负反馈系统。
由热电偶检测的油温信号对应的mV信号,传送至调节仪的信号输入端,调节仪输出DC15V、20mV的高电平信号,传送至SSR固态继电器,驱动晶闸管过零触发开关电路,改变固定期内的输出占空比,从而控制电热器的输出功率。
在系统投入运行前,我们对调节仪进行PID参数的自整定工作。
首先把它的设定值(SV)调至工艺常用温度90℃。
仪表提供了一组PID参数:比例带P=0.1%~999.9%积分时间I=1~6000s微分时间D=0~3600s再进入功能彩旦,把P、I、D参数分别按经验值设定为:P=3.0;I=120;D=30;超调抑制系数SF=0.4。
51单片机pid算法程序

51单片机pid算法程序51单片机是一种广泛应用于嵌入式系统开发的微控制器。
PID算法是一种常用的控制算法,用于实现系统的闭环控制。
本文将介绍如何在51单片机上实现PID算法。
PID算法是一种经典的控制算法,它能够根据系统的反馈信息,自动调整控制量,使系统的输出接近期望值。
PID算法由比例项(P 项)、积分项(I项)和微分项(D项)组成。
比例项用来根据当前误差大小调整控制量,积分项用来根据过去误差的累积值调整控制量,微分项用来根据误差的变化速度调整控制量。
在51单片机上实现PID算法,首先需要编写程序来读取系统的反馈信息和期望值。
例如,可以通过ADC模块读取传感器的信号,然后通过计算得到当前误差。
接下来,根据比例项、积分项和微分项的系数,计算PID控制量。
最后,将PID控制量输出到执行机构,例如电机或舵机,来控制系统的输出。
在编写PID算法程序时,需要注意一些细节。
首先,要根据实际系统的特点和要求来选择合适的PID参数。
比例项的系数决定了控制量对误差的敏感程度,积分项的系数决定了控制量对误差累积值的敏感程度,微分项的系数决定了控制量对误差变化速度的敏感程度。
其次,要注意处理PID算法中的积分项和微分项的累积误差。
积分项的累积误差可能会导致系统出现超调或震荡,需要适当地进行限制或清零。
微分项的累积误差可能会导致系统出现噪声放大或不稳定,需要进行滤波或限制。
最后,要注意程序的效率和实时性。
PID算法通常需要以一定的频率进行计算和更新,要保证程序能够及时响应系统的变化。
除了基本的PID算法,还可以根据具体的应用需求进行算法的优化和改进。
例如,可以引入自适应调整PID参数的方法,使系统能够根据实时的工作条件自动调整PID参数。
还可以引入前馈控制或模糊控制等方法,进一步提高系统的控制性能和鲁棒性。
51单片机是一种常用的嵌入式系统开发平台,可以很方便地实现PID算法。
通过合理选择PID参数和优化算法,可以实现对系统的精确控制。
参数自整定模糊PID程序

附 录 被控对象为32580000()8712000p G s s s s =++时参数自整定模糊PID 程序>> clear all>> a=newfis('fuzzypid');% 设定输入e 的范围、隶属度函数;>> a=addvar(a,'input','e',[-3 3]);>> a=addmf(a,'input',1,'NB','zmf',[-3 -1]);>> a=addmf(a,'input',1,'NM','trimf',[-3 -2 0]);>> a=addmf(a,'input',1,'NS','trimf',[-3 -1 1]);>> a=addmf(a,'input',1,'Z','trimf',[-2 0 2]);>> a=addmf(a,'input',1,'PS','trimf',[-1 1 3]);>> a=addmf(a,'input',1,'PM','trimf',[0 2 3]);>> a=addmf(a,'input',1,'PB','smf',[1 3]);% 设定输入ec 的范围、隶属度函数;>> a=addvar(a,'input','ec',[-3 3]);>> a=addmf(a,'input',2,'NB','zmf',[-3 -1]);>> a=addmf(a,'input',2,'NM','trimf',[-3 -2 0]);>> a=addmf(a,'input',2,'NS','trimf',[-3 -1 1]);>> a=addmf(a,'input',2,'Z','trimf',[-2 0 2]);>> a=addmf(a,'input',2,'PS','trimf',[-1 1 3]);>> a=addmf(a,'input',2,'PM','trimf',[0 2 3]);>> a=addmf(a,'input',2,'PB','smf',[1 3]);% 设定输出kp 的范围、隶属度函数;>> a=addvar(a,'output','kp',[-0.3 0.3]);>> a=addmf(a,'output',1,'NB','zmf',[-0.3 -0.1]);>> a=addmf(a,'output',1,'NM','trimf',[-0.3 -0.2 0]);>> a=addmf(a,'output',1,'NS','trimf',[-0.3 -0.1 0.1]);>> a=addmf(a,'output',1,'Z','trimf',[-0.2 0 0.2]);>> a=addmf(a,'output',1,'PS','trimf',[-0.1 0.1 0.3]);>> a=addmf(a,'output',1,'PM','trimf',[0 0.2 0.3]);>> a=addmf(a,'output',1,'PB','smf',[0.1 0.3]);% 设定输出ki 的范围、隶属度函数;>> a=addvar(a,'output','ki',[-0.06 0.06]);>> a=addmf(a,'output',2,'NB','zmf',[-0.06 -0.02]);>> a=addmf(a,'output',2,'NM','trimf',[-0.06 -0.04 0]);>> a=addmf(a,'output',2,'NS','trimf',[-0.06 -0.02 0.02]);>> a=addmf(a,'output',2,'Z','trimf',[-0.04 0 0.04]);>> a=addmf(a,'output',2,'PS','trimf',[-0.02 0.02 0.06]);>> a=addmf(a,'output',2,'PM','trimf',[0 0.04 0.06]);>> a=addmf(a,'output',2,'PB','smf',[0.02 0.06]);% 设定输出kd 的范围、隶属度函数;>> a=addvar(a,'output','kd',[-3 3]);>> a=addmf(a,'output',3,'NB','zmf',[-3 -1]);>> a=addmf(a,'output',3,'NM','trimf',[-3 -2 0]); >> a=addmf(a,'output',3,'NS','trimf',[-3 -1 1]); >> a=addmf(a,'output',3,'Z','trimf',[-2 0 2]); >> a=addmf(a,'output',3,'PS','trimf',[-1 1 3]); >> a=addmf(a,'output',3,'PM','trimf',[0 2 3]); >> a=addmf(a,'output',3,'PB','smf',[1 3]);% 设定模糊规则;>> rulelist=[1 1 7 1 5 1 1;1 2 7 1 3 1 1;1 3 62 1 1 1;1 4 62 1 1 1;1 5 5 3 1 1 1;1 6 4 42 1 1;1 7 4 4 5 1 1;2 1 7 1 5 1 1;2 2 7 13 1 1;2 3 6 2 1 1 1;2 4 53 2 1 1;2 5 53 2 1 1;2 6 4 43 1 1;2 734 4 1 1;3 1 6 14 1 1;3 2 6 2 3 1 1;3 3 6 3 2 1 1;3 4 5 3 2 1 1;3 54 4 3 1 1;3 6 3 5 3 1 1;3 7 3 54 1 1;4 1 6 2 4 1 1;4 2 6 2 3 1 1;4 35 3 3 1 1;4 4 4 4 3 1 1;4 5 3 5 3 1 1;4 6 2 6 3 1 1;4 7 2 6 4 1 1;5 1 5 2 4 1 1;5 2 5 3 4 1 1;5 3 4 4 4 1 1;5 4 3 5 4 1 1;5 5 3 5 4 1 1;5 6 2 6 4 1 1;5 7 2 7 4 1 1;6 1 5 47 1 1;6 2 4 4 5 1 1;6 3 3 5 5 1 1;6 4 2 5 5 1 1;6 5 2 6 5 1 1;6 6 27 5 1 1;6 7 1 7 7 1 1;7 1 4 4 7 1 1;7 2 4 4 6 1 1;7 3 2 5 6 1 1;7 4 2 6 6 1 1;7 5 2 6 5 1 1;7 6 1 7 5 1 1;7 7 1 7 7 1 1];>> a=addrule(a,rulelist);>> a=setfis(a,'DefuzzMethod','mom');>> writefis(a,'fuzzpid');>> a=readfis('fuzzpid');%PID控制器设定;>> ts=0.001;>> sys=tf(5.8e005,[1,87,1.2e004,0]);>> dsys=c2d(sys,ts,'tustin');>> [num,den]=tfdata(dsys,'v');>> u_1=0.0;u_2=0.0;u_3=0.0;>> y_1=0;y_2=0;y_3=0;>> x=[0,0,0]';>> error_1=0;>> e_1=0.0;ec_1=0.0;>> kp0=0.40;kd0=1.0;ki0=0.0;>> for k=1:1:500time(k)=k*ts;rin(k)=1;k_pid=evalfis([e_1,ec_1],a);kp(k)=kp0+k_pid(1);ki(k)=ki0+k_pid(2);kd(k)=kd0+k_pid(3);u(k)=kp(k)*x(1)+kd(k)*x(2)+ki(k)*x(3);if u(k)>=10u(k)=10;endif u(k)<=-10u(k)=-10;endyout(k)=-den(2)*y_1-den(3)*y_2-den(4)*y_3+num(1)*u(k)+num(2)*u_1+num(3)*u_2+num(4)*u_ 3;error(k)=rin(k)-yout(k);%返回PID参数;u_3=u_2;u_2=u_1;u_1=u(k);y_3=y_2;y_2=y_1;y_1=yout(k);x(1)=error(k);%计算P x(2)=error(k)-error_1;%计算D x(3)=x(3)+error(k);%计算I e_1=x(1);ec_1=x(2);error_2=error_1;error_1=error(k);end>> figure(1);plot(time,rin,'b',time,yout,'r');>> xlabel('time(s)');ylabel('rin,yout');>> figure(2);plot(time,error);>> xlabel('time(s)');ylabel('error');>> figure(3);plot(time,kp);>> xlabel('time(s)');ylabel('kp');>> figure(4);plot(time,ki);>> xlabel('time(s)');ylabel('ki');>> figure(5);plot(time,kd);>> xlabel('time(s)');ylabel('kd');。
模糊PID控制

模糊PID控制综述摘要:PID控制以其原理简单,使用方便,适应性强,制时精度低、抗干扰能力差等缺点,提出了一种参数自适应模糊PID控制方法。
本文通过介绍模糊PID控制在几种不同系统应用的实例,以体现模糊PID控制有较强的鲁棒性、具有更好的动、静态性能和抗干扰能力。
关键词:PID、模糊控制、仿真1. PID控制:所谓 PID 控制,就是集成了比例、积分和微分的控制。
比例控制器是自动控制原理中最典型的,用途也比较广泛,可以看作是个成比例的放大器。
比例控制器最主要的优点是其简单性,但是它的缺点是存在有稳态误差。
消除稳态误差的方法可以用一个积分控制器,积分控制式:其中,表示积分增益。
积分控制器的优点在于输出比例于积累的误差,缺点是会使系统的稳定性见效,原因是积分控制是在原点处增加了一个极点,而在前行通路增加极点则会使得原根轨迹向右半平面弯曲。
消除稳态误差还可以用微分控制器,微分控制式:其中,表示微分增益。
微分控制器的优点是在误差变大之前就提供一个较大的校正,而缺点则是在误差不变化时,不产生输出控制,并且对噪声敏感,会放大高频噪声。
PID 控制器,顾名思义,就是综合了比例控制,积分控制和微分控制三者的特点,将这三种控制器联合起来使用所得到的控制器。
PID 控制器可以消除单一控制器带来的缺点,可以表示为如下式:式中,kp与表示比例增益,ki表示积分增益,kd表示微分增益。
PID 控制器的设计过程中,其重点就是要选取合适的参数,以使得控制系统能够达到预期的控制目标。
2.模糊PID控制PID 控制要求对控制器的参数进行严格的整定,使得当参数变化时,PID控制器参数不能随着被控对象的变化而作相应的调整,进行自我优化,导致系统超调量较大。
由于比例、积分和微分系数的数值固定,在变负载、慢时变参数的情况下,需要人工干预去重新整定控制器的参数,这既降低了工作效率,又增加了成本,且效果不佳。
为了实现较为精确的控制,引入了模糊算法,提高控制精度。
PID控制算法介绍与实现

PID控制算法介绍与实现PID控制算法是一种用于实现控制系统的经典算法。
PID代表了三个主要的控制参数,即比例(Proportional)、积分(Integral)和微分(Derivative)。
PID控制算法基于反馈控制原理,通过对系统当前状态和目标状态之间的误差进行分析和调整,实现对系统输出的精确控制。
PID控制算法的原理是,通过对比目标值和实际值之间的差异,计算出控制量,并根据调整参数的权重对控制量进行调节,以减小误差并将系统稳定在目标状态中。
比例项根据误差的大小和比例参数的比例关系,使控制量与误差呈线性关系;积分项则通过累计误差并乘以积分参数来补偿系统的漂移和持续误差;微分项则根据误差的变化率乘以微分参数,以增加控制的灵敏度和反应速度。
PID控制算法的实现一般分为两个主要步骤:参数设置和控制计算。
在参数设置阶段,需要根据具体的应用要求和系统特性,通过试验或者调试确定合适的比例、积分和微分参数。
在控制计算阶段,根据当前的误差和控制参数,计算出相应的控制量,并更新控制器,以实现系统的控制。
具体的PID控制算法实现可以通过如下步骤进行:1.初始化控制器:设置比例、积分和微分参数,并将误差累计器和上一次误差设为0。
2.读取目标值和实际值:从传感器或外部输入中读取目标值和实际值。
3.计算误差:根据目标值和实际值计算误差,即偏差。
4.计算控制量:根据比例、积分和微分参数,计算出相应的比例项、积分项和微分项,将它们加权求和得到控制量。
5.更新控制器:将当前的误差作为下一次的上一次误差,将当前的控制量作为下一次的上一次控制量。
6.输出控制量:将计算出的控制量输出到执行器或系统中,实现对系统的控制。
7.循环调用:以上步骤循环调用,实时更新控制参数和控制量,以实现系统的稳定控制。
除了基本的PID控制算法外,还存在一些改进和扩展的PID算法,如自适应PID控制算法、模糊PID控制算法、增量PID控制算法等。
这些算法在不同的应用场景和系统要求下,进一步优化和改进了传统的PID控制算法,提高了控制精度、调节性能和适应性。
PID控制算法介绍与实现
PID控制算法介绍与实现PID控制算法是一种经典的反馈控制算法,通过测量控制系统的误差值,调整控制器输出来实现目标控制。
PID是比例(P)、积分(I)和微分(D)三个部分的缩写,分别代表了系统的比例响应,积分响应和微分响应。
在PID算法中,比例控制(P)部分根据误差的大小反馈调整控制输出,使误差减小。
积分控制(I)部分根据误差的累积值反馈调整控制输出,用来消除系统的稳态误差。
微分控制(D)部分根据误差的变化率反馈调整控制输出,用来抑制系统的振荡和超调。
\[u(t) = K_p \cdot e(t) + K_i \cdot \int_0^t e(\tau) d\tau + K_d \cdot \frac{d}{dt} e(t)\]其中,\(u(t)\)表示控制输出,\(e(t)\)表示误差,\(K_p\)、\(K_i\)和\(K_d\)分别表示比例、积分和微分系数。
在实际应用中,这些系数需要通过试验或者调整来获得最佳的控制效果。
另一种实现方式是使用现代控制器或者PLC等设备来实现PID算法。
这些设备通常具有多个输入输出端口,能够直接与各种传感器和执行机构进行通信。
它们通常具有丰富的PID算法控制函数,并提供了可调参数和控制策略等高级功能。
在PID控制算法的实现中,需要注意一些常见的问题和技巧:1.PID参数调整:PID算法的效果好坏与调整参数密切相关。
传统的调参方法是通过试验和经验来调整参数,但这种方法耗时且不精确。
现代的方法可以通过自适应控制和优化算法等来自动调整PID参数,以达到最佳效果。
2.非线性系统:PID算法最初设计用于线性系统,对于非线性系统可能会产生较大的误差。
针对非线性系统,可以使用先进的控制算法如模糊控制和自适应控制来改进PID算法的性能。
3.鲁棒性设计:PID算法对参数变化和扰动敏感。
在实际控制中,往往存在参数变化和扰动的情况,需要通过鲁棒性设计来抵抗这些干扰,保证系统的稳定性和控制性能。
pid控制实验报告[最新版]
pid控制实验报告pid控制实验报告篇一:PID控制实验报告实验二数字PID控制计算机控制是一种采样控制,它只能根据采样时刻的偏差值计算控制量。
因此连续PID控制算法不能直接使用,需要采用离散化方法。
在计算机PID控制中,使用的是数字PID控制器。
一、位置式PID控制算法按模拟PID控制算法,以一系列的采样时刻点kT代表连续时间t,以矩形法数值积分近似代替积分,以一阶后向差分近似代替微分,可得离散PID位置式表达式:Tu T ?kpeu=para; J=0.0067;B=0.1; dy=zeros= y= -+ = k*ts; %time中存放着各采样时刻rineu_1=uerror_1=error;%误差信号更新图2-1 Simulink仿真程序其程序运行结果如表2所示。
Matlab输出结果errori = error_1 = 表2 例4程序运行结果三、离散系统的数字PID控制仿真1.Ex5 设被控对象为G?num 仿真程序:ex5.m%PID Controller clear all; close all;篇二:自动控制实验报告六-数字PID控制实验六数字PID控制一、实验目的1.研究PID控制器的参数对系统稳定性及过渡过程的影响。
2.研究采样周期T对系统特性的影响。
3.研究I型系统及系统的稳定误差。
二、实验仪器1.EL-AT-III型自动控制系统实验箱一台 2.计算机一台三、实验内容1.系统结构图如6-1图。
图6-1 系统结构图图中 Gc(s)=Kp(1+Ki/s+Kds) Gh(s)=(1-e)/s Gp1(s)=5/((0.5s+1)(0.1s+1)) Gp2(s)=1/(s(0.1s+1))-TS 2.开环系统(被控制对象)的模拟电路图如图6-2和图6-3,其中图6-2对应GP1(s),图6-3对应Gp2(s)。
图6-2 开环系统结构图1 图6-3开环系统结构图2 3.被控对象GP1(s)为“0型”系统,采用PI控制或PID控制,可使系统变为“I型”系统,被控对象Gp2(s)为“I型”系统,采用PI控制或PID控制可使系统变成“II型”系统。
PID控制算法的简单分析和仿真!
PID控制算法的简单分析和仿真!PID算法简单剖析如下:1、⾸先我们来看⼀下PID系统的基本组成模块:如图所⽰,图中相关参数的表⽰如下:r(t):系统实际上需要的输出值,这是⼀个标准值,在我们设定了之后让这个系统去逼近的⼀个值(随时间变化的原因是,我们对系统的需求不同才会改变!)y(t):系统当前的输出值,这个值应该需要趋近于我们设定的值,当我们没有增加PID控制模块之前,它是由被控对象通过r(t)输⼊直接产⽣的。
e(t):系统由于某些扰动,导致的系统产⽣的偏差,实际输出的值和想要设定的初始值r(t)的差值。
u(t):系统通过PID控制器输出的新的输⼊值,实际上他是在r(t)的基础上,针对当前的实际情况做出的改变。
Kp⽐例模块:系统PID⽐例因⼦,Kp能够对于产⽣的偏差e(t)能够迅速的作出反应,减少偏差。
Ki积分模块:系统PID积分因⼦,Ki能够⽤于消除静差,由于前⾯的误差有正有负,所以当前偏差的加⼊能够抵消部分,保持系统的稳定性,让系统有记忆功能。
Kd微分模块:系统微分因⼦,Kd能够体现出当前误差的变化趋势,引⼊有效早期修正信号,从⽽加快系统的动作速度,减少调节时间。
图中所⽰的信号关系公式如下所⽰:信号误差公式:模拟信号的PID控制器公式:离散信号的PID控制器公式:被控对象的信号公式:(简单的线性系统,⽐如电机的PWM调速系统)上述公式参数描述:Kp控制器⽐例系数、Ti控制器积分时间(积分系数)、Td控制器微分时间(微分系数)k采样序列号,k=0,1,2,3...、Uk第k次采样时刻系统输出值、ek第k次采样时刻偏差值、ek-1第k-1次采样时刻偏差值、Ki=Kp*T/Ti、Kd=Kp*Td/T2、离散信号的PID控制器算法仿真:1、位置式PID算法:PID系统产⽣的值,完全作为系统的输⼊参数,即采⽤u(k)代替了r(k),如果计算机出现故障时,位置式PID控制将导致Uk的剧烈变化,这会引起执⾏机构的⼤幅度变化,造成巨⼤损失。
模糊PID自整定算法在PLC中的实现
・
10・ 5
辽 宁 科 技 大 学 学 报
第3 卷 3
的软件包 , 实现需要 用户采 用基本 指令完成 , 难度 较大 ; 在调 试过 程 中 , 模糊 规 则发 生 变化 , 改 和调 若 修
试过 程十分耗 时 。为提高 P C的编程 和调试效率 , L 采用 离线计 算查询 表 的方 法 , 使用 MA A TL B软件 的
Smuik和 F zy工具箱— —F SE i r可方 便地 获得复杂 的查询 表 。 i l n uz I dt , o
图 1 模 糊 PD 自整 定 控 制 结 构 图 I
Fi . S r t r f u z — D d p ie c n r l g1 tu u e o z y PI a a t o to f v
12 模 糊控 制器 的 实现 .
用 P C实 现模 糊控 制算 法 由模 糊 化程 序 、 糊 推 理程 序 和 解模 糊 程 序 三部 分 组 成 。其 中 , L 模 模糊 推
理程 序 在 P C中实 现较 为 困难 , L 主要体 现 在模 糊 规则 的编 写 、 糊规 则 表 的 生成 和 模 糊规 则 的 调试 与 模
修改 三 个 环 节 。模 糊 规 则 主 要 由语 言 变 量 和 I—HE 语 句 构 成 , 用 S FT N 采 7编程 软 件 平 台 没 有 对 应
收 稿 日期 :000 .9 2 1 —10 。
作 者 简 介 : 童 谣 ( 9 9 , , 宁 鞍 山人 。 王 1 8 一) 女 辽
控制算法的快捷方法 。实验结 果表 明, 于 软 件平 台 实现模 糊 P D 自整 定控 制 算法 , 基 I 对水位控 制较 常规
PD 控 制调 节 时 间 减 少 9 , 调 量 降 低 4 , I 0S超 % 改善 系统 的性 能 。模 糊 规 则 调 节 过 程 验 证 了 结 合 MAT A 的 LB
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1 / 1 单片机模糊PID自整定控制算法的实现及仿真 单片机模糊PID自整定控制算法的实现及仿真 作者:未知 文章来源:网络 点击数: 923 更新时间:2009-5-23 由于液压伺服系统的固有特性(如死区、泄漏、阻尼系数的时变性以及负载干扰的存在),系统往往会呈现典型的不确定性和非线性特性。这类系统一般 很难精确描述控制对象的传递函数或状态方程,而常规的PID控制又难以取得良好的控制效果。另外,单一的模糊控制虽不需要精确的数学模型,但是却极易在平 衡点附近产生小振幅振荡,从而使整个控制系统不能拥有良好的动态品质。
本文针对这两种控制的优缺点并结合模糊控制技术,探讨了液压伺服系统的模糊自整定PID控制方法,同时利用MATLAB软件提供的 Simulink和Fuzzy工具箱对液压伺服调节系统的模糊自整定PID控制系统进行仿真,并与常规PID控制进行 了比较。此外,本文还尝试将控制系统通过单片机的数字化处理,并在电液伺服实验台上进行了测试,测试证明:该方法能使系统的结构简单化,操作灵活化,并可 增强可靠性和适应性,提高控制精度和鲁棒性,特别容易实现非线性化控制。
1 模糊PID自整定控制器的设计 本控制系统主要完成数据采集、速度显示和速度控制等功能。其中智能模糊控制由单片机完成,并采用规则自整定PID控制算法进行过程控制。整个系 统的核心是模糊控制器,AT89C51单片机是控制器的主体模块。电液伺服系统输出的速度信号经传感器和A/D转换之后进入单片机,单片机则根据输入的各 种命令,并通过模糊控制算法计算控制量,然后将输出信号通过D/A转换送给液压伺服系统,从而控制系统的速度。该模糊控制器的硬件框图如图1所示。
模糊控制器的主程序包括初始化、键盘管理及控制模块和显示模块的调用等。温度信号的采集、标度变换、控制算法以及速度显示等功能的实现可由各子 程序完成。软件的主要流程是:利用AT89C51单片机调A/D转换、标度转换模块以得到速度的反馈信号,然后根据偏差和偏差的变化率计算输入量,再由模 糊PID自整定控制算法得出输出控制量。启动、停止可通过键盘并利用外部中断产生,有按键输入则调用中断服务程序。该程序的流程图如图2所示。 1 / 1
2 模糊控制器算法研究 采用模糊PID自整定控制的目的是使控制器能够根据实际情况调整比例系数Kp、积分系数Ki和微分系数Kd,以达到调节作用的实时最优。该电液伺服系统的Fuzzy自整定PID控制系统结构如图3所示。
为了简化运算和满足实时性要求,即该调节系统的基本控制仍为PID控制,但使PID调节参数由模糊自整定控制器根据偏差e和偏差变化率ec进行自动调整,同时把模糊自整定控制器的模糊部分按Kp、Ki和Kd分成3部分,分别由相应的子推理器来实现。
2.1 输入值的模糊化 模糊自整定PID控制器是在fuzzy集的论域中进行讨论和计算的,因而首先要将输入变量变换到相应的论域,并将输人数据转换成合适的语言值, 也就是要对输入量进行模糊化。结合本液压伺服系统的特性,这里选择模糊变量的模糊集隶属函数为正态分布,具体分布如图4所示。 1 / 1
根据该规则可把实际误差e、 误差变化率ec(de/dt)对应的语言变量E、EC表示成模糊量。E、EC的基本论域为[-6,+6],将其离散成13个等级即[-6,-5,-4,- 3,-2,-1,0,+1,+2,+3,+4,+5,+6]。考虑到控制的精度要求,本设计将[-6,+6]分为负大[NB]、负中[NM]、负小 [NS]、零[ZO]、正小[PS]、正中[PM]、正大[PB]等7个语言变量,然后由e、ec隶属函数根据最大值法得出相应的模糊变量。
2.2 模糊控制规则表的建立 (1) Kp控制规则设计 在PID控制器中,Kp值的选取决定于系统的响应速度。增大Kp能提高响应速度,减小稳态误差;但是,Kp值过大会产生较大的超调,甚至使系统 不稳定减小Kp可以减小超调,提高稳定性,但Kp过小会减慢响应速度,延长调节时间。因此,调节初期应适当取较大的Kp值以提高响应速度,而在调节中期, Kp则取较小值,以使系统具有较小的超调并保证一定的响应速度;而在调节过程后期再将Kp值调到较大值来减小静差,提高控制精度。Kp的控制规则如表1所 列。
(2) Ki控制规则设计 在系统控制中,积分控制主要是用来消除系统的稳态误差。由于某些原因(如饱和非线性等),积分过程有可能在调节过程的初期产生积分饱和,从而引 起调节过程的较大超调。因此,在调节过程的初期,为防止积分饱和,其积分作用应当弱一些,甚至可以取零;而在调节中期,为了避免影响稳定性,其积分作用应 该比较适中;最后在过程的后期,则应增强积分作用,以减小调节静差。依据以上分析,制定的Ki控制规则表如表2所列。 1 / 1
(3) Kd控制规则设计 微分环节的调整主要是针对大惯性过程引入的,微分环节系数的作用在于改变系统的动态特性。系统的微分环节系数能反映信号变化的趋势,并能在偏差 信号变化太大之前,在系统中引入一个有效的早期修正信号,从而加快响应速度,减少调整时间,消除振荡.最终改变系统的动态性能。因此,Kd值的选取对调节 动态特性影响很大。Kd值过大,调节过程制动就会超前,致使调节时间过长;Kd值过小,调节过程制动就会落后,从而导致超调增加。根据实际过程经验,在调 节初期,应加大微分作用,这样可得到较小甚至避免超调;而在中期,由于调节特性对Kd值的变化比较敏感,因此,Kd值应适当小一些并应保持固定不变;然后 在调节后期,Kd值应减小,以减小被控过程的制动作用,进而补偿在调节过程初期由于Kd值较大所造成的调节过程的时间延长。依据以上分析,制定的Kd控制 规则表如表3所列。
2.3 逆模糊化处理及输出量的计算 对经过模糊控制规则表求得的Kp、Ki、Kd采用重心法进行逆模糊化处理(重心法在此就不做详细介绍)的公式如下: 1 / 1
式中,u(k)为k采样周期时的输出,e(k)为k采样周期时的偏差,T为采样周期,通过输出u(k)乘以相应的比例因子Ku就可得出精确的输出量u。其公式如下:
3 实验结果分析 常规PID控制时通过调节 PID三个参数,就可以得到系统比较理想的响应图,控制效果的优良与参数的调整有很大的关系,也能提高快速性。但三个参数的调整非常繁琐。而且,如果系统 环境不断变化,则参数又必须进行重新调整,往往达不到最优。而采用模糊PID控制后,通过模糊控制器对PID进行非线性的参数整定,可使系统无论是快速性 方面还是稳定性方面都达到比较好的效果。
笔者将上述PID控制及模糊PID控制分别进行了仿真试验,实验分别在单独模糊PID控制情况下和模糊PID控制两种情况下进行。并在在线运 行过程中通过逻辑规则的结果处理、查表和运算完成了对PID参数的在线自矫正。系统的偏差绝对值以及偏差的变化绝对值的取值范围可根据实际经验分别确定为 [-0.1 cm/s,0.1 cm/s】和[-0.06 cm/s2,0.06 cm/s2],以而确定相对控制效果较好时Kp、Ki、Kd的取值范围为Kp[-0.3,0.3]、Ki[-0.06,0.06]、Kd[-3,3]。
传统PID和模糊PID实验所得的曲线分别如图5及图6所示。从图中可以发现,采用模糊控制策略整定PID参数相对于普通PID控制策略,其系统的稳态性得到了较大的改善,响应时间大大减少,超调量也得到了一定的改善。 1 / 1 4 结束语 实验证明:该单片机模糊PID自整定控制器对于电液伺服控制系统具有较好的效果。实践中可以根据工程控制的具体情况及对超调量、稳定性、响应速度的不同要求,来调整模糊PID控制器三个参数的取值范围,从而得到不同的控制精度和控制效果。
总之,本文研究的模糊PID控制器具有以下一些特点: (1) 算法简单实用,本质上不依赖于系统的数字模型; (2) 可充分利用单片机的软件资源,可靠性高,开发速度快; (3) 克服了传统PID控制器操作的困难,提高了系统的智能化程度; 1 / 1
(4) 模糊PID控制器棒性好,具有专家控制器的特点,并可推广应用于其它工作领域。 单片机模糊PID自整定控制算法的实现及仿真 1 / 1 单片机模糊PID自整定控制算法的实现及仿真
作者:未知 文章来源:网络 点击数: 923 更新时间:2009-5-23 1 / 1 由于液压伺服系统的固有特性(如死区、泄漏、阻尼系数的时变性以及负载干扰的存在),系统往往会呈现典型的不确定性和非线性特性。
这类系统一般 很难精确描述控制对象的传递函数或状态方程,而常规的PID控制又难以取得良好的控制效果。另外,单一的模糊控制虽不需要精确的数学模型,但是却极易在平 衡点附近产生小振幅振荡,从而使整个控制系统不能拥有良好的动态品质。
本文针对这两种控制的优缺点并结合模糊控制技术,探讨了液压伺服系统的模糊自整定PID控制方法,同时利用MATLAB软件提供的 Simulink和Fuzzy工具箱对液压伺服调节系统的模糊自整定PID控制系统进行仿真,并与常规PID控制进行 了比较。此外,本文还尝试将控制系统通过单片机的数字化处理,并在电液伺服实验台上进行了测试,测试证明:该方法能使系统的结构简单化,操作灵活化,并可 增强可靠性和适应性,提高控制精度和鲁棒性,特别容易实现非线性化控制。
1 模糊PID自整定控制器的设计 本控制系统主要完成数据采集、速度显示和速度控制等功能。其中智能模糊控制由单片机完成,并采用规则自整定PID控制算法进行过程控制。整个系 统的核心是模糊控制器,AT89C51单片机是控制器的主体模块。电液伺服系统输出的速度信号经传感器和A/D转换之后进入单片机,单片机则根据输入的各 种命令,并通过模糊控制算法计算控制量,然后将输出信号通过D/A转换送给液压伺服系统,从而控制系统的速度。该模糊控制器的硬件框图如图1所示。
模糊控制器的主程序包括初始化、键盘管理及控制模块和显示模块的调用等。温度信号的采集、标度变换、控制算法以及速度显示等功能的实现可由各子 程序完成。软件的主要流程是:利用AT89C51单片机调A/D转换、标度转换模块以得到速度的反馈信号,然后根据偏差和偏差的变化率计算输入量,再由模 糊PID自整定控制算法得出输出控制量。启动、停止可通过键盘并利用外部中断产生,有按键输入则调用中断服务程序。该程序的流程图如图2所示。