智能控制课后仿真[汇编]

上传人:x****育 文档编号:146144893 上传时间:2020-09-27 格式:PDF 页数:18 大小:1.41MB
返回 下载 相关 举报
智能控制课后仿真[汇编]_第1页
第1页 / 共18页
智能控制课后仿真[汇编]_第2页
第2页 / 共18页
智能控制课后仿真[汇编]_第3页
第3页 / 共18页
智能控制课后仿真[汇编]_第4页
第4页 / 共18页
智能控制课后仿真[汇编]_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《智能控制课后仿真[汇编]》由会员分享,可在线阅读,更多相关《智能控制课后仿真[汇编](18页珍藏版)》请在金锄头文库上搜索。

1、智能控制智能控制 课后仿真报告课后仿真报告 1 / 18 Remove Demo Watermark from 院院 (系):(系): 电气与控制工程学院 专业班级:专业班级: 自动化 1301 班 姓姓 名:名: 杨 光 辉 学学 号:号: 1306050115 题目题目 2-3: 求二阶传递函数的阶跃相应取采样时间为 SS SG 25 133 2 p )( 1ms 进行离散化。参照专家控制仿真程序,设计专家 PID 控 制器,并进行 MATLAB 仿真。 专家专家 PID 控制控制 MATLAB 仿真程序清单:仿真程序清单: %Exoert PID Controller clear all

2、;%清理数据库中所有数据 close all;%关闭所有界面图形 ts=0.001;%对象采样时间,1ms sys=tf(133,1,25,0);%受控对象的传递函数 dsys=c2d(sys,ts,z);%连续系统转化为离散系统 num,den=tfdata(dsys,v);%离散化后参数,得 num 和 den 值 u_1=0;u_2=0;%设定初值,u_1 是第(k-1)步控制器输出量 y_1=0;y_2=0;%设定初值,y_1 是第(k-1)步系统对象输出量 x=0,0,0;%设定误差 x1 误差导数 x2 误差积分 x3 变量初值 x2_1=0;%设定误差导数 x2_1 的初值 kp

3、=0.6;%设定比例环节系数 ki=0.03;%设定积分环节系数 2 / 18 kd=0.01;%设定微分环节系数 error_1=0;%设定误差 error_1 的初值 for k=1:1:5000%for 循环开始,k 从 1 变化到 500,每步的增量为 1 time(k)=k*ts;%仿真时长0.001 0.5s r(k)=1.0;%Tracing Step Signal 系统输入信号 u(k)=kp*x(1)+kd*x(2)+ki*x(3);%PID ControllerPID 控制器 %Expert control rule %Rule1:Unclosed control rule

4、 规则 1:开环控制 if abs(x(1)0.8%if 循环开始,产生式规则,if.then.;误差的绝对值大于 u(k)=0.45;%控制器输出量等于 elseif abs(x(1)0.40 u(k)=0.40; elseif abs(x(1)0.20 u(k)=0.12; elseif abs(x(1)0.01 u(k)=0.10; end%if 循环结束 %Rule2 规则 2 if x(1)*x(2)0|(x(2)=0)%if 循环开始,如果误差增大或不变 if abs(x(1)=0.05%内嵌 if 循环开始,如果误差绝对值大于 u(k)=u_1+2*kp*x(1);%控制器输出量

5、施加较强控制 else%否则 u(k)=u_1+0.4*kp*x(1);%控制器输出量施加一般控制 end%内嵌 if 循环结束 end%if 循环结束 3 / 18 %Rule3 规则 3 if (x(1)*x(2)0)|(x(1)=0)%if 循环开始,如果误差减小或消除 u(k)=u(k);%控制器输出量不变 end%if 循环结束 %Rule4 规则 4 if x(1)*x(2)0%控制器输出量施加较强控制 else%否则 u(k)=u_1+0.6*kp*error_1;%控制器输出量施加一般控制 end%内嵌 if 循环结束 end%if 循环结束 %Rule5:Integratio

6、n separation PI control 规则 5;运用 PI 控制来消除误差 if abs(x(1)=10 u(k)=10;%设控制器输出量上限值 end if u(k)=-10 u(k)=-10;%设控制器输出量下限值 end %Linear model Z 变化后系统的线性模型 y(k)=-den(2)*y_1-den(3)*y_2+num(1)*u(k)+num(2)*u_1+num(3)*u_2; 4 / 18 error(k)=r(k)-y(k);%系统误差 error 的表达式,等于系统输入减去输出 %-Return of parameters-%每步计算时的参数更新 u_

7、2=u_1;u_1=u(k);%u(k)代替 u_1 y_2=y_1;y_1=y(k);%y(k)代替 y_1 x(1)=error(k);%Calculating P 赋误差 error 值于 x1 x2_1=x(2);%赋值前步计算时的误差导数 X2 的值等于 X2_1 x(2)=(error(k)-error_1)/ts;% Calculating D 求误差导数 x2,用于下一步的计算 x(3)=x(3)+error(k)*ts;% Calculating I 求误差积分 x3 error_1=error(k);%赋误差 error 值于 error_1 end%for 循环结束,整个

8、仿真时长计算全部结束 figure(1);%图形 1 plot(time,r,b,time,y,r);%画图,以时间为横坐标,分别画出系统输入、输出随时 间的变化曲线 xlabel(time(s);ylabel(r,y);%标注坐标 figure(2);%图形 2 plot(time,r-y,r);%画 r-y,即误差随时间的变化曲线 xlabel(time(s);ylabel(error);%标注坐标 专家专家 PID 控制控制 MATLAB 仿真程序过程及结果:仿真程序过程及结果: 1.在 MATLAB 编辑环境下编写专家 PID 控制仿真程序 5 / 18 2.编译运行程序后 Figur

9、e1: PID 控制阶跃响应曲线 Figure2: 6 / 18 误差响应随时间变化曲线 题目题目 3-4: 如果且,则。现已知 21 x 5 . 0 x 1 A 321 y 1 y 5 . 0 y 1 . 0 B 21 z 1 z 2 . 0 C 且,利用模糊推理公式(3.27)和 21 1 x 1 . 0 x 8 . 0 A 321 1 y 0 y 2 . 0 y 5 . 0 B (3.28)求,并采用 MATLAB 进行仿真。 1 C 模糊推理模糊推理 MATLAB 仿真程序清单:仿真程序清单: clear all;%清理数据库中所有数据 close all;%关闭所有界面图形? A=1

10、;0.5;%输入各元素在 A 中的隶属度 B=0.1,0.5,1;%输入各元素在 B 中的隶属度 C=0.2,1;%输入各元素在 C 中的隶属度 %Compound of A and B %合成 A 和 B for i=1:2%A 矩阵的行数取值 i 7 / 18 for j=1:3%B 矩阵的列数取值 j AB(i,j)=min(A(i),B(j);%实现 A,B 的“与”关系 end end %Transfer to Column %转换列向量 T1=;%定义转置矩阵 T1 for i=1:2%AB 矩阵的行数取值 i T1=T1;AB(i,:);%转置 AB 矩阵 end %Get fu

11、zzy R %确立模糊关系矩阵 R for i=1:6%R 矩阵列数取值 i for j=1:2%R 矩阵行数取值 j R(i,j)=min(T1(i),C(j);%确定模糊关系矩阵 R end end % A1=0.8,0.1;%输入各元素在 A1 中的隶属度 B1=0.5,0.2,0;%输入各元素在 B1 中的隶属度 for i=1:2%A1 矩阵的行数取值 i for j=1:3%B1 矩阵的行数取值 j AB1(i,j)=min(A1(i),B1(j);%实现 A1 和 B1 的“与”关系 end end %Transfer to Row%转换行向量 T2=;%定义转置矩阵 T2 8

12、/ 18 for i=1:2%AB1 矩阵的行数取值 i T2=T2,AB1(i,:);%扩展 A1B1 矩阵 end %Get output C1%确定输出 for i=1:6%转置矩阵 T2 列数取值 for j=1:2%模糊矩阵 R 行数取值 D(i,j)=min(T2(i),R(i,j); C1(j)=max(D(:,j);%输出 C1 矩阵 end end 模糊推理模糊推理 MATLAB 仿真程序过程及结果:仿真程序过程及结果: 1.在 MATLAB 编辑环境下编写模糊推理仿真程序 2.编译运行程序后 AB 与关系:与关系: 9 / 18 转置矩阵转置矩阵 T1: 模糊矩阵模糊矩阵

13、R: A1B1 与关系:与关系: 10 / 18 转置矩阵转置矩阵 T2: 输出矩阵输出矩阵 C1: 题目题目 4-3: 已知某一炉温控制系统,要求温度保持在 600恒定。 针对该控制系统有以下控制经验: (1)若炉温低于 600,则升压;低得越多升压越高。 (2)若炉温高于 600,则降压;高得越多降压越低。 (3)若炉温等于 600,则保持电压不变。 11 / 18 设模糊控制器为一维控制器,输入语言变量为误差,输出 为控制电压。输入、输出变量的量化等级为 7 级,取 5 个 模糊集。试设计隶属度函数误差变化划分表、控制电压变 化划分表和模糊控制规则表。 解:输入(e)以及输出(u)分为

14、5 个模糊集: NB、NS、ZO、PS、PB。输入变量(e)以及输出变量(u) 分为 7 个等级:-3、-2、-1、0、+1、+2、+3。 炉温变化炉温变化 e 划分表划分表 变化等级隶属度 -3-2-10123 PB000000.51 PS000010.50 ZO000.510.500 NS00.510000 模 糊 集 NB10.500000 控制电压变化划分表控制电压变化划分表 变化等级隶属度 -3-2-10123 12 / 18 PB000000.51 PS000010.50 ZO000.510.500 NS00.510000 模 糊 集 NB10.500000 模糊控制规则表模糊控制

15、规则表 若(若(IF)NBeNSeZOePSePBe 则则 (THEN) NBuNSuZOuPSuPBu 炉温模糊控制炉温模糊控制 MATLAB 仿真程序清单:仿真程序清单: %Fuzzy Control for furnace temperature clear all;%清理数据库中所有数据 close all;%关闭所有界面图形 a=newfis(fuzz_temperature);%模糊炉温 a=addvar(a,input,e,-3,3);%Parameter e 输入参数 e 的取值范围 a=addmf(a,input,1,NB,zmf,-3,-1); a=addmf(a,inpu

16、t,1,NS,trimf,-3,-1,1); a=addmf(a,input,1,Z,trimf,-2,0,2); a=addmf(a,input,1,PS,trimf,-1,1,3); 13 / 18 a=addmf(a,input,1,PB,smf,1,3); a=addvar(a,output,u,-3,3);%Parameter u 输出参数 u 的取值范围 a=addmf(a,output,1,NB,zmf,-3,-1); a=addmf(a,output,1,NS,trimf,-3,-2,1); a=addmf(a,output,1,Z,trimf,-2,0,2); a=addmf(a,output,1,PS,tri

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 心得体会

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号