先进PID控制MATLAB仿真(第4版)(txt+pdf+epub+mobi电子书下载)


发布时间:2020-05-12 11:09:46

点击下载

作者:刘金琨

出版社:电子工业出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

先进PID控制MATLAB仿真(第4版)

先进PID控制MATLAB仿真(第4版)试读:

前言

PID控制是最早发展起来的控制策略之一,由于其算法简单、鲁棒性好和可靠性高,被广泛应用于过程控制和运动控制中,尤其适用于可建立精确数学模型的确定性控制系统。然而实际工业生产过程往往具有非线性、时变不确定性,难以建立精确的数学模型,应用常规PID控制器不能达到理想的控制效果,而且在实际生产现场中,由于受到参数整定方法繁杂的困扰,常规PID控制器参数往往整定不良、性能欠佳,对运行工况的适应性很差。

计算机技术和智能控制理论的发展为复杂动态不确定系统的控制提供了新的途径。采用智能控制技术,可设计智能PID和进行PID的智能整定。

有关智能PID控制等新型PID控制理论及其工程应用,近年来已有大量的论文发表。作者多年来一直从事智能控制方面的研究和教学工作,为了促进PID控制和自动化技术的进步,反映PID控制设计与应用中的最新研究成果,并使广大工程技术人员能了解、掌握和应用这一领域的最新技术,学会用MATLAB语言进行PID控制器的设计,作者编写了这本书,以抛砖引玉,供广大读者学习参考。

本书是在总结作者多年研究成果的基础上,进一步理论化、系统化、规范化、实用化而成的,其特点如下。(1)PID控制算法取材新颖,内容先进,重点置于学科交叉部分的前沿研究和介绍一些有潜力的新思想、新方法和新技术,取材着重于基本概念、基本理论和基本方法。(2)针对每种PID算法给出了完整的MATLAB仿真程序,这些程序都可以在线运行,并给出了程序的说明和仿真结果。具有很强的可读性,很容易转化为其他各种实用语言。(3)着重从应用领域角度出发,突出理论联系实际,面向广大工程技术人员,具有很强的工程性和实用性。书中有大量应用实例及其结果分析,为读者提供了有益的借鉴。(4)所给出的各种PID算法完整,程序设计力求简单明了,便于自学和进一步开发。

本书共分17章。第1章介绍连续系统PID控制和离散系统数字PID控制的几种基本方法,通过仿真和分析进行了说明;第2章介绍了PID控制器整定的几种方法;第3章介绍了时滞系统的PID控制,包括串级计算机控制系统的PID控制、纯滞后控制系统Dahlin算法和基于Smith预估的PID控制;第4章介绍了基于微分器的PID控制,包括基于全程快速微分器和基于Levant微分器的PID控制;第5章介绍了基于观测器的PID控制,包括基于干扰观测器、扩张观测器和输出延迟观测器的PID控制;第6章介绍了自抗扰控制器及其PID控制包括非线性跟踪微分器、安排过渡过程及PID控制、基于非线性扩张观测器的PID控制非线性PID控制和自抗扰控制;第7章介绍了几种PID鲁棒自适应控制方法,包括一种稳定的PD控制算法、基于模型的PI鲁棒控制、基于名义模型的机械手PI鲁棒控制、基于Anti-windup的PID抗饱和控制和基于增益自适应调节的模型参考自适应PD控制;第8章介绍了专家PID和模糊PID整定方法,其中模糊PID包括自适应模糊补偿的倒立摆PD控制、基于模糊规则表的模糊PD控制和模糊自适应整定PID控制;第9章介绍了神经网络PID控制,包括基于单神经元网络的PID控制、基于二次型性能指标学习算法的单神经元自适应PID控制和基于自适应神经网络补偿的倒立摆PD控制;第10章介绍了基于差分进化的PID控制,主要包括基于差分进化整定的PID控制和基于差分进化摩擦模型参数辨识的PID控制;第11章介绍了伺服系统的PID控制,包括伺服系统在低速摩擦条件下的PID控制、单质量伺服系统PID控制和二质量伺服系统PID控制;第12章介绍了迭代学习PID控制,包括迭代学习PID控制基本原理和基本设计方法;第13章介绍了挠性及奇异摄动系统的PD控制,包括基于输入成型的挠性机械系统PD控制和基于奇异摄动理论的P控制;第14章介绍了机械手的PID控制,包括机械手独立PD控制、工作空间中机械手末端轨迹PD控制、工作空间中机械手末端的阻抗PD控制和移动机器人的P控制;第15章介绍了飞行器的双闭环PD控制,包括基于双环设计的VTOL飞行器轨迹跟踪PD控制和基于内外环的四旋翼飞行器的PD控制;第16章介绍了倒立摆系统的一种控制方法及GUI动画演示;第17章介绍了其他控制方法,针对每种方法给出了实例说明。

本书是基于MATLAB环境下开发的,各个章节的内容具有很强的独立性,读者可以结合自己的方向深入地进行研究。

北京航空航天大学尔联洁教授在伺服系统设计方面提出了许多宝贵意见,东北大学徐心和教授、薛定宇教授给予了大力支持和帮助,作者在控制系统的分析中,有许多方面得益于作者与研究生的探讨,在此一并表示感谢。

由于作者水平有限,书中难免存在一些不足和错误之处,欢迎广大读者批评指正。刘金琨北京航空航天大学2016年3月10日第4版说明

在第3版的基础上主要增加了以下内容:挠性及奇异摄动系统的PD控制、机械手PID控制、飞行器双闭环PD控制,将第3版第10章“基于遗传算法整定的PID控制”改为“基于差分进化的PID控制”,并针对第3版中的部分内容进行了更新,对书中的某些错误进行了修改。作者简介

刘金琨:辽宁人,1965年生。分别于1989年7月、1994年3月和1997年3月获东北大学工学学士、工学硕士和工学博士学位。1997年3月至1998年12月在浙江大学工业控制技术研究所做博士后研究工作。1999年1月至1999年7月在香港科技大学从事合作研究。1999年11月至今在北京航空航天大学自动化学院从事教学与科研工作,现任教授、博士导师。主讲“智能控制”、“先进控制系统设计”和“系统辨识”等课程。研究方向为控制理论与应用。自从从事研究工作以来,主持国家自然基金等科研项目10余项,发表学术论文100余篇。曾出版《智能控制》《机器人控制系统的设计与MATLAB仿真》《滑模变结构控制MATLAB仿真》《RBF神经网络自适应控制MATLAB仿真》《系统辨识》和《微分器设计与应用—信号滤波与求导》等著作。常用符号说明P比例I积分D微分T采样时间K采样A正弦信号幅值F正弦信号频率、y x 输入理想信号ddy、yout输出信号θ角度e、error误差de、derror误差变化率、k 、k k pidPID控制的比例、积分、微分系数u控制器输出w ij神经网络权值η学习速率α惯性量M、S信号选择变量n噪声信号d干扰τ延迟时间仿真程序使用说明

1.所有仿真算法按章归类,下载的程序名与书中一一对应。

2.将下载的仿真程序复制到硬盘MATLAB运行的路径中,便可仿真运行。

3.本书算法在MATLAB 7.12版本下运行成功,并适用于其他更高级版本。

4.假如您对仿真程序有任何疑问,请及时通过E-mail与本书的编辑或作者本人联系。编辑E-mail地址:lhy@phei.com.cn作者E-mail地址:ljk@buaa.edu.cn

5.程序下载网址1(北航服务器):http://shi.buaa.edu.cn/liujinkun

程序下载网址2(电子工业出版社):http://yydz.phei.com.cn/aspcms/down/2016-5-20/322.html北京航空航天大学 刘金琨2016年5月第1章基本的PID控制

自从计算机进入控制领域以来,用数字计算机代替模拟计算机调节器组成计算机控制系统,不仅可以用软件实现PID控制算法,而且可以利用计算机的逻辑功能,使PID控制更加灵活。数字PID控制在生产过程中是一种最普遍采用的控制方法,在机电、冶金、机械、化工等行业中获得了广泛的应用。将偏差的比例(P)、积分(I)和微分(D)通过线性组合构成控制量,对被控对象进行控制,故称PID控制器。1.1 PID控制原理

在模拟控制系统中,控制器最常用的控制规律是PID控制。模拟PID控制系统原理框图如图1-1所示。系统由模拟PID控制器和被控对象组成。图1-1 模拟PID控制系统原理框图

PID控制器是一种线性控制器,它根据给定值y (t)与实际输出值dy(t)构成控制偏差

PID的控制规律为

或写成传递函数的形式

式中,k 为比例系数;T 为积分时间常数;T 为微分时间常数。pID

简单说来,PID控制器各校正环节的作用如下:(1)比例环节:成比例地反映控制系统的偏差信号error(t),偏差一旦产生,控制器立即产生控制作用,以减少偏差。(2)积分环节:主要用于消除静差,提高系统的无差度。积分作用的强弱取决于积分时间常数T ,T 越大,积分作用越弱,反之II则越强。(3)微分环节:反映偏差信号的变化趋势(变化速率),并能在偏差信号变得太大之前,在系统中引入一个有效的早期修正信号,从而加快系统的动作速度,减少调节时间。1.2 连续系统的模拟PID仿真1.2.1 基本的PID控制

以二阶线性传递函数为被控对象,进行模拟PID控制。在信号发生器中选择正弦信号,仿真时取,输入指令为,其中。采用ODE45迭代方法,仿真时间为10s。【仿真之一】 连续系统PID的Simulink仿真

PID控制器由Simulink下的工具箱提供。

Simulink仿真程序:chap1_1.mdl

上述PID控制器采用Simulink封装的形式,其内部结构如下:

连续系统的模拟PID控制正弦响应结果如图1-2所示。图1-2 连续系统的模拟PID控制正弦响应【仿真之二】 连续系统PID的Simulink仿真

在仿真一的基础上,将仿真结果输出到工作空间中,利用M语言作图,仿真结果如图1-3所示。图1-3 PID控制正弦响应

〖仿真程序〗(1)Simulink仿真程序:chap1_2.mdl

程序中同时采用了传递函数的另一种表达方式,即状态方程的形式,其中(2)作图程序:chap1_2plot.m close all; plot(t,yd(:,1),'r',t,y(:,1),'k:','linewidth',2); xlabel('time(s)');ylabel('yd,y'); legend('Ideal position signal','Position tracking');【仿真之三】 采用S函数实现Simulink仿真

仍以二阶线性传递函数为被控对象,进行模拟PID控制。被控对象形式为,其中b为在[103,163]范围内随机变化,a为在[15,35]范围内随机变化,则被控对象的描述方式可转换为

S函数是Simulink一项重要的功能,采用S函数可实现在Simulink下复杂控制器和复杂被控对象的编程。在仿真一的基础上,利用S函数实现上述对象的表达、控制器的设计及仿真结果的输出。

在S函数中,采用初始化、微分函数和输出函数,即mdlInitializeSizes函数、mdlDerivatives函数和mdlOutputs函数。在初始化中采用sizes结构,选择2个输出、3个输入,3个输入实现了P、I、D三项的输入。S函数嵌入在Simulink程序中。系统初始状态为:。仿真结果如图1-4所示。图1-4 PID控制正弦响应

〖仿真程序〗(1)Simulink仿真主程序:chap1_3.mdl(2)S函数PID控制器程序:chap1_3s.m %S-function for continuous state equation function [sys,x0,str,ts]=s_function(t,x,u,flag) switch flag, %Initialization case 0, [sys,x0,str,ts]=mdlInitializeSizes; %Outputs case 3, sys=mdlOutputs(t,x,u); %Unhandled flags case {2, 4, 9 } sys = [ ]; %Unexpected flags otherwise error(['Unhandled flag = ',num2str(flag)]); end %mdlInitializeSizes function [sys,x0,str,ts]=mdlInitializeSizes sizes = simsizes; sizes.NumContStates = 0; sizes.NumDiscStates = 0; sizes.NumOutputs = 1; sizes.NumInputs = 3; sizes.DirFeedthrough = 1; sizes.NumSampleTimes = 0; sys=simsizes(sizes); x0=[]; str=[]; ts=[]; function sys=mdlOutputs(t,x,u) error=u(1); derror=u(2); errori=u(3); kp=60; ki=1; kd=3; ut=kp*error+kd*derror+ki*errori; sys(1)=ut;(3)S函数被控对象程序:chap1_3plant.m %S-function for continuous state equation function [sys,x0,str,ts]=s_function(t,x,u,flag) switch flag, %Initialization case 0, [sys,x0,str,ts]=mdlInitializeSizes; case 1, sys=mdlDerivatives(t,x,u); %Outputs case 3, sys=mdlOutputs(t,x,u); %Unhandled flags case {2, 4, 9 } sys = []; %Unexpected flags otherwise error(['Unhandled flag = ',num2str(flag)]); end %mdlInitializeSizes function [sys,x0,str,ts]=mdlInitializeSizes sizes = simsizes; sizes.NumContStates = 2; sizes.NumDiscStates = 0; sizes.NumOutputs = 1; sizes.NumInputs = 1; sizes.DirFeedthrough = 0; sizes.NumSampleTimes = 0; sys=simsizes(sizes); x0=[0,0]; str=[]; ts=[]; function sys=mdlDerivatives(t,x,u) sys(1)=x(2); %sys(2)=-(25+5*sin(t))*x(2)+(133+10*sin(t))*u; sys(2)=-(25+10*rands(1))*x(2)+(133+30*rands(1))*u; function sys=mdlOutputs(t,x,u) sys(1)=x(1);(4)作图程序:chap1_3plot.m close all; plot(t,y(:,1),'r',t,y(:,2),'k:','linewidth',2); xlabel('time(s)');ylabel('yd,y'); legend('Ideal position signal','Position tracking');【仿真之四】 利用简化S函数,实现仿真之三中S函数同样的功能

利用S函数简化形式实现被控对象的表达、控制器的设计及仿真结果的输出。在简化S函数中,flag=0时为S函数初始化,其中sys包括6个参数:第1个参数表示连续系统的阶数;第2个参数表示离散系统的阶数;第3个参数表示S函数的输出个数;第4个参数表示S函数的输入个数;第5个参数表示直接馈通(DirFeedthrough),即输入信号是否在输出端出现的标识,取值为0或1;第6个参数表示模块采样周期的个数,S函数支持多采样周期的系统,x0=[]为系统初始值设定;flag=1时为S函数被控对象微分方程的描述;flag=3时为S函数输出。仿真结果如图1-5所示。图1-5 PID控制正弦响应

〖仿真程序〗(1)Simulink仿真主程序:chap1_3n.mdl(2)简化的S函数控制器程序:chap1_3ns.m function [sys,x0]=s_function(t,x,u,flag) kp=60;ki=1;kd=3; if flag= =0 sys=[0,0,1,3,0,1]; %Outputs=1,Inputs=3,DirFeedthrough=0; x0=[]; elseif flag= =3 sys(1)=kp*u(1)+ki*u(2)+kd*u(3); else sys=[]; end(3)简化S函数被控对象程序:chap1_3nplant.m function [sys,x0]=s_function(t,x,u,flag) if flag= =0 sys=[2,0,1,1,0,0]; %ContStates=2,Outputs=1,Inputs=1 x0=[0,0]; elseif flag= =1 sys(1)=x(2); sys(2)=-(25+10*rands(1))*x(2)+(133+30*rands(1))*u; elseif flag= =3 sys(1)=x(1); else sys=[]; end(4)作图程序:chap1_3nplot.m close all; plot(t,y(:,1),'r',t,y(:,2),'k:','linewidth',2); xlabel('time(s)');ylabel('yd,y'); legend('Ideal position signal','Position tracking');1.2.2 线性时变系统的PID控制

被控对象为

输入指令信号为。采用PD控制算法进行正弦响应。【仿真之一】 采用Simulink模块实现Simulink仿真

通过Simulink模块实现不确定对象的表示,取。仿真结果如图1-6所示。图1-6 正弦响应

〖仿真程序〗(1)Simulink仿真主程序:chap1_4.mdl

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载