收藏 分销(赏)

PID调节器参数整定分析.doc

上传人:w****g 文档编号:2669349 上传时间:2024-06-04 格式:DOC 页数:12 大小:360.54KB 下载积分:8 金币
下载 相关 举报
PID调节器参数整定分析.doc_第1页
第1页 / 共12页
PID调节器参数整定分析.doc_第2页
第2页 / 共12页


点击查看更多>>
资源描述
PID调节器参数整定分析 ———————————————————————————————— 作者: ———————————————————————————————— 日期: 3 个人收集整理 勿做商业用途 《计算机控制技术》实验指导书 (软件部分) 编写:唐红雨 黄海峰 镇江高等专科学校电子信息系 2007年3月 目 录 实验一 PID调节器参数整定分析 2 实验二 采样控制系统分析 4 实验三 程序判断滤波 5 实验四 中值滤波 6 实验五 平均值滤波 8 实验一 PID调节器参数整定分析 一、实验目的 设计MATLAB的M文件,用来实现PID调节器的功能,分析Kp、Kd、Ki三个参数对系统性能的影响。 二、实验步骤 开机执行程序,用鼠标双击图标进入MATLAB命令窗口:Command Windows 新建M-file,然后,输入设计好的程序. 调试,检查错误,然后运行。 观察系统对不同参数的相应曲线,分析其原因。 三、实验要求 1、实验之前,查阅有关资料,编写好相应的程序。 2、认真做好仿真记录 四、实验报告要求 叙述Kp、Kd、Ki三个参数对系统性能的影响。 附程序: 1 % 比例控制 G=tf(10,[1 6 11 6]);P=[0。1:0.1:1];%传递函数,Kp变化范围 for i=1:length(P) G_c=feedback(P(i)*G,1); %系统反馈 step(G_c),hold on %单位阶跃输入 end 2 % 比例积分控制 G=tf(10,[1 6 11 6]) %系统传递函数 Kp=1;Ti=[0。8:0.2:1.6]; %Kp一定,不同Ti的输入 for i=1:length(Ti) Gc=tf(Kp*[1,1/Ti(i)],[1,0]); %分别计算不同Ti的系统参数 G_c=feedback(G*Gc,1); step(G_c),hold on %阶跃响应曲线 3 % 比例、积分、微分控制 G=tf(10,[1 6 11 6]) %系统传递函数 Kp=1;Ti=0.6;Td=[0.1:0。2:2]; %Kp、Ti一定,不同Td的输入 for i=1:length(Td) Gc=tf(Kp*[Ti*Td(i),Ti,1]/Ti,[1,0]); %分别计算不同Td的系统参数 G_c=feedback(G*Gc,1);step(G_c),hold on %阶跃响应曲线 end 4 %P、PI、PID三种控制策略 G=tf(10,[1 10 35 50 24]); %系统传递函数 [Kc,pp,wg,wp]=margin(G);Tc=2*pi/wg; %计算系统开环增益和剪切频率 [Gc1,Kp1]=ziegler(1,[Kc,Tc,10]);Gc1 %调用自定义ziegler函数,P控制 [Gc2,Kp2,Ti2]=ziegler(2,[Kc,Tc,10]);Gc2 %PI控制 [Gc3,Kp3,Ti3,Td3]=ziegler(3,[Kc,Tc,10]);Gc3 %PID控制 G_c1=feedback(G*Gc1,1);step(G_c1);hold on % P控制,阶跃响应曲线 G_c2=feedback(G*Gc2,1);step(G_c2); %PI控制,阶跃响应曲线 G_c3=feedback(G*Gc3,1);step(G_c3); 其中ziegler( )函数如下: function [Gc,Kp,Ti,Td,H]=ziegler(key,vars) Ti=[ ]; Td=[ ]; H=[ ]; 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; %P控制器 elseif key==2, Kp=0.9/a; Ti=3.33*L; %PI控制器 elseif key==3 %PID控制器 Kp=1。2/a; Ti=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 Kp=0.6*K; Ti=0。5*Tc; Td=0.12*Tc; end elseif length(vars)==5, K=vars(1); Tc=vars(2); rb=vars(3); pb=pi*vars(4)/180; N=vars(5); Kp=K*rb*cos(pb); if key==2, Ti=—Tc/(2*pi*tan(pb)); elseif key==3 Ti=Tc*(1+sin(pb))/(pi*cos(pb)); Td=Ti/4; end end switch key case 1, Gc=Kp; case 2, Gc=tf(Kp*[Ti,1],[Ti,0]); case 3 nn=[Kp*Ti*Td*(N+1)/N, Kp*(Ti+Td/N), Kp]; dd=Ti*[Td/N,1,0]; Gc=tf(nn,dd); end 实验二 采样控制系统分析 一、实验目的 考察连续时间系统的采样控制中,零阶保持器的作用与采样时间间隔对Ts对系统稳定性的影响 二、实验步骤 开机执行程序,用鼠标双击图标,进入MATLAB命令窗口:Command Windows 在Command Windows窗口中输入:simulink,进入仿真界面,并新建Model文件 在Model界面中构造连续时间系统的结构图。作时域仿真并确定系统时域性能指标. 带零阶保持器的采样控制系统如下图所示。作时域仿真,调整采样间隔时间Ts,观察对系统稳定性的影响. 三、实验要求 (1)按照结构图程序设计好模型图,完成时域仿真的结构图 (2)认真做好时域仿真记录 四、实验报告要求 (1)叙述零阶保持器的作用 (2)讨论采样时间间隔Ts对系统的影响。 附:step模块在sources库中 sum模块在math operations库中 scope模块在sinks库中 transfer fcn模块在continuous库中 zero-order hold模块在discrete库中 实验三 程序判断滤波 一、实验目的 1、 掌握数字滤波中程序判断滤波的设计思路和单片机程序实现方法; 2、 学会使用51汇编集成开发环境调试程序判断滤波; 3、 学会使用保护现场、恢复现场的方法。 二、实验内容 采样的信号如果因传感器不稳定而引起严重失真时,可以采用程序判断滤波。方法是:根据经验确定两次采样允许的最大偏差△y,若两次采样信号的差值大于△y,表明输入的是干扰信号,应该去掉,用上次采样值作为本次采样值.若小于或等于△y,则表明没有受到干扰,本次采样值有效。 例如,当前采样值存30H,上次采样值存31H,结果存32H.△y根据经验确定,本例设为03H,程序框图如图1所示. 程序清单: ORG 0050H PUSH ACC ;保护现场 PUSH PSW MOV 30H,#33H MOV 31H,#31H MOV A,30H ;Yn→A CLR C SUBB A,31H ;求Yn-Yn—1 JNC LP0 ;Yn-Yn-1≥0吗? CPL A ADD A,#01H LP0:CLR C CJNE A,#01H,LP2;Yn-Yn—1>△y? LP1:MOV 32H,30H;等于△y,本次采样值有效 AJMP LP3 LP2:JC LP1 ;小于△y,转本采样值有效 MOV 32H,31H ;大于△y, Yn-1→32H LP3:POP PSW ;恢复现场 POP ACC 只有当本次采样值小于上次采样值才进行求补,保证本次采样值有效。 在调试过程中,分别对30H、31H置入数值,让两者差值分别大于、等于、小于△y,注意观察32H中数值的变化,以及程序的跳转情况. 实验四 中值滤波 一、实验目的 1、掌握数字滤波中中值滤波的设计思路和单片机程序实现方法; 2、学会使用51汇编集成开发环境调试中值滤波; 3、学会使用保护现场、恢复现场的方法。 二、实验内容 中值滤波就是连续输入3个检测信号,从中选择一个中间值作为有效信号。本例第一次采集的数据存R1,第二次采集的数据存R2,第三次采集的数据存R3,中间值存R0。程序清单如下: ORG 0050H MOV R1,#11H MOV R2,#12H MOV R3,#13H PUSH PSW ;保护PSW、A PUSH A MOV A,R1 ;第1次采集的数据送A CLR C SUBB A,R2; JNC LOB01 ;第1次采集数大于第2次采集数? MOV A,R1 XCH A,R2 ;第1、2次采集数互换 MOV R1,A LOB01: MOV A,R3 CLR C SUBB A,R1 JNC LOB03 ;第3次采集数大于第1次采集数? MOV A,R3 CLR C SUBB A,R2 JNC LOB04 ;第3次采集数大于第2次采集数则转 MOV 32H,A LOB02: POP A ;恢复现场 POP PSW RET LOB03: MOV A,R1 MOV 32H,A AJMP LOB02 LOB04: MOV A,R3 MOV 32H,A AJMP LOB02 END 调试过程中,首先分别对R1、R2、R3三个寄存器赋值,例如(R1)=24H,(R2)=30H,(R3)=2CH,程序运行结束后,(R0)= 重新对R1、R2、R3三个寄存器赋值,观察R0中数值的变化. (R0)= 注:带下划线的数据可以自行改变。 实验五 平均值滤波 一、实验目的 1、掌握数字滤波中均值滤波的设计思路和单片机程序实现方法; 2、学会使用51汇编集成开发环境调试中值滤波; 3、学会使用保护现场、恢复现场的方法. 二、实验内容 均值滤波就是连续监测8个数据,分别放在30H—37H中,首先求出8个数的和,放在R6中,在求出平均值时,采用的方法是移位法,即对和向右移动3次,得到均值。此种方法适用于采样个数为2的幂次方,最后求出的均值放在38H单元.程序清单如下: ORG 0050H MOV A, #88H MOV 30H, #12H MOV 31H, #22H MOV 32H, #42H MOV 33H, #52H MOV 34H, #11H MOV 35H, #21H MOV 36H, #32H MOV 37H, #04H PUSH PSW ;现场保护 PUSH A MOV 7FH, #00H ;进位位清零,7FH单元存放进位 MOV R0, #30H ;设置数据存储区首址 MOV R7, #08H ;设置采样数据个数 CLR A ;清累加器 LOOP: ADD A,@R0 ;两数相加 JNC NEXT ;无进位,转NEXT INC 7FH ;有进位,进位位加1 NEXT: INC R0 ;数据指针加1 DJNZ R7, LOOP ;未加完,继续加 MOV R7, #03H ;设置循环次数 DIVIDE: MOV R6, A ;保存累加器中的内容,R6暂存数据 MOV A, 7FH ;累加结果除2 CLR C RRC A MOV 7FH, A MOV A, R6 RRC A DJNZ R7, DIVIDE ;未结束,继续执行 MOV 38H, A ;保存结果至38H中 POP A ;恢复现场 POP PSW RET END 注:带下划线的数据可以自行改变. 调试过程中,首先分别对30H-37H 单元赋值,具体数值见程序,程序运行结束后,(R6)= (38H)= (7FH)= 重新对30H—37H 单元赋值,观察(R6)= ,(38H)= ,(7FH)= 数值的变化. - 9 -
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服