网站大量收购独家精品文档,联系QQ:2885784924

基于MATLAB和Simulink的PID控制系统的设计与仿真.doc

基于MATLAB和Simulink的PID控制系统的设计与仿真.doc

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
自动化专业07级 《计算机仿真与MATLAB》课程报告 题目: 基于MATLAB/Simulink的PID控制系统的设计与仿真 班级: 姓名: 学号: 2010年6月 基于MATLAB/Simulink的PID控制系统的设计与仿真 摘要: 介绍了基于Ziegler- Nichols整定方法的PID 控制器设计, 给出了基于MATLAB和Simulink的实现方法和仿真。仿真结果表明, 此算法设计的PID 控制器有良好的性能指标。 1 控制对象建模 1.1 PID 控制系统的建模 PID(Proportional,Integral and Differemial)控制器是一种基于“过去”,“现在”和“未来”信息估计的简单算法。常规PID控制系统原理框图如下图所示,系统主要由PID控制器和被控对象组成。作为一种线性控制器,它根据给定值rin(t)与实际输出值yout(t)构成控制偏差e(t),将偏差按比例、积分、和微分通过线性组合构成控制量u(t),对被控对象进行控制。 PID控制系统原理图 PID 控制器的数学描述为: 其传递函数可表示为: PID控制器各校正环节的作用如下: 1.比例环节:成比例地反映控制系统的偏差信号e(t),偏差一旦产生,控制器立即产生控制作用,以减少偏差。 2.积分环节:主要用于消除静差,提高系统的无差度。积分作用的强弱取决于积分时间常数Ti,Ti越大,积分作用越弱,反之越强。 3.微分环节:反映偏差信号的变化趋势(变化速率),并能在偏差信号变得太大之前,在系统中引入一个有效的早期修正信号,从而加快系统的动作速度,减少调节时间。 从根本上讲,设计 PID 控制器也就是确定其比例系数K p、积分系数Ti 和微分系数Td , 这三个系数取值的不同,决定了比例、积分和微分作用的强弱。控制系统的整定就是在控制系统的结构已经确定、控制仪表和控制对象等处在正常状态的情况下, 适当选择控制器的参数使控制仪表的特性和控制对象的特性相配合, 从而使控制系统的运行达到最佳状态, 取得最好的控制效果。本文介绍基于Ziegler- Nichols整定方法的 PID 控制器设计。 1.2 被控对象的建模 在实际的过程控制系统中,有大量的对象模型可以近似地由带有延迟的一阶传递函数模型来表示,该对象的模型可以表示如下: 如果不能建立起系统的物理模型,可通过试验测取对象模型的阶跃响应,从而得到模型参数。当然, 我们也可在已知对象模型的情况下, 由 MATLAB 通过 STEP( ) 函数得到对象模型的开环阶跃响应曲线。在被控对象的阶跃响应输出信号图(如图所示)中, 可获取 K、L 和 T 参数。 2 PID控制系统的设计 Ziegler- Nichols法是一种基于频域设计 PID 控制器的方法。此法首先通过实验获取控制对象单位阶跃响应,获得K、L 和 T 参数。令a=KL/T,我们可以通过下表给出的Ziegler- Nichols经验公式确定P、PI 和 PID 控制器的参数。 控制器类型 Kp Ti Td P 0 PI 0 PID Ziegler- Nichols法整定控制器参数 3 PID 控制系统MATLAB/Simulink仿真分析 3.1 在MATLAB 下实现PID 控制器的设计与仿真 根据Ziegler- Nichols法,这里编写一个MATLAB函数ziegler,该函数的功能实现由Ziegler- Nichols公式设计PID 控制器,在设计过程中可以直接调用。其源程序如下: function [Gc,Kp,Ti,Td,H]=ziegler(key,vars) Ti=[]; Td=[]; H=1; if length(vars)==4, K=vars(1); L=vars(2); T=vars(3); N=vars(4); a=K*L/T; if key==1, Kp=1/a; elseif key==2, Kp=0.9/a; Ti=3.33*L; elseif key==3 | key==4, Kp=1.2/a; Ti=2.2*L; Td=L/2; end elseif length(vars)==3, K=vars(1); Tc=vars(2); N=vars(3); if key==1, Kp=0.5*K; elseif key==2, Kp=0.4*K; Ti=0.8*Tc; elseif key==3 | key==4, Kp=0.6*K; Ti=0.5*Tc; Td=0.12*Tc; end elseif length(vars)==5, K=vars(1); Tc=vars

您可能关注的文档

文档评论(0)

晓风迷梦 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档