数字控制器设计
- 格式:doc
- 大小:755.04 KB
- 文档页数:16
课程论文数字PID控制器设计学生成绩:学生学号:学生姓名:学生专业:课程名称:数字控制技术任课教师:提交日期:2015 年 1 月7 日数字PID 控制器设计摘要本文在完成计算机控制学习的基础上结合自动控制原理的学科知识,自拟题目,利用计算机控制系统的知识,借助MATLAB ,完成对自拟系统的分析和PID 控制器的设计,并将硬件电路画出。
关键词:计算机控制,PID 控制器,MATLAB 一﹑前言设单位反馈系统的开环传递函数为)130)(15)(1()(0+++=ss s Ks G ,设计数字PID 控制器,使系统的稳态误差不大于0.1,超调量不大于20%,调节时间不大于0.5s 。
并采用位置算法实现该PID 控制器。
二﹑设计原理PID 控制是最早发展起来的经典控制策略,是用于过程控制最有效的策略之一。
由于其原理简单.技术成熟,在实际应用中较易于整定,在工业控制中得到了广泛的应用。
它最大的优点是不需了解被控对象精确的数学模型,其需在线根据系统误差段误差的变化率等简单参数,经过经验进行调节器参数在线整定,即可取得满意的结果。
具有很大的适应性和灵话性。
PID 控制中的积分作用可以减少稳态误差,但另一方面也容易导致积分饱和,使系统的超调量增大。
微分作用可提高系统的响应速度,但其对高频干扰特别敏感,甚至会导致系统失稳。
所以,正确计算PID 控制器的参数,有效合理地实现PID 控制器的设计,对于PID 控制器在过程控制中的广泛应用具有重要的理论和现实意义。
在典型PID 控制系统中.PID 控制器分别对误差信号E (t )进行比例、积分与微分运算.其结果的加权和集成系统的控制信号u(t),送给对象模型加以控制。
PID 控制器的数学描述为:01()()()()tp D Ide t u t K e t e t dt T T dt ⎡⎤=++⎢⎥⎣⎦⎰(2.1)其传递函数可表示为:()1()(1)()p D I U s D s K T s E s T s ==++(2.2)从根本上讲,设计PID 控制器也就是确定其比例系数Kp 、积分系数Ti 和微分系数Td 。
,这三个系数取值的不同,决定了比例、积分和微分作用的强弱。
控制系统的整定就是在控制系统的结构已经确定、控制仪表和控制对象等处在正常状态的情况下.适当选择控制器的参数使控制仪表的特性和控制对象的特性相配合.从而使控制系统的运行达到最佳状态,取得最好的控制效果。
位置式PID 控制算法。
由于计算机控制是一种采样控制,它只能根据采样时刻的偏差值计算控制量,需要进行离散化处理。
现以一系列的采样时刻点kT 代表连续时间t ,以和式代替积分,以增量代替微分,则可以作近似变换;图1由于计算机控制是一种采样控制系统,它只能根据采样时刻的偏差值计算控制量。
因此,(2.2)式中的积分和微分项不能直接使用,需要进行离散化处理。
现令T 为采样周期,以一系列的采样时刻点kT 代表连续时间t ,以累加求和近似代替积分,以一阶后向差分近似代替微分,做如下的近似变换:t=KT (2.3) ∑∑⎰===≈kj kj tj e T jT e T t e 00)()()( (2.4)Tk e k e T T k e kT e dt t de )1()(])1[()()(--=--≈ (2.5) 其中,T 为采样周期,e(k)为系统第k 次采样时刻的偏差值,e(k-l)为系统第(k-l)次采样时刻的偏差值,k 为采样序号,k=0,1,2,…。
将上面的(2.4)式和(2.4)式代入(2.2)式,则可以得到离散的PID 表达式)]}1()([)()({)(0--++=∑=k e k e TT j e T T t e K k u Dkj IP (2.6) 如果采样周期了足够小,该算式可以很好的逼近模拟PID 算式,因而使被控过与连续控制过程十分接近。
通常把(2.6)式称为PID 的位置式控制算法。
若在(2.6)式中,令:IP I T TK K =(称为积分系数) ;T T K K D P D = (称为微分系数)则)]1()([)()()(0--++=∑=k e t e K j e K t e K k u D kj I P (2.7)(2.7)式即为离散化的位置式PID 控制算法的编程表达式。
可以看出,每次输出与过去的所有状态都有关,要想计算u(k),不仅涉及e(k)和e(k-l),且须将历次e(j)相加,计算复杂,浪费内存。
下面,推导计算较为简单的递推算式。
为此,对(2.7)式作如下的变动:考虑到第(k-l)次采样时有)]}2()1([)()1({)1(1---++-=-∑==k e k e TT j e T Tk e K k u Dk j IP (2.8) 使(2.7)式两边对应减去(2.8)式,得)]}2()1(2)([)()1()({)1()(-+--++--=--k e k e k e TTk e T T k e k e K k u k u D I P 整理后的()(1){[()(1)]()[()2(1)(2)]}2(1)(1)()(1)(1)(2)D P I DD D P P P I T Tu k u k K e k e k e k e k e k e k T TT T T T u k K e k K e k K e k T T T T=-+--++--+-=-+++-+-+-)2()1()()1(210-+--+-=k e a k e a k e a k u (2.9)其中,TTK a T T K a T T T T K a D P D P D I P =+=++=210)21()1(,,,(2.9)式就是PID 位置式得递推形式。
如果令)1()()(--=∆k u k u k u 则)2()1()()(210-+--=∆k e a k e a k e a k u (2.10) 式中的210a a a 、、同(2.10)式中的一样。
因为在计算机控制中0a 、1a 、2a 都可以事先求出,所以,实际控制时只须获得e(k)、e(k-l)、e(k-2)三个有限的偏差值就可以求出控制增量。
由于其控制输出对应执行机构的位置的增量,故(2.10)式通常被称为PID 控制的增量式算式。
三﹑数字PID 参数整定利用扩充临界比例度法选择数字PID 参数,扩充临界比例度法是以模拟PID 调节器中使用的临界比例带法为基础的一种数字PID 参数的整定方法。
其整定步骤如下:;1.选择一个足够短的采样周期T 。
通常选择采样周期为被控对象纯滞后时间的1/10。
2.在纯比例的作用下,给定输入阶跃变化时,逐渐加大比例作用Kp(即减小比例带δ),直至系统出现等幅震荡,记录比例增益Kc,及振荡周期Tc 。
Kc 成为临界振荡比例增益(对应的临界比例带δ),Tc 成为临界振荡周期。
在MATLAB 下输入如下程序:sysc=tf([1],[1/150,36/150,185/150,1]); p=[20:1:45];for i=1:length(p);sysc0=feedback(p(i)*sysc,1); step(sysc0),hold on end;axis([0,10,0,2.3]) 得到如下图所示图形:0123456789100.511.52Step ResponseTime (sec)A m p l i t u d e图2调整程序参数p=[40:1:45]进一步精确得Kc 约为43.2,Tc 约为0.5,观察控制系统的响应特性。
在MATLAB 下输入如下程序: sysc=tf([1],[1/150,36/150,185/150,1]); p=[40:1:45]; for i=1:length(p);sysc0=feedback(p(i)*sysc,1); step(sysc0),hold on end;axis([0,10,0,2.3]) 得到如下图所示图形:图3扩充临界比例度法选择数字PID 参数的计算公式如下表所示: 3.选择控制度。
控制度的定义为数字调节器和模拟调节所对应的过度0123456789100.511.52System: sysc0Time (sec): 5.01Amplitude: 1.03Step ResponseTime (sec)A m p l i t u d e过程的误差平方积分之比,即控制度=202D e dte dt∞∞⎰⎰式中,D e 为数字调节器的控制误差;e 为模拟调节器的控制误差.当控制度为1.05时,数字调节器鱼模拟调节器的控制效果相当;当控制度为2时,数字调节器比模拟调节器的控制效果差一倍;在此选控制度为1.05。
4.按选择的控制度指标及Tc,Kc 实验测得值,由查表选择相应的计算公式计算采样周期:T=0.007,Kp=27,Ti=0.245,Td=0.07;P I i IK TK K T T ===0.77,d P D D K K T K T T ===270, Ki=0.23图4 四﹑建立simulink 模型 1.采用后向差分离散化,可得:1111()1()()()1p i d z s TU z T z D z D s K K K E z z T----=-===++-= 在Matlab-simulink 中建立如下模型Scope中得到阶跃响应曲线如下所示:图5由图可见超调量较大减小Kp的值,增大Kd用试凑法得到一组数据:T=0.014,Kp=15,Ki=0.23 ,Kd=2502.采用后向差分离散化。
Matlab-simulink中建立如下模型:Scope中阶跃响应图形如下图6由上图可看出上组数据满足了任务要求:系统的稳态误差不大于0.1,超调量不大于20%,调节时间不大于0.5s。
五MCS-51单片机实现控制器的设计控制系统结构框图如下:图71.器件选择主控制器选用熟悉的AT89c51单片机。
由于没有对精度的要求,选用常见的8位AD/DA芯片ADC0809和DAC0832。
由于系统要求采样周期0.015ms,而上述AD、DA芯片转化时间很短(ADC0809约100us,DAC0832约1us),因此上述芯片满足要求。
2.电路设计1、A/D芯片与单片机连接:单片机与AD、DA采用总线方式连接,锁存器74LS373进行地址锁存。
采用统一编址方式访问。
地址线A0,A1,A2,A3分别于A,B,C,ALE连接,通过地址选择IN0口为输入。
2、DAC0832与单片机连接如下:电流输出,经双运放转化,输出为双极性。
系统总电路如下:3.程序设计程序采用汇编语言编写主程序流程图、中断服务程序、PID算法流程图如下:开始↓输入给定值r(k)↓初始化↓调用AD转换程序测出输出值c(k)↓计算偏差e(k)=r(k)-c(k)↓Up(k)=Kb*e(k)Ui(k)=Ki[e(k)+Ui(k-1)]Ud(k)=Kd[e(k)-e(k-1)]↓U(k)=Up(k)+Ui(k)+Ud(k)e(k)→e(k-1)Ui(k)→Ui(k-1)↓调用DA转换程序输出控制量u(k)Y N到达采样周期?程序设计如下:R EQU 31H ;给定值(阶跃响应)KP EQU 32H ;存放kpKI EQU 33H ;存放256*kiKD EQU 34H ;存放kdE0 EQU 35H ;存放e(k)E1 EQU 36H ;存放e(k-1)UPL EQU 37H ;Up(k)的低8位UPH EQU 38H ;Up(k)的高8位UIL EQU 39H ;Ui(k-1)的低8位UIH EQU 3AH ;Ui(k-1)的高8位DAT EQU 3BH ;采样AD数据c(k)UK EQU 3CH ;PID输出ORG 0000HAJMP MAINORG 000BHLJMP ITT0ORG 0100HMAIN: MOV SP,#60HMOV R0,#31HMOV R1,0CH CLR ALOOP: MOV @R0,A ;31H~3CH清0INC R0DJNZ R1,LOOPMOV R,#01H ;给定阶跃值1MOV KP,#16 ;比例系数kp=16MOV KI,#3AH ;积分系数256*ki=3AH以整数输入MOV KD,#250 ;微分系数kd=250MOV TMOD,#01H ;设置定时器0方式1工作(16位定时器)MOV TL0,#0C9H ;定时14msMOV TH0,#4FHSETB TR0HERE: AJMP HEREITT0: MOV TL0,#0C9H ;重装初值MOV TH0,#4FHACALL ADC ;调用AD转换程序ACALL PID ;调用PID控制程序 ACALL DAC ;调用DA转换程序RETIADC: MOV DPTR,#0F8H ;ADC0809模拟输入通道IN0的地址MOVX @DPTR,A ;启动AD转换ACALL DELAY ;软件延时1s,等待转换结束MOVX A,@DPTR ;读取转换结果MOV DAT,A ;转换结果保存,以便PID控制程序使用DAC: MOV R0,#0F0H ;DAC0832地址F0H 送R0MOV A, UK ;PID输出MOVX @R0,A ;启动DA转换RETDELAY: PUSH PSWPUSH ACCSETB RS0 ;选第1组为当前工作寄存器区CLR RS1MOV R1,#05HLOOP1: MOV R0,#64HLOOP2: DJNZ R0,LOOP2 ;延时时间为(100*2+1+2)*5=1000us=1msDJNZ R1,LOOP1POP PSWRETPID: MOV B,DATMOV A,RCLR CSUBB A,B ;求当次偏差e(k)=r-c(k)MOV E0,A ;存e(k)MOV B,KPMUL AB ;求up(k)=kp*e(k)MOV UPL,A ;保存up(k)的低8位 MOV UPH,B ;保存up(k)的高8位MOV A,E0MOV B,KIMUL AB ;计算256ki*e(k)MOV R1,B ;256ki*e(k)低8位丢掉,高8位->R1,为ki*e(k)MOV R2,UIL ;ui(k-1)低8位->R2MOV R3,UIH ;ui(k-1)高8位->R3MOV A,R1 ;ki*e(k)->AADD A,R2 ;计算ui(k)低8位=ki*e(k)+ui(k-1)低8位MOV R0,A ;暂存ui(k)低8位->R0 CLR AADDC A,R3 ;ui(k)高8位=ui(k-1)低8位+低位进位MOV R1,A ;ui(k)高8位->R1MOV UIL,R0 ;存ui(k)低8位MOV UIH,R1 ;存ui(k)高8位MOV A,E0 ;e(k)->AMOV R0,E1 ;暂存e(k-1)->R0MOV E1,A ;e(k)->e(k-1)为下次循环做准备CLR CSUBB A,R0 ;计算e(k)-e(k-1)MOV B,KDMUL AB ;计算ud(k)=kd*[e(k)-e(k-1)]MOV R0,A ;暂存ud(k)低8位->R0 MOV R1,B ;暂存ud(k)高8位->R1MOV A,R0ADD A,UIL ;ui(k)低8位+ud(k)低8位->AMOV R0,A ;暂存ui(k)低8位+ud(k)低8位->R0MOV A,R1ADDC A,UIH ;ui(k)高8位+ud(k)高8位+进位位->AMOV R1,A ;暂存ui(k)高8位+ud(k)高8位->R0MOV A,UPLADD A,R0 ;ui(k)低8位+ud(k)低8位+up(k)低8位->AMOV R0,A ;暂存ui(k)低8位+ud(k)低8位+up(k)低8位->R0MOV A,UPHADDC A,R1 ;ui(k)高8位+ud(k)高8位+up(k)高8位+进位位->AMOV UK,A ;存ui(k)高8位+ud(k)高8位+up(k)高8位+进位位作为最后结果RETEND。