变速积分PID控制系统设计.docx
《变速积分PID控制系统设计.docx》由会员分享,可在线阅读,更多相关《变速积分PID控制系统设计.docx(37页珍藏版)》请在冰点文库上搜索。
变速积分PID控制系统设计
变速积分PID控制系统设计
摘要
在一般的PID调节算法中,由于积分系数KI是常数,所以在整个调节过程中,积分增益不变。
而系统对积分项的要求是,系统偏差大时,积分作用减弱以至全无,而在偏差较小时则应加强积分作用。
否则,积分系数取大了会产生超调,甚至出现积分饱和;取小了有迟迟不能消除静差。
因此,如何根据系统的偏差大小调整积分的速度,对于提高调节品质是至关重要的问题。
变速积分PID,较好地解决了这一问题。
变速积分PID的基本作法是设法改变积分项的累加速度,使其与偏差大小相对应。
偏差大时,积分累加速度慢,积分作用弱;反之,偏差小时,使积分累加速度加快,积分加强。
变速积分与积分分离控制方法很类似,积分分离对积分项采用“开关”控制,而变速积分则是根据误差的大小改变积分项速度,属线性控制。
因而,后者调节品质大为提高,是一种新型的PID控制。
关键词:
PID算法;控制;变速积分
DesignforPIDalgorithmwiththevariable-integratorControlSystem
Abstract
PIDregulationalgorithminGeneral,sincetheintegralcoefficientKIisconstant,sothroughouttheprocessofregulation,integralgainunchanged.Systemrequirementsforintegralis,whenthesystemoflargedeviation,weakenedandnointegralrole,andtheintegralroleshouldbestrengthenedwhendeviationssmaller.Otherwise,theintegralcoefficientlargerovershoot,evenintegralsaturation;max-mindelayineliminatingstaticerrors.Therefore,howtospeedofsystemdeviationsizeadjustmentbonuspoint,whichisessentialforimprovingthequalityofregulationissues.
PIDalgorithmwiththevariable-integrator,abettersolutiontothisproblem.PIDalgorithmwiththevariable-integrator'sbasicapproachistoattempttochangetheintegralsummationofthespeed,sothatitcorrespondstothesizeanddeviation.Largedeviations,pointsaddupslow,integralroleofweak,butdeviationshours,makethepointsaddupfast,integralstrengthening.
PIDalgorithmwiththevariable-integratorandintegral-separatedPIDmethodissimilartotheintegralseparationforintegralsusing"switch"control,variable-speedintegrationisbasedonerrorsofsizeandspeedchangeintegralarelinearcontrol.Thus,thelatterRegulationqualitygreatlyimproved,wasanewPIDcontrol.
KeyWords:
PIDalgorithm;variable-integrator;control
第1章前言
1.1PID算法简介
在模拟系统中,其过程控制方式就是将被测参数,如温度、压力、流量、成分、液位等,由传感器变换成统一的标准信号送入调节器。
在调节器中,与给定值进行比较,然后,把比较出的差值经PID运算后送到执行机构,改变进给量,以达到自动调节之目的。
在数字控制系统中,用数字调节器来模拟调节器。
起调节过程是首先把过程参数进行采样,并通过模拟量输入通道将模拟量变成数字量。
这些数字量由计算机按一定控制算法进行运算处理,运算结果由模拟量输出通道输出,并通过执行机构去控制生产,已达到给定值。
比例调节器(P)
比例调节器的微分方程为:
y=KPe(t)(4-1)
式中:
y为调节器输出;Kp为比例系数;e(t)为调节器输入偏差。
由上式可以看出,调节器的输出与输入偏差成正比。
因此,只要偏差出现,就能及时地产生与之成比例的调节作用,具有调节及时的特点。
积分作用:
指调节器的输出与输入偏差的积分成比例的作用。
积分方程为:
式中:
TI是积分时间常数,它表示积分速度的大小,TI越大,积分速度越慢,积分作用越弱。
若将比例和积分两种作用结合起来,就构成PI调节器,调节规律为:
微分作用:
比例微分调节器:
比例控制KP
KP加大,使系统的动作灵敏,速度加快;KP过大,振荡次数加多,调节时间加长;KP过大,使系统趋于不稳定;若KP过小,又会使系统动作缓慢。
加大KP在系统稳定的情况,可以减小稳态误差ess,提高控制精度,但加大KP却不能完全消除稳态误差。
积分控制TI
积分控制通常与比例或微分控制联合作用构成PI,PID积分控制参数TI通常使系统的稳定性下降;TI太小,系统将不稳定,振荡次数较多;TI太大,积分作用减少。
积分控制能消除系统的稳态误差,提高控制精度,但TI过大,积分作用太弱,以至不能减小ess。
微分控制TD
微分控制可以改善动态特性,减小超调量,缩短调节时间,但当TD偏大偏小,超调量大、调节时间较长,只有TD合适,才可以得到满意的过渡过程。
另外,微分对搞高频干扰不利。
为了进一步改善调节品质,往往把比例、积分、微分三种作用组合起来,形成PID调节器。
理想的PID微分方程为:
变换到S域为:
第2章变速积分PID控制原理及系统方案论证
2.1变速积分PID控制原理
2.1.1变速积分PID控制原理说明
变速积分是使积分项的累加速度与偏差大小相应,为此设一系数f[e(k)],它为e(k)函数,变速积分PID中积分项为
f[e(k)]与当前偏差e(k)是线性或非线性关系,f值在0~1区间变化
累加部分当前偏差
累加部分当前偏差
与积分分离相比,很类似,但调节方式不同积分分离采用的为“开关”控制,而变速积分则是缓慢变化,能提高调节品质。
2.1.2实验程序流程图
2.2课程设计目的、要求及设计方案论证
2.2.1设计目的
控制对象传递函数为
,采用TDN-AC/ACS计算机控制技术实验箱为平台,完成变速积分PID控制系统设计。
2.2.2设计要求实现
仿真线路图
2.2.3设计方案论证
使用汇编语言编程,其中对下限设置变量EIB,上限变量EIA,由式(1-5)可编写计算f[e(k)]的源程序。
TK为采样周期,计算机采用8253产生定是信号,T=TK*10ms。
可改变。
定义EI为误差绝对值,取值范围:
00H~0FFH。
可改变。
定义KPP为比例系数,KII积分系数,KDD为微分系数。
P、I、D范围为:
-0.9999~+0.9999,计算机分别用相邻三个字节存储其BCD码。
最低字节存符号,00H为正,01H为负。
中间字节存前2位小数,最高字节存末2位小数。
例如:
P=0.1234,其存储方式:
(2F03H)=00H,(2F04H)=12H,(2F05H)=34H。
可自行设定。
整体思路:
先对经采用/保持器离散化的信号采集,在存于堆栈段,编写A/D转换程序,将A/D转换结果传送至8088,8088根据所设定的EI值进行判断,f[e(k)]应选择哪一个,产生中断信号,执行中断子程序,将结果经D/A转换输出。
第3章系统硬件电路设计
3.1单片机的选择
本次设计以CPU选用89C5l作为步进电机的控制芯片.89C51的结构简单并可以在编程器上实现闪烁式的电擦写达几万次以上.使用方便等优点,而且完全兼容MCS5l系列单片机的所有功能。
AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—FAlshProgrAmmABleAndErAsABleReAdOnlyMemory)的低电压,高性能CMOS8位微处理器,俗称单片机。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案
3.1.1单片机的引脚功能
(1)VCC(40):
电源+5V。
(2)VSS(20):
接地,也就是GND。
(3)XTL1(19)和XTL2(18):
振荡电路。
单片机是一种时序电路,必须有脉冲信号才能工作,在它的内部有一个时钟产生电路,有两种振荡方式,一种是内部振荡方式,只要接上两个电容和一个晶振即可;另一种是外部振荡方式,采用外部振荡方式时,需在XTL2上加外部时钟信号。
(4)PSEN(29):
片外ROM选通信号,低电平有效。
(5)ALE/PROG(30):
地址锁存信号输出端/EPROM编程脉冲输入端。
(6)RST/VPD(9):
复位信号输入端/备用电源输入端。
(7)EA/VPP(31):
内/外部ROM选择端
(8)P0口(39-32):
双向I/O口。
(9)P1口(1-8):
准双向通用I/0口。
(10)P2口(21-28):
准双向I/0口。
3.1.2主要特性
与MCS-51兼容4K字节可编程闪烁存储器寿命:
1000写/擦循环数据保留时间:
全静态工作:
0Hz-24Hz三级程序存储器锁定、128*8位内部RAM、32可编程I/O线、两个16位定时器/计数器、5个中断源、可编程串行通道、低功耗的闲置和掉电模式、片内振荡器和时钟电路
(1)振荡器特性:
XTAL1和XTAL2分别为反向放大器的输入和输出。
该反向放大器可以配置为片内振荡器。
石晶振荡和陶瓷振荡均可采用。
如采用外部时钟源驱动器件,XTAL2应不接。
有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。
(2)芯片擦除:
整个PEROM阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ALE管脚处于低电平10ms来完成。
在芯片擦操作中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。
此外,AT89C51设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。
在闲置模式下,CPU停止工作。
但RAM定时器,计数器,串口和中断系统仍在工作。
在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。
3.2硬件电路连线图及仿真结果
仿真结果(上限70H,下限30H):
(TK=1.5)PID=0.22860.09310.3048(TK0.7)PID=0.22860.09310.3048
(TK=0.5)PID=0.22860.09310.3048(TK=1.0)PID=0.22860.09310.3048
第4章系统软件程序设计
4.1积分分离程序
L1:
MOVBH,AL;偏差Ek给BH(保护)
MOVBL,EI;上限A+B给BL
SUBAL,BL;E-(A+B)
JGDD6;E>A+B,无积分环节
MOVBL,ED;下限B
MOVAL,BH;回复偏差
SUBAL,BL;E-B
JNGDD0;E
MOVAL,BH;回复偏差
MOVAH,00H;AH清零
MOVBL,EI;上限A+B给BL
MOVBH,00H;BH清零
SUBBX,AX;EI-Ek(分子)
MOVAX,BX;分子给AL
MOVBH,00H;BH清零
SUBBL,ED;分母给BL
DIVBL;求系数
MOVAH,00H;AH清零
MOVKII2,AX;系数给KII2
MOVDX,KII2;系数给DX
JMPDDA;跳到执行积分
4.2总体程序
STACKSEGMENTSTACK
DW256DUP(?
)
STACKENDS
DATASEGMENT
TKDB11H
EIDB70H;上限
KPDB00H,22H,86H
KIDB00H,09H,31H
KDDB00H,30H,48H
EDDB30H;下限
EKBDB00H
EKKDW0000H
KPPDW0000H
KIIDW0000H
KDDDW0000H
KII2DW0000H
PEIEDW0000H
DE1DW0000H
DE2DW0000H
IEDW0000H
OUTPUTDW0000H
BA1DW1999H;十进制小数0.2转化后的
;16位二进制数
ALLKDW(?
)
XkDW(?
)
XXkDW(?
)
Xk_1DW(?
)
Xk_2DW(?
)
XK_3DW(?
)
ZZDB04H
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
PUSHDS
XORAX,AX
MOVDS,AX
MOVAX,2000H+OFFSETIRQ7
MOVSI,003CH
MOV[SI],AX
MOVAX,2000H+OFFSETIRQ6
MOVSI,0038H
MOV[SI],AX
MOVAX,0000H
MOVSI,003EH
MOV[SI],AX
MOVSI,003AH
MOV[SI],AX
CLI
POPDS
MOVAL,90H
OUT63H,AL
MOVAL,0A4H
OUT43H,AL
MOVAL,2EH
OUT42H,AL
INAL,21H
ANDAL,3FH
OUT21H,AL
MOVSI,OFFSETKD+2
MOVBH,03H
MOVDI,OFFSETKDD+1
CALLCHANGE
MOVAL,80H
OUT00H,AL
MOVBL,01H
AGAIN:
STI
HLT
JMPAGAIN
IRQ6:
MOVAL,80H
OUT00H,AL
MOVAL,00H
OUT61H,AL
MOVAX,0000H
MOVDE2,AX
MOVIE,AX
MOVBL,01H
MOVAL,20H
OUT20H,AL
IRET
IRQ7:
CALLCY
DECBL
JNZFINISH
CALLLVBO
MOVCL,03H
SARDX,CL
MOVEKK,DX
MOVAX,DX
MOVDX,KPP
CALLML
MOVPEIE,DX
MOVDX,KDD
MOVAX,EKK
CALLML
MOVDE1,DX
MOVAL,EKB
MOVBL,00H
SUBAL,BL
JGL1
NEGAL
JMPL1
FINISH:
MOVAL,20H
OUT20H,AL
IRET
L1:
MOVBH,AL;偏差Ek
MOVBL,EI;上限A+B
SUBAL,BL;E-(A+B)
JGDD6;E>A+B,无积分环节
MOVBL,ED;下限B
MOVAL,BH
SUBAL,BL
JNGDD0;E
MOVAL,BH
MOVAH,00H
MOVBL,EI
MOVBH,00H
SUBBX,AX;EI-Ek(分子)
MOVAX,BX;分子给AL
MOVBH,00H
SUBBL,ED;分母给BL
DIVBL
MOVAH,00H
MOVKII2,AX
MOVDX,KII2
JMPDDA
DD0:
MOVDX,KII
DDA:
MOVAX,EKK
CALLML
MOVAX,IE
ADDDX,AX
MOVIE,DX
TESTDH,80H
JZDD1
MOVAX,0F000H
ANDAL,AL
SBBDX,AX
JGDD2
MOVDX,0F000H
JMPDD4
DD1:
MOVAX,0FFFH
ANDAL,AL
SBBDX,AX
JGDD3
DD2:
MOVDX,IE
JMPDD5
DD3:
MOVDX,0FFFH
DD4:
MOVIE,DX
DD5:
MOVAX,PEIE
ADDDX,AX
MOVPEIE,DX
DD6:
MOVAX,DE2
MOVDX,DE1
MOVDE2,DX
ANDAL,AL
SBBDX,AX
MOVAX,PEIE
ADDDX,AX
CALLOUT_PUT
MOVBL,TK
JMPFINISH
ML:
CMPDX,7FFFH
JAML1
IMULDX
RET
ML1:
PUSHBX
PUSHCX
PUSHAX
SUBDX,7FFFH
IMULDX
MOVBX,DX
MOVCX,AX
POPAX
MOVDX,7FFFH
IMULDX
ADDAX,CX
ADCDX,BX
POPCX
POPBX
RET
CY:
INAL,60H
SUBAL,80H
MOVEKB,AL
MOVSI,OFFSETXK_2
MOVDI,OFFSETXK_3
MOVZZ,04H
Z1:
MOVAX,[SI]
MOV[DI],AX
DECSI
DECSI
DECDI
DECDI
DECZZ
JNZZ1
MOVAX,0000H
MOVAH,EKB
MOVXK,AX
RET
LVBO:
MOVAX,0000H
MOVALLK,AX
MOVSI,OFFSETBA1
MOVDI,OFFSETXK
MOVCX,0005H
LL1:
MOVDX,[SI]
MOVAX,[DI]
INCDI
INCDI
CALLML
ADDDX,ALLK
MOVALLK,DX
DECCX
JNZLL1
RET
OUT_PUT:
MOVOUTPUT,DX
TESTDH,80H
JZL7
MOVBX,0F000H
SUBDX,BX
JGL8
MOVDX,0F000H
MOVAL,80H
OUT61H,AL
JMPL9
L7:
MOVBX,0FFFH
SUBDX,BX
JGL10
L8:
MOVDX,OUTPUT
JMPL11
L10:
MOVDX,0FFFH
MOVAL,80H
OUT61H,AL
L9:
MOVOUTPUT,DX
L11:
MOVCL,03H
SHLDX,CL
MOVAL,DH
ADDAL,80H
OUT00H,AL
L12:
RET
CHANGE:
DECSI
MOVCX,[SI]
INCSI
ANDAL,AL
MOVDX,0000H
MOVBL,10H
GO:
MOVAL,[SI]
ADDAL,AL
DAA
MOV[SI],AL
DECSI
MOVAL,[SI]
ADCAL,AL
DAA
RCLDX,0001H
MOV[SI],AL
INCSI
DECBL
JNZGO
DECSI
MOV[SI],CX
DECSI
TESTBYTEPTR[SI],01H
JNZQB1
FIN:
DECDI
MOV[DI],DX
DECSI
DECDI
DECBH
JNZCHANGE
RET
QB1:
NEGDX
JMPFIN
CODEENDS
ENDSTART
4.3MATLAB程序及仿真曲线
clearall;
closeall;
%%%%%BigtimedelayPlant
ts=20;
sys=tf([1],[60,1],'inputdelay',80);
dsys=c2d(sys,ts,'zoh');
[num,den]=tfdata(dsys,'v');
u_1=0;u_2=0;u_3=0;u_4=0;u_5=0;
y_1=0;y_2=0;y_3=0;
error_1=0;error_2=0;
ei=0;
fork=1:
1:
200
time(k)=k*ts;
rin(k)=1.0;%StepSignal
%%%%%Linearmodel
yout(k)=-den
(2)*y_1+num
(2)*u_5;
error(k)=rin(k)-yout(k);
kp=0.45;kd=12;ki=0.0048;
A=0.4;B=0.6;
%Ttypeintegration
ei=ei+(error(k)+error_1)/2*ts;
M=1;
ifM==1%Changingintegrationrate
ifabs(error(k))<=B
f(k)=1;
elseifabs(error(k))>B&abs(error(k))<=A+B
f(k)=(A-abs(error(k))+B)/A;
else
f(k)=0;
end
elseifM==2%Notchangi