欢迎来到沃文网! | 帮助中心 分享知识,传播智慧!
沃文网
全部分类
  • 教学课件>
  • 医学资料>
  • 技术资料>
  • 学术论文>
  • 资格考试>
  • 建筑施工>
  • 实用文档>
  • 其他资料>
  • ImageVerifierCode 换一换
    首页 沃文网 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    离散系统的数字PID控制仿真.docx

    • 资源ID:837297       资源大小:350.09KB        全文页数:32页
    • 资源格式: DOCX        下载积分:20积分
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: QQ登录 微博登录
    二维码
    微信扫一扫登录
    下载资源需要20积分
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,下载更划算!
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    离散系统的数字PID控制仿真.docx

    1、大连海事大学课程设计任务书课程 控制工程软件课程设计 题目 离散系统的数字PID控制仿真 主要内容: 控制对象为采样时间为1ms,针对离散系统的阶跃信号、正弦信号和方波信号的位置响应,设计离散的位置式PID控制器。其中S为信号选择变量,并对控制器的输出进行进行限幅:-10,-10。基本要求:(1) 设计可视化窗口实现; (2)系统输入信号可选择,完成对PID参数,系统阶次的调节;(3)显示误差大小;(4)完成全系统的详细分析设计报告。参考资料: 1 郑阿奇,曹戈.MATLAB实用教程(第三版)M.北京:电子工业出版社 2 网上查找离散系统的PID参数调节相关资料完成时间 2016.1.3201

    2、6.1.13 学生 (签名) 指导教师 (签名)专业负责人 (签名)2016年1月 13 日目录1设计要求12方案设计12.1设计思路12.2总体方案方框图12.3基本原理23位置式PID算法及其仿真33.1位置式PID算法原理33.2不同输入下的仿真界面结果显示64增量式PID算法及其仿真74.1增量式PID算法原理74.2 不同输入下的仿真界面结果显示85调节PID参数得到最优解106位置式PID和增量式PID比较127 总结13参考文献14附录15系统设计报告1设计要求控制对象为采样时间为1ms,针对离散系统的阶跃信号、正弦信号和方波信号的位置响应,设计离散的位置式PID控制器。其中S为

    3、信号选择变量,S=1时为阶跃跟踪,S=2时为方波跟踪,S=3为正弦跟踪。对控制器的输出进行限幅:-10,10。要求:(1)系统的阶次和系数可调;(2)PID参数可调;(3)用两种方式显示离散系统的数字PID控制仿真,并显示误差; (4)用MATLAB编写成为可视化窗口实现上述功能;2方案设计2.1设计思路(1) 根据设计要求,理解PID控制的原理,确定控制仿真的方式为位置式和增量式两种典型形式。(2) 建立可视化窗口界面,设计显示界面,产生对应的脚本,编辑回调函数,首先获得可变的PID参数,再获得可变的分子分母系数。(3) 最后编辑显示误差值。优化显示界面,并调节拟合程度最好的PID参数。2.

    4、2总体方案方框图比例yout(k)被控对象ran(k) Y(k)ff积分 微分图1 基本原理框图2.3基本原理总体基本原理框图如图1所示。PID控制器是一种线性控制器,它根据给定值rin(t)与实际的输出值yout(t)构成偏差 PID的控制规律为 或写成传递函数的形式为式中,比例系数;积分时间常数;微分时间常数。PID控制器各个校正环节的作用如下:(1) 比例环节:成比例的反应控制系统的偏差信号。偏差一旦产生,控制器立即产生控制作用,以减少偏差。(2) 积分环节:主要用于消除静差,提高系统的无差度。积分作用的强弱主要取决于积分时间常数,越大,积分作用越弱,反之则越强。(3) 微分环节:反应偏

    5、差信号的变化趋势(变化速率),并能在偏差信号变得太大之前,在系统中引入一个有效的早期修正信号。从而加快系统的动作速率,减少调节时间。3 位置式PID控制算法及其仿真3.1位置式PID算法原理yuer受控对象PID位置算法 + 位置式PID控制算法的简化示意图 d dteu上图传递函数为: 在时域的传递函数表达式 对上式中的微分和积分进行近似: 式中n是离散点的个数于是传递函数可以简化为: 其中 u(n)第k个采样时刻的控制:比例放大系数;积分放大系数;微分放大系数;T 采样周期。如果采样周期足够小,则近似计算可以得到足够精确的结果,离散控制结果和连续系统十分接近。它表示的控制算法直接按所给的P

    6、ID控制规律定义进行计算的,所以它给出了全部控制量的大小,因此被称为位置式PID控制算法。控制对象为 采样时间为1ms,采用z变换进行离散化,经过z变换后的离散化对象为 控制算法程序框图可如下所示:开始 参数初始化 采入rin(k)和yout(k) 计算偏差值 计算控制器输出 参数更新 返回程序及其批注见附录所示。3.2不同输入下的仿真界面结果显示S=1时输入为阶跃的结果S=2时输入为方波的结果S=3时输入为正弦的结果4增量式PID算法及其仿真4.1增量式PID算法原理当我们把离散系统看做相等的增量值时间增加时,可以用增量式PID控制算法根据递推原理可得 增量式PID控制算法 我们可以看出,如

    7、果我们采用恒定的采样周期T,只要只用前后三次测量的偏差,就可以得到控制量。PID算法的流程图如下所示 开始读取给定值r(k) 计算偏差e(k)=r(k)-y(k)计算 存以备输出参数传递 返回程序以及注释见附录4.2不同输入下的界面仿真显示S=1时阶跃输入S=2方波输入时S=3正弦输入时5. 调节PID控制器参数得到最优解比例控制:就是对偏差进行控制,偏差一旦产生,控制器立即就发生作用即调节控制输出,使被控量朝着减小偏差的方向变化,偏差减小的速度取决于比例系数Kp, Kp越大偏差减小的越快,但是很容易引起振荡,尤其是在迟滞环节比较大的情况下,Kp减小,发生振荡的可能性减小但是调节速度变慢。但单

    8、纯的比例控制存在静差不能消除的缺点。这里就需要积分控制。积分控制:实质上就是对偏差累积进行控制,直至偏差为零。积分控制作用始终施加指向给定值的作用力,有利于消除静差,其效果不仅与偏差大小有关,而且还与偏差持续的时间有关。简单来说就是把偏差积累起来,一起来运算。 微分控制:它能敏感出误差的变化趋势,可在误差信号出现之前就起到修正误差的作用,有利于提高输出响应的快速性,减小被控量的超调和增加系统的稳定性。但微分作用很容易放大高频噪声,降低系统的信噪比,从而使系统抑制干扰的能力下降。因此,在实际应用中,应慎用微分控制。 调节的过程中首先使得积分和微分系数为0,首先调节比例系数,得到临界震荡的Kp,再

    9、调节Ki由大到小调节,消除静差,最后调节Kd,减小调节时间,最后得到最优的控制器参数,其误差不一定最小。以下为阶跃输入下调节的最优参数位置式增量式6. 位置式PID和增量式PID的比较整体图形用户界面如下所示:位置式PID控制算法的缺点:当前采样时刻的输出与过去的各个状态有关,计算时要对e(k)即误差进行累加,运算量大;而且控制器的输出u(k)对应的是执行机构的实际位置,如果计算机出现故 障,u(k)的大幅度变化会引起执行机构位置的大幅度变化。增量式PID是数字控制器的输出只是控制量的增量u(k)。采用增量式算法时,计算机输出的控制量u(k)对应的是本次执行机构位置的增量,而不是对应执行机构的

    10、实际位置,因此要求执行机构必须具有对控制量增量的累积功能,才能完成对被控对象的控制操作。 增量式算法优点:算式中不需要累加。控制增量u(k)的确定仅与最近3次的采样值有关,容易通过加权处理获得比较好的控制效果;计算机每次只输出控制增量,即对应执行机构位置的变化量,故机器发生故障时影响范围小、不会严重影响生产过程;手动自动切换时冲击小。当控制从手动向自动切换时,可以作到无扰动切换。7 总结1. 就实现要求的用户图形界面来说,设计整体布局,以及实现需要的功能需要的图形对象面板工具常用控件的选择,虽然选择是比较自由的,方式也是多样的,第一次做位置式时我选择了一组按钮,来切换输入信号。在做第二种增量式

    11、时,希望得到更多的方式或者学到不同常用控件的实用方法,我选择了设定一组单选按钮,用了两种语句来实现,一种是ifelse语句,一种是switch语句,两种方法都可以实现单选按钮的功能。2. 就PID控制系统而言,除了自动控制原理课堂上的,通过这次课程设计对于PID有了更加深刻的认识,对于其在矫正系统功能方面有了更加系统的认知,也进一步揭开了其常被应用的面纱。3. 离散系统的分析源自于连续系统的离散,首先进行离散化z变换,知道了位置式和增量式的区别最重要的在于位置式的变化和之前的每一个时刻都有关系,而增量式的只和最近三次的增量有关系。4. 这个课程设计锻炼了我的思考和查阅资料的能力。- 13 -

    12、参考文献1 郑阿奇,曹戈.MATLAB实用教程(第三版)M.北京:电子工业出版社 附录主程序:function varargout = PID(varargin)gui_Singleton = 1;gui_State = struct(gui_Name, mfilename, . gui_Singleton, gui_Singleton, . gui_OpeningFcn, PID_OpeningFcn, . gui_OutputFcn, PID_OutputFcn, . gui_LayoutFcn, , . gui_Callback, );if nargin & ischar(varargi

    13、n1) gui_State.gui_Callback = str2func(varargin1);endif nargout varargout1:nargout = gui_mainfcn(gui_State, varargin:);else gui_mainfcn(gui_State, varargin:);endfunction PID_OpeningFcn(hObject, eventdata, handles, varargin)handles.output = hObject;guidata(hObject, handles);function varargout = PID_Ou

    14、tputFcn(hObject, eventdata, handles) varargout1 = handles.output;function jieyue_Callback(hObject, eventdata, handles)kp=str2double(get(handles.Kp,String);ki=str2double(get(handles.Ki,String);kd=str2double(get(handles.Kd,String);axes(handles.tu1); %选坐标轴1作图nums=str2num(get(handles.num,String);dens=st

    15、r2num(get(handles.den,String);out=PIDcontrol(1,kp,ki,kd,nums,dens);set(handles.error,String,num2str(out);function fangbo_Callback(hObject, eventdata, handles)kp=str2double(get(handles.Kp,String); ki=str2double(get(handles.Ki,String);kd=str2double(get(handles.Kd,String);axes(handles.tu1);%选坐标轴1作图nums

    16、=str2num(get(handles.num,String);dens=str2num(get(handles.den,String);out=PIDcontrol(2,kp,ki,kd,nums,dens);set(handles.error,String,num2str(out);function zhengxian_Callback(hObject, eventdata, handles)kp=str2double(get(handles.Kp,String);ki=str2double(get(handles.Ki,String);kd=str2double(get(handles

    17、.Kd,String);axes(handles.tu1);%选坐标轴1作图nums=str2num(get(handles.num,String);dens=str2num(get(handles.den,String);out=PIDcontrol(3,kp,ki,kd,nums,dens);set(handles.error,String,num2str(out);function Kp_Callback(hObject, eventdata, handles)function Kp_CreateFcn(hObject, eventdata, handles)if ispc & iseq

    18、ual(get(hObject,BackgroundColor), get(0,defaultUicontrolBackgroundColor) set(hObject,BackgroundColor,white);endfunction Ki_Callback(hObject, eventdata, handles)function Ki_CreateFcn(hObject, eventdata, handles)if ispc & isequal(get(hObject,BackgroundColor), get(0,defaultUicontrolBackgroundColor) set

    19、(hObject,BackgroundColor,white);endfunction Kd_Callback(hObject, eventdata, handles)function Kd_CreateFcn(hObject, eventdata, handles)if ispc & isequal(get(hObject,BackgroundColor), get(0,defaultUicontrolBackgroundColor) set(hObject,BackgroundColor,white);endfunction error_Callback(hObject, eventdat

    20、a, handles)function error_CreateFcn(hObject, eventdata, handles)if ispc & isequal(get(hObject,BackgroundColor), get(0,defaultUicontrolBackgroundColor) set(hObject,BackgroundColor,white);endfunction den_Callback(hObject, eventdata, handles)function den_CreateFcn(hObject, eventdata, handles)if ispc &

    21、isequal(get(hObject,BackgroundColor), get(0,defaultUicontrolBackgroundColor) set(hObject,BackgroundColor,white);endfunction num_Callback(hObject, eventdata, handles)function num_CreateFcn(hObject, eventdata, handles)if ispc & isequal(get(hObject,BackgroundColor), get(0,defaultUicontrolBackgroundColo

    22、r) set(hObject,BackgroundColor,white);endfunction tuichu_Callback(hObject, eventdata, handles)ss=questdlg(你真的要退出吗?,退出窗口,不,我还想看看!,是的,我要退出!,是的,我要退出!);switch sscase 是的,我要退出!delete(handles.figure1);endfunction Kp1_Callback(hObject, eventdata, handles)function Kp1_CreateFcn(hObject, eventdata, handles)if

    23、 ispc & isequal(get(hObject,BackgroundColor), get(0,defaultUicontrolBackgroundColor) set(hObject,BackgroundColor,white);endfunction Ki1_Callback(hObject, eventdata, handles)function Ki1_CreateFcn(hObject, eventdata, handles)if ispc & isequal(get(hObject,BackgroundColor), get(0,defaultUicontrolBackgr

    24、oundColor) set(hObject,BackgroundColor,white);endfunction Kd1_Callback(hObject, eventdata, handles)function Kd1_CreateFcn(hObject, eventdata, handles)if ispc & isequal(get(hObject,BackgroundColor), get(0,defaultUicontrolBackgroundColor) set(hObject,BackgroundColor,white);endfunction error1_Callback(

    25、hObject, eventdata, handles)function error1_CreateFcn(hObject, eventdata, handles)if ispc & isequal(get(hObject,BackgroundColor), get(0,defaultUicontrolBackgroundColor) set(hObject,BackgroundColor,white);endfunction jieyue1_Callback(hObject, eventdata, handles)function fangbo1_Callback(hObject, even

    26、tdata, handles)function zhengxian1_Callback(hObject, eventdata, handles)function uibuttongroup2_SelectionChangedFcn(hObject, eventdata, handles)kp1=str2double(get(handles.Kp1,String);ki1=str2double(get(handles.Ki1,String);kd1=str2double(get(handles.Kd1,String);nums=str2num(get(handles.num,String);de

    27、ns=str2num(get(handles.den,String);S_3=get(handles.zhengxian1,Value);S_2=get(handles.fangbo1,Value);S_1=get(handles.jieyue1,Value);axes(handles.tu2); %选坐标轴2作图if S_3=1 out1=PIDcontrol1(3,kp1,ki1,kd1,nums,dens);elseif S_2=1 out1=PIDcontrol1(2,kp1,ki1,kd1,nums,dens);elseif S_1=1 out1=PIDcontrol1(1,kp1,

    28、ki1,kd1,nums,dens);end set(handles.error1,String,num2str(out1);% axes(handles.tu2); %选坐标轴2作图% kp1=str2double(get(handles.Kp1,String);% ki1=str2double(get(handles.Ki1,String);% kd1=str2double(get(handles.Kd1,String);% nums=str2num(get(handles.num,String);% dens=str2num(get(handles.den,String);% n = g

    29、et(handles,Tag);% switch n% case jieyue1% out1=PIDcontrol1(1,kp1,ki1,kd1,nums,dens);% case fangbo1% out1=PIDcontrol1(2,kp1,ki1,kd1,nums,dens);% case zhengxian1% out1=PIDcontrol1(3,kp1,ki1,kd1,nums,dens);% end% set(handles.error1,String,num2str(out1);位置式调用程序:function out=PIDcontrol(S,kp,ki,kd,nums,de

    30、ns)ts=0.001; %采样时间sys=tf(nums,dens);dsys=c2d(sys,ts,z); %将系统离散化num,den=tfdata(dsys,v); %获取离散后的分子分母系数n=length(den);for i=1:(n-1) u_(i)=0;y_(i)=0;endx=0,0,0;error_1=0; %初始偏差设置为0out=0; %初始误差和为0for k=1:1000; time(k)=k*ts; %采样时刻 if S=1 %阶跃信号 rin(k)=1; elseif S=2 %方波信号 rin(k)=sign(sin(2*2*pi*k*ts); elseif

    31、 S=3 %正弦波信号 rin(k)=0.5*sin(2*2*pi*k*ts); end u_(k)=kp*x(1)+kd*x(2)+ki*x(3); %控制器输出,根据离散PID表达式 if u_(k)=10 %限幅 u_(k)=10; end if u_(k)=10u(k)=10;endif u(k)=-10u(k)=-10;endyout(k)=0;for j=2:1:m yout(k)=yout(k)-den(j)*y(j-1)+num(j)*u_(j-1);enderror(k)=rin(k)-yout(k); %误差等于期望减去实际for i=m-1:-1:2 u_(i)=u_(i

    32、-1); y(i)=y(i-1);endu_(1)=u(k);y(1)=yout(k);x(1)=error(k)-error_(1); %此刻误差减去上一刻的误差x(2)=error(k);x(3)=error(k)-2*error_(1)+error_(2); %下一个位置控制器输出P I D系数和此刻误差和上一个位置误差的关系error_(2)=error_(1);error_(1)=error(k); %误差在参数之间的传递out1=out1+error(k)2; %误差的积累endout1=out1/1000; plot(time,rin,b,time,yout,r);xlabel(

    33、time(s);ylabel(rin,yout);- 26 - 大连海事大学课程设计成绩评价表课程名称控制工程软件课程设计题目名称离散系统的数字PID控制仿真学生姓名 张亚婷学号 2220142511指导教师姓名 徐慧朴职称 序号评价项目指 标满分评分1工作量、工作态度和出勤率按期圆满的完成了规定的任务,难易程度和工作量符合教学要求,工作努力,遵守纪律,出勤率高,工作作风严谨,善于与他人合作。202课程设计质量与总结报告课程设计选题合理,计算过程简练准确,分析问题思路清晰,结构严谨,文理通顺,撰写规范,图表完备正确。403创新工作中有创新意识,对前人工作有一些改进或有一定应用价值。54实践与答辩实验方法、结果正确,能正确回答指导教师所提出的问题。35总分评语:指导教师: (签名) 年 月 日- 28 - 29 -


    注意事项

    本文(离散系统的数字PID控制仿真.docx)为本站会员(精***)主动上传,沃文网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知沃文网(点击联系客服),我们立即给予删除!




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服点击这里,给沃文网发消息,QQ:2622162128 - 联系我们

    版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。

    Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1

    陕公网安备 61072602000132号     违法和不良信息举报:0916-4228922