模糊控制程序设计报告
- 格式:pdf
- 大小:150.05 KB
- 文档页数:6
模糊PID控制温控系统设计C语言程序代码介绍本文介绍了使用模糊PID控制方法来设计温控系统的C语言程序代码。
本温控系统使用传感器读取室内温度,然后根据读取的数值对应调整冷风机的风速和加热器的加热时间,从而控制室内温度达到一个设定值。
系统设计本温控系统采用模糊PID控制方法,具体实现流程如下:1.根据设定温度和当前室内温度计算出误差值2.使用模糊控制方法将误差值转化为温度调节量3.根据模糊控制输出的温度调节量计算出PID控制器的输出4.根据PID控制器的输出调节冷风机的风速和加热器的加热时间系统设计中需要使用的传感器,冷风机和加热器的具体型号及参数需要根据实际情况进行选择。
此处不做详细说明。
程序代码实现以下代码实现了上述系统设计,包括模糊控制和PID控制。
// 温控系统C语言程序代码#include<stdio.h>#include<stdlib.h>// 模糊控制double GetTemperatureByFuzzy(double error){double delta = 0.5; // 设定的温度调节步长double result = 0;if (error <= -5){result = 1;}else if (error > -5 && error < 0){result = (error + 5) / 5.0;}else if (error >= 0 && error < 5){result = (5 - error) / 5.0;}else{result = 0;}return result * delta;}// PID控制double GetTemperatureByPID(double error, double lastError, double integ ral){double Kp = 0.5; // 比例系数double Ki = 0.01; // 积分系数double Kd = 0.1; // 微分系数double deltaT = 0.1; // 采样时间double derivate = (error - lastError) / deltaT;double result = Kp * error + Ki * integral + Kd * derivate;return result;}// 主函数int main(){double setTemp = 25; // 设定温度double curTemp = 24; // 当前温度,需要从传感器读取double lastError = 0; // 上一次的误差值double integral = 0; // 积分项while (1){double error = setTemp - curTemp; // 计算当前误差值double fuzzyTemp = GetTemperatureByFuzzy(error); // 模糊控制integral += error; // 更新积分项double pidTemp = GetTemperatureByPID(error, lastError, integra l); // PID控制lastError = error; // 更新上一次误差值// 根据pidTemp和fuzzyTemp调节冷风机的风速和加热器的加热时间,省略// 读取传感器更新当前温度,省略// curTemp = GetCurTemp();// 采样时间,省略// sleep(1);}}本文介绍了使用模糊PID控制方法来设计温控系统的C语言程序代码。
课程名称:智能控制实验名称:模糊控制一、实验目的:(1)了解在Simulink 仿真环境下建立控制系统方框图的方法,熟悉Matlab 和Simulink 仿真环境(2)掌握模糊控制器的设计方法。
(3)比较PID 控制和模糊控制的特点。
二、实验内容和步骤 已知s e s s s G 2.0214820)(-++=,分别设计PID 控制与模糊控制,使系统达到较好性能,并比较两种方法的结果。
结构如下图。
(1)模糊控制规则设计针对该定位系统,设计二维模糊控制规则,使性能达到最佳。
模糊控制规则如下:(2)设计未加PID或FUZZY控制器时,设计系统如下:输入阶跃信号,观测与分析仿真结果。
(3)加入PID控制器如下:对应的仿真结构图为:调整参数,观测与分析仿真结果。
PID控制的仿真曲线如下:(4)设计FUZZY控制器在simulink仿真环境下,设计模糊控制系统,包括模糊控制规则、隶属函数、比例因子、量化因子、论域等参数设计。
FUZZY控制仿真结构图如下:其中黄色部分具体为:利用simulink设计的模糊控制的仿真结构图为:其中对于模糊控制器的设计:E=[-6 6] EC=[-6 6] U=[-6 6],并且其隶属函数分别为:E的隶属函数EC的隶属函数U的隶属函数再将其中一个学生的比较好的实验结果作为参考实例:首先仿真图如下:模糊控制器的设计:E=[-6 6] EC=[-6 6] U=[-6 6],并且其隶属函数分别为:E和EC的隶属函数U的隶属函数控制规则:ECNB NM NS ZE PS PM PB ENB PB PB PB PB PM ZE ZENM PB PB PB PB PM ZE ZENS PM PM PM PM ZE NS NSZE PM PM PS ZE NS NM NMPS PS PS ZE NM NM NM NMPM ZE ZE NM NB NB NB NBPB ZE ZE NM NB NB NB NB设计好模糊控制器后,运行仿真图形,得到的仿真曲线如下(step time=1):模糊控制的仿真曲线由仿真可知,通过选择合适的PID参数可以达到较好的控制性能。
控制工程学院课程实验报告:智能控制 课程实验报告实验题目: 模糊控制器的设计与实现班级 姓名 学号 日期一、 实验目的及内容实验目的:1、掌握模糊控制器的设计方法;2、比较模糊控制器与常规控制器的优缺点;3、提高matlab 程序设计能力; 实验内容:1、针对一个被控对象,定义输入输出模糊变量及模糊控制规则;2、分析设计模糊控制器与常规控制器测出两种情况下系统的阶跃响应;3、比较分析实验结果。
二、 实验设备1、安装有Matlab 软件的pc 机;2、设定一被控二阶传递函数 三、 实验原理1、模糊控制原理:模糊逻辑控制又称模糊控制,是以模糊集合论,模糊语言变量和模糊逻辑推理为基础的一类计算机控制策略,模糊控制是一种非线性控制。
图一位常规的模糊控制设计模型图一 常规模糊控制系统原理图23S S 2S G 2++=)(针对模糊控制器每个输入,输出,各自定义一个语言变量。
因为对控制输出的判断,往往不仅根据误差的变化,而且还根据误差的变化率来进行综合评判。
所以在模糊控制器的设计中,通常取系统的误差值e 和误差变化率ec 为模糊控制器的两个输入,则在e 的论域上定义语言变量“误差E ” ,在ec 的论域上定义语言变量“误差变化EC ” ;在控制量u 的论域上定义语言变量“控制量U ” 。
通过检测获取被控制量的精确值,然后将此量与给定值比较得到误差信号e ,对误差取微分得到误差变化率ec ,再经过模糊化处理把分明集输入量转换为模糊集输入量,模糊输入变量根据预先设定的模糊规则,通过模糊逻辑推理获得模糊控制输出量,该模糊输出变量再经过去模糊化处理转换为分明集控制输出量。
2、PID 控制原理:在模拟控制系统中,控制器最常用的控制规律是PID 控制。
PID 控制器是一种线性控制器。
它根据给定值与实际输出值之间的偏差来控制的。
其传递函数的形式是:,PID 控制原理框图如图二所示。
式中p k ——比例系数;I T ——积分时间常数;D T ——微分时间常数。
模糊控制系统实验报告学院:班级::学号:、实验目的1.通过本次实验,进一步了解模糊控制的基本原理、模糊模型的建立和模糊控制器的设计过程。
2.提高有关控制系统的程序设计能力;3.熟悉Matlab语言以及在智能控制设计中的应用。
二、实验内容设计一个采用模糊控制的加热炉温度控制系统。
被控对象为一热处理工艺制作中的加热炉,加热设备为三相交流调压供电装置,输入控制信号电压为0-5V,输出相电压为0-220V,输出最大功率180kW炉内变化室温~625C。
三、实验过程及步骤1.用Matlab中的Simulink工具箱,组成一个模糊控制系统,如图所示2.采用模糊控制算法,设计出能跟踪给定输入的模糊控制器,对被控系统进行仿真,绘制出系统的阶跃响应曲线(1)模糊集合及论域的定义对误差E、误差变化EC机控制量U的模糊集合及其论域定义如下: E、EC和U的模糊集合均为:{NB、NM NS 0、PS PM PB}E和EC的显示范围为:[-6 6]结果如下图所示FIS Editor: UntitledFile Edit Viev;FIS VariablesEMECin put variable "E"Current VariableNameTypeRangeDisplay RangeEinput[-6 6]Help Close Select etl variable "E"File Edit Viev^Current VariableNsrueTypeRangeDitsptey RangeSelected variable 'U"打开Rule编辑器,并将49条控制规则输入到Rule编辑器中FIS VariablesLIoutput06】[-6 6]Rule Editor: UntitledECouiput variable "U1利用编辑器的” View T Rules”和” View^Surface ”得到模糊推理系统的模糊规则和输入输出特性曲面,分别如下图所示Fil e Edit Viev; OptionsFile Edit Viev^ OptionsRule Viewer Untitled忻珅:[□ g]Plot points: 101left down up ReadySurface Viewer: UntitledE "U = 1.a3e-D0&Move:Help Close口从图中可以看出,输出变量U 是关于两个输入变量E 、EC 的非线性函 数,输入输出特性曲面越平缓、光滑,系统的性能越好。
1.1课题研究背景及意义伴随着现代工业的快速发展,标志着一个国家工业实力的相应设备如精密机床、工业机器人等对其“驱动源”一电伺服驱动系统提出了越来越高的要求。
而基于正弦波反电势的永磁同步电动机(简称PMSM)因其卓越的性能已日渐成为电伺服系统执行电动机的“主流”[1],随着现代电力电子技术、微电子技术及计算机技术等支撑技术的快速发展,以永磁同步电动机作为执行机构的交流伺服驱动系统的发展得以极大的迈进。
然而伺服控制技术是决定交流伺服系统性能好坏的关键技术之一,是国外交流伺服技术封锁的主要部分。
随着国内交流伺服电机及驱动器等硬件技术逐步成熟,以软形式存在于控制芯片中的伺服控制技术成为制约我国高性能交流伺服技术及产品发展的瓶颈。
研究具有自主知识产权的高性能交流伺服控制技术,尤其是最具应用前景的永磁同步电动机伺服控制技术,具有重要的理论意义和实用价值[2,3]。
1.2伺服系统简介1.2.1伺服系统的定义伺服控制系统一般包括控制器、被控对象、执行环节、检测环节、比较环节等五部分[4],其系统结构如图1.1所示。
图1-1伺服系统结构根据伺服系统图1.1中各组成部分的区别,伺服系统有多种不同的分类方法。
按照执行元件即电机的类型通常可分为直流伺服系统和交流伺服系统;根据控制器实现方法不同,可分为模拟伺服系统和数字伺服系统;根据控制器中闭环的多少,可分为开环控制系统、单环控制系统、双环控制系统和多环控制系统[5]。
1.2.2伺服系统的发展状况对于发展高性能交流伺服系统来说,由于在一定条件下,作为“硬形式’,存在的伺服电机、逆变器以相应反馈检测装置等性能的提高受到许多客观因数的制约;而以“软形式”存在的控制策略具有较大的柔性,近年来随着控制理论新的发展,尤其智能控制的兴起和不断成熟,加之计算机技术、微电子技术的迅猛发展,使得基于智能控制的先进控制策略和基于传统控制理论的传统控制策略的“集成"得以实现,并为其实际应用奠定了物质基础【6】。
clear all;close all;T=0; %ʱ¼ä³£Êýa=newfis('fuzz_temperatrue');a=addvar(a,'input','e',[-3,3]); %Parameter e a=addmf(a,'input',1,'NB','zmf',[-3,-1]);a=addmf(a,'input',1,'NM','trimf',[-3,-2,0]);a=addmf(a,'input',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]);a=addmf(a,'input',1,'PM','trimf',[0,2,3]);a=addmf(a,'input',1,'PB','smf',[1,3]);a=addvar(a,'output','u',[72,78]); %Parameter u a=addmf(a,'output',1,'NB','zmf',[72,74]);a=addmf(a,'output',1,'NM','trimf',[72,73,75]);a=addmf(a,'output',1,'NS','trimf',[73,74,75]);a=addmf(a,'output',1,'Z','trimf',[74,75,76]);a=addmf(a,'output',1,'PS','trimf',[75,76,77]);a=addmf(a,'output',1,'PM','trimf',[75,77,78]);a=addmf(a,'output',1,'PB','smf',[76,78]);rulelist=[1 1 1 1; %Edit rule base2 2 1 1;3 3 1 1;4 4 1 1;5 5 1 1;6 6 1 1;7 7 1 1];a=addrule(a,rulelist);a1=setfis(a,'DefuzzMethod','mom'); %Defuzzywritefis(a1,'temperatrue'); %Save to fuzzy file "tank.fis" a2=readfis('temperatrue');figure(1);plotfis(a2);figure(2);plotmf(a,'input',1);figure(3);plotmf(a,'output',1);flag=1;if flag==1showrule(a) %Show fuzzy rule baseruleview('temperatrue'); %Dynamic Simulationenddisp('-------------------------------------------------------');disp(' fuzzy controller table:e=[-3,+3],u=[-4,+4] ');disp('-------------------------------------------------------');for i=1:1:7e(i)=i-4;Ulist(i)=evalfis([e(i)],a2);endUlist=round(Ulist)e=-3; % Erroru=evalfis([e],a2) %Using fuzzy inference四、Simulink仿真模型五、实验结果令T=0;1、模糊控制器为一维控制器,输入输出变量的量化等级为7级,取5个模糊集。
模糊控制课程设计报告一、模糊控制器设计1.输入输出变量的隶属度函数图1.1输入偏差量e图1.2输入偏差量变化率ec图1.3输出控制量u2.模糊规则设置1.if(input1 is ss1 ) and (input2 is s2)then (output1is b3)2.if(input1 is ss1 )and (input2 is m2)then (output1 is b3)3.if(input1 is ss1 )and (input2 is b2)then (output1 is mb3)4.if(input1 is s1 ) and (input2 is s2)then (output1 is b3)5.if(input1 is s1 )and (input2 is m2)then (output1 is mb3)6.if(input1 is s1 ) and (input2 is b2)then (output1 is m3)7.if(input1 is sm1) and (input2 is s2)then (output1 is mb3)8.if(input1 is sm1)and (input2 is m2)then (output1 is mb3)9.if(input1 is sm1)and (input2 is b2)then (output1 is m3)10.if(input1 is bb1)and (input2 is b2)then (output1 is s3)11.if(input1 is bb1)and (input2 is m2)then (output1 is s3)12.if(input1 is bb1)and (input2 is s2)then (output1 is sm3)13.if(input1 is b1) and (input2 is b2)then (output1 is s3)14.if(input1 is b1)and (input2 is m2)then (output1 is sm3)15.if(input1 is b1)and (input2 is s2)then (output1 is m3)16.if(input1 is mb1)and (input2 is b2)then (output1 is sm3)17.if(input1 is mb1)and (input2 is m2)then (output1 is sm3)18.if(input1 is mb1)and (input2 is s2)then (output1 is m3)19.if(input1 is m1)and (input2 is m2)then (output1 is m3)20.if(input1 is m1)and (input2 is s2)then (output1 is mb3)21.if(input1 is m1)and (input2 is b2)then (output1 is sm3)二、Simulink回路设计1.设计思路按照书中所示的基本结构将偏差、控制器、被控对象连接成一个回路,通过将偏差和偏差变化率输入模糊控制器,得到输出控制力矩u输入到被控对象中,最终得到理想的控制结果。
用 PLC 实现模糊控制的程序设计方法摘要:采用 PLC 进行模糊控制操作的程序设计的方法,是我们在应用 PLC 实现一些复杂控制系统时发现的,以前我们经常使用的小型 PLC 由于其不具备现代控制算法植入功能而逐渐被淘汰,文中所述程序设计方法通过实际项目的检验发现可以有效地对系统进行控制,有效缩短控制系统开发周期,其优越性能正在逐步强大起来。
关键词:PLC;模糊控制PLC 即可编程控制器,是为了进行相关数据的计算而发明的一种适用于规模化工业生产条件下使用的设备,通过一定的程序和要求,进行数据的输入和结果的输出,以此来控制工业生产过程。
模糊控制就是将其建立在人类思考问题的方式上形成的一种控制方法,它反映着人类的思维在处理事情上展现出来的一种模糊化的思考,比如对于复杂看似难以解决的问题,人们往往会根据自己的经验对事物进行思考,当我们对被控系统在一定程度上有所认识的前提下,并为解决它需要实现的控制功能而进行适当的思考,这时我们便将其称之为思维的模糊性。
模糊控制就是模仿的人类面对这种状况下的思维,我们只需给予它一定的模糊的指令程序,让其对整个的控制过程进行计算运行,这种看似简单的指令却需要有专业的人士发出以便得到相对更准确的结果。
这种对于控制的模糊性和我们以往进行的自动化的控制有着完全不同的本质,而这种模仿人类思维的控制恰恰体现了它智能化的一面,更适合当今生产对于控制的要求。
一、控制算法面对现今工业生产的复杂性,简单的线性数学模型已经不能满足生产的要求,取而代之的是要建立一个可适应不停变化的、非简单性的控制系统,而这种模型的建立纯在较大的难度。
在过去生产简单产品,不需要过多操作流程的条件下,简单传统的控制就可以实现生产的要求,现在只有找到一种先进的控制模式才能让复杂的生产流程顺利进行,用 PLC 进行模糊控制便是解决这一问题的有效办法。
传统的控制需要基于一定的模型才能准确运行,而模糊控制则完全不需要,正是这一点才让它适应于复杂的条件。
模糊控制大作业1.基于Matlab平台设计Fuzzy控制器,其结构如下:1.1被控对象:G(S)= .1.2建立模糊推理系统如下:图1.模糊推理机图2. 输入的隶属函数图3. 输出的隶属函数图4.规则观测器的GUI1.3Simulink仿真图6 仿真连线图图7 仿真结果2.分析模糊规则数量对控制效果的影响;模糊控制器的规则基于专家知识或熟练操作人员长期积累的经验,它是按人的知觉推理的一种语言表示形式。
规则由前件和结论组成,均由语言变量表示,规则条数与语言变量取值的多少有关,取值越多,规则条数越多,但不意味着规则知识库的准确程度越高,规则库的“准确性”还与专家的知识准确度有关,而规则库的“准确性”影响控制效果的好坏,故模糊规则的数量过少会导致控制的不准确,但数量多并不意味着控制效果越好,规则过于复杂时,基于模糊合成推理的控制算法的计算机实现越困难。
3.分析量化因子、比例因子对控制效果的影响;量化因子的提出是为了进行模糊化处理,必须将输入变量从基本论域转换到相应的模糊集合论域,输入变量乘以量化因子从而的到需要的变量。
比例因子Ke对控制效果的影响:对系统的动态性能影响很大。
Ke较大时系统上升较快,超调量也较大,过渡时间长。
Kc的影响:KC越大,d e(t)/dt范围压缩,控制作用增强。
因此K c选择较大时系统超调量减小,系统相应速度变慢。
对超调的遏制作用很明显。
Ku的影响:Ku不同,在模糊输出相同的情况下,加到被控对象上的实际控制量不同。
Ku 选择得小,会使系统动态响应过程变长;而Ku过大,则控制器的控制作用就越强,系统响应就快,易超调,Ku选择过大会导致系统振荡。
4.对比PID控制器与模糊控制器在抗干扰的能力经计算机仿真试验表明:模糊控制系统在抑制超调、加速响应、消除稳态误差、减少震荡周期等方面都得到了提高,使系统的稳定性、抗干扰性、鲁棒性能均优于常规 PID控制,能很好地满足系统控制性能的要求.而且, 这种控制器具有结构简单、待整定参数少、控制规则简便、易实现、调试方便、适应性强等特点,在换热器出口温度控制中是一种很好的控制方法. 常规的PID 控制器对这种大惯性、时间滞后、非线性的系统的适应性差、控制精度低,不仅影响产品质量而且往往造成能源浪费,难以保证理想的控制效果。
西安交通大学实验报告第1页(共13页)课程:智能控制实验日期:年月日专业班号:自动化交报告日期:年月日姓名:学号:报告退发:(订正、重做)同组者:教师审批签字:实验一模糊控制仿真系统设计实验目的:理解和掌握模糊控制系统的构成和设计方法,为实际工程应用打下基础。
基本要求:掌握以误差及其变化率为输入的典型模糊控制器的设计方法,了解影响模糊控制器性能的关键参数及调节方法。
针对被控对象,构建合适的模糊控制器,搭建模糊控制系统。
实验内容提要:针对典型的二阶以上被控对象,设计模糊控制器。
包括控制器输入输出量的选择,输入输出论域的模糊划分,模糊规则库的建立等。
利用设计完成的模糊控制在Simulink中搭建模糊控制系统,要求该系统稳定且具有良好的动态及稳态特性。
实验工作概述:主要针对倒立摆进行了建模与模糊控制仿真,其中实验1-1是仅针对角度的模糊PID控制,实验1-2是针对位置与角度的分段模糊控制。
后面也尝试进行了二级倒立摆的模糊控制设计,但由于知识水平不够没能完全实现,仅实现了第一级的直立控制。
实验1-1 单级倒立摆的PID模糊控制一、被动对象数学描述与特性分析关于倒立摆的相关背景:倒立摆,Inverted Pendulum ,是典型的多变量、高阶次、非线性、强耦合、自然不稳定系统。
倒立摆系统的稳定控制是控制理论中的典型问题,在倒立摆的控制过程中能有效反映控制理论中的许多关键问题 ,如非线性问题、鲁棒性问题、随动问题、镇定、跟踪问题等。
因此倒立摆系统作为控制理论教学与科研中典型的物理模型 ,常被用来检验新的控制理论和算法的正确性及其在实际应用中的有效性。
所以我此次实验采用一阶倒立摆来验证。
当摆杆夹角很小时,近似线性化处理:(I +ml 2)θ+mglθ=mlẍ (M +m )ẍ+bẋ−mlθ=u根据微分方程组做拉普拉斯变换联立求得外力针对角度的传递函数:Φ(s)U(s)=ml 2qs 2s 4+b(I +ml 2)q s 3−(M +m )mgl q s2−bmql q s将各种参数输入matlab ,编辑一个函数脚本GetPendulum 来求传递函数的系数:当M=2,m=0.8,l=0.25时,求得:这是一个典型的二阶系统二、模糊控制器的设计步骤与具体参数选择模糊集合设计:总共有两个输入三个输出,输入角度和角度微分的模糊集合划分都相同,论域为[-5,5],模糊集合为3个,分别命名为:[N Z P],输出P I D三个参数的范围分别为[110,120],[115,125],[80,90],模糊集合为3个命名为:[S M B]它们的分布如上图所示。
编号:实验一普通PI控制方法的设计与实现一、实验目的1. 掌握数字PI及其算法的实现2. 熟悉在在keil环境下进行单片机程序的设计3. 熟悉仿真软件protues的使用二、实验设备及条件1. 计算机系统2. 编程软件keil4和仿真软件protues7.8三、实验原理及其实验步骤(1) PID算法的数字化实现在模拟系统中,PID算法的表达式为u(t)=K P[e(t)+1T I∫e(t)dt+T Dde(t)dt]式中u(t):调节器的输出信号;e(t):调节器的偏差信号,它等于测量值与给定值之差;Kp:调节器的比例系数;T I:调节器的积分时间;TD:调节器的微分时间;离散化的PID为:u(k)=K P[e(k)+TT I∑e(j)kj=0+T DT(e(k)−e(k−1))]Δt=T:采样周期,必须使T足够少,才能保证系统有一定的精度;E(k):第K次采样时的偏差值;E(k-1) :第K-1次采样时的偏差值;K:采样序号,K=0,1,2……;P(k-1):第K次采样时调节器的输出;上式计算复杂,经过化简为:u(k)=u(k−1)+K P[e(k)−e(k−1)]+K I e(k)+K D[e(k)−2e(k−1)+e(k −2)]式中:K I=K P TT I为积分系数K D=K P T DT为微分系数要计算第K次输出值u(k),只需要知道u(k-1),e(k),E(k-1),e(k-2)即可。
上式也称为位置型PID的位置控制算法。
在很多控制系统中,由于执行机构是采用布进电机进行控制,所以只要给一个增量信号即可。
因此得到增量型PID的位置控制算法。
∆u=K P[e(k)−e(k−1)]+K I e(k)+K D[e(k)−2e(k−1)+e(k−2)] (2) 控制系统的结构框图整个系统的控制框图如下所示:图1 PID控制系统结构框图在本次设计中,经过计算,被控对象的传递函数是:G(s)=1 (SCR)2+3SCR+1其中:C=10uf,R=20K;带入上式后可得:G(s)=10.04S2+0.6S+1显然是一个二阶系统。
自动化专业综合设计报告设计题目:模糊跟踪控制一、设计目的学习模糊控制的理论基础,了解模糊控制的概念,掌握模糊控制的基本方法;熟悉Matlab,学习模糊控制的Matlab仿真,设计模糊控制器,实现控制系统输出跟踪期望信号;熟悉模糊跟踪控制器的基本原理,学会通过改变跟踪信号,看仿真结果;学会改变控制系统,看仿真结果。
二、设计要求熟悉Matlab ,参考教材的第三章和第四章4.1,4.3;设计模糊控制器,实现控制系统输出跟踪期望信号;熟悉模糊跟踪控制器的基本原理,熟悉模糊跟踪控制的程序和结构框图;改变跟踪信号,看仿真结果;改变控制系统,看仿真结果。
三、设计内容(可加附页)(一)、设计模糊控制器,实现控制系统输出跟踪期望信号。
通过设计模糊跟踪控制程序实现跟踪控制功能。
其中模糊控制器组成原理框图如下图设计的控制器原理结构图如下根据以上原理图进行编程,并绘制以下结构框图,通过修改程序参数完成模糊跟踪控制器的设计。
其中原程序为:%Fuzzy Controller Designclear all;close all;a=newfis('fuzzf');f1=1;a=addvar(a,'input','e',[-3*f1,3*f1]); %Parameter ea=addmf(a,'input',1,'NB','zmf',[-3*f1,-1*f1]);a=addmf(a,'input',1,'NM','trimf',[-3*f1,-2*f1,0]);a=addmf(a,'input',1,'NS','trimf',[-3*f1,-1*f1,1*f1]);a=addmf(a,'input',1,'Z','trimf',[-2*f1,0,2*f1]);a=addmf(a,'input',1,'PS','trimf',[-1*f1,1*f1,3*f1]);a=addmf(a,'input',1,'PM','trimf',[0,2*f1,3*f1]);a=addmf(a,'input',1,'PB','smf',[1*f1,3*f1]);f2=1;a=addvar(a,'input','ec',[-3*f2,3*f2]); %Parameter ec a=addmf(a,'input',2,'NB','zmf',[-3*f2,-1*f2]);a=addmf(a,'input',2,'NM','trimf',[-3*f2,-2*f2,0]);a=addmf(a,'input',2,'NS','trimf',[-3*f2,-1*f2,1*f2]);a=addmf(a,'input',2,'Z','trimf',[-2*f2,0,2*f2]);a=addmf(a,'input',2,'PS','trimf',[-1*f2,1*f2,3*f2]);a=addmf(a,'input',2,'PM','trimf',[0,2*f2,3*f2]);a=addmf(a,'input',2,'PB','smf',[1*f2,3*f2]);f3=1.5;a=addvar(a,'output','u',[-3*f3,3*f3]); %Parameter u a=addmf(a,'output',1,'NB','zmf',[-3*f3,-1*f3]);a=addmf(a,'output',1,'NM','trimf',[-3*f3,-2*f3,0]);a=addmf(a,'output',1,'NS','trimf',[-3*f3,-1*f3,1*f3]);a=addmf(a,'output',1,'Z','trimf',[-2*f3,0,2*f3]);a=addmf(a,'output',1,'PS','trimf',[-1*f3,1*f3,3*f3]);a=addmf(a,'output',1,'PM','trimf',[0,2*f3,3*f3]);a=addmf(a,'output',1,'PB','smf',[1*f3,3*f3]);rulelist=[1 1 1 1 1; %Edit rule base1 2 1 1 1;1 32 1 1;1 42 1 1;1 5 3 1 1;1 6 3 1 1;1 7 4 1 1;2 1 1 1 1;2 2 2 1 1;2 3 2 1 1;2 43 1 1;2 53 1 1;2 6 4 1 1;2 7 5 1 1;3 1 2 1 1;3 2 2 1 1;3 3 3 1 1;3 4 3 1 1;3 54 1 1;3 6 5 1 1;3 7 5 1 1;4 1 2 1 1;4 2 3 1 1;4 3 3 1 1;4 4 4 1 1;4 5 5 1 1;4 65 1 1;4 7 6 1 1;5 1 3 1 1;5 2 3 1 1;5 3 4 1 1;5 4 5 1 1;5 5 5 1 1;5 6 6 1 1;5 76 1 1;6 1 3 1 1;6 2 4 1 1;6 3 5 1 1;6 4 5 1 1;6 5 6 1 1;6 6 6 1 1;6 7 7 1 1;7 1 4 1 1;7 2 5 1 1;7 3 5 1 1;7 4 6 1 1;7 5 6 1 1;7 6 7 1 1;7 7 7 1 1];a=addrule(a,rulelist);%showrule(a) % Show fuzzy rule base a1=setfis(a,'DefuzzMethod','mom'); % Defuzzywritefis(a1,'fuzzf'); % save to fuzzy file "fuzz.fis" which can be% simulated with fuzzy toola2=readfis('fuzzf');disp('-------------------------------------------------------');disp(' fuzzy controller table:e=[-3,+3],ec=[-3,+3] ');disp('-------------------------------------------------------');Ulist=zeros(7,7);for i=1:7for j=1:7e(i)=-4+i;ec(j)=-4+j;Ulist(i,j)=evalfis([e(i),ec(j)],a2);endendUlist=ceil(Ulist)figure(1);plotfis(a2);figure(2);plotmf(a,'input',1);figure(3);plotmf(a,'input',2);figure(4);plotmf(a,'output',1);通过Matlab仿真软件绘制结构框图实现以上功能,如下图(二)、改变跟踪信号,看仿真结果;将原有正弦信号改成锯齿波信号,看仿真结果。
模糊控制程序设计报告自研112班 麻世博 2201100387题目:已知被控对象为0.51()101s G s e s −=+。
假设系统给定为阶跃值r =30,采样时间为0.5s ,系统的初始值r(0)=0。
试分别设计:(1)常规的PID 控制器;(2)常规的模糊控制器;分别对上述2种控制器进行Matlab 仿真,并比较控制效果解答:1 常规PID 控制器的设计与SIMULINK 仿真如图1所示,使用SIMULINK 工具对已知系统的PID 控制系统进行仿真。
图1 PID 控制系统的SIMULIK 仿真其中PID 控制器为离散型,采样时间T=0.5s ,参数P=14,I=3,D=0。
阶跃信号幅值为30,被控对象传递函数为0.51()101s G s e s −=+。
该系统的阶跃响应如图2。
图2 PID控制系统的输出该控制系统上升时间T r=1.5s,调节时间T s=8s,超调量σ%=70%,没有稳态误差。
该系统中PID控制器的输出曲线如图3。
图3 PID控制器的输出曲线输出最大值为465,最小值为-208。
2 模糊控制器的设计在本文中,我通过MATLAB提供的模糊逻辑工具箱(Fuzzy Logic Toolbox)编辑隶属函数、控制规则,设计了一个双输入单输出的模糊控制器,如下图所示。
图4 模糊控制器概览2.1 隶属度函数的确立。
选择偏差E和偏差变化率EC作为控制器的输入,控制量U为输出。
取E、EC和U的模糊子集为{NB, NM, NS, ZO, PS, PM, PL} ,它们的论域为{-3, -2, -1, 0, 1, 2, 3}。
在 MATLAB的命令窗口输入命令Fuzzy,进入模糊逻辑编辑窗口。
取输入量E、EC的隶属函数为高斯型(gaussmf),输出U的隶属函数为三角形(trimf),如下图所示。
图5 输入模糊变量E的隶属度函数图6 输入模糊变量EC的隶属度函数图7 输出模糊变量U的隶属度函数2.2 模糊控制规则与决策方法的确立。
模糊控制实验报告1.引言随着科技的不断发展,模糊控制理论在控制系统中的应用越来越广泛。
模糊控制通过将精确的数学模型转化为模糊的规则,可以更好地适应复杂、非线性的控制系统。
本实验旨在通过设计一个模糊控制系统来实现对一个简单的水温控制过程的控制,以验证模糊控制在实际系统中的有效性。
2.实验原理本实验将一个简化的水温控制过程作为被控对象,控制目标是使得水温保持在一个设定的温度范围内。
水温的变化是由水流量和加热功率两个因素决定的。
因此,控制系统的输入变量为水流量、加热功率,输出变量为水温。
通过模糊控制器根据当前的水温及其变化率来调节水流量和加热功率,从而实现对水温的控制。
模糊控制器的输入变量为当前的水温和水温变化率,输出变量为水流量和加热功率的控制信号。
通过设定一系列模糊规则,模糊控制器可以根据当前的输入变量来决定输出变量的值,并调整其大小以实现对水温的精确控制。
3.实验步骤1)设定水温的设定值及其变化率,作为模糊控制器的输入变量。
2)使用模糊推理方法,通过设定一系列模糊规则,将输入变量映射到输出变量。
3)根据输出变量的值,调节水流量和加热功率的控制信号。
4)监测水温的变化,根据测量结果对模糊控制器进行调整,以提高控制的精度。
5)重复步骤3和4,直到水温稳定在设定的范围内。
4.实验结果经过多次实验,我们成功地设计出了一个能够稳定控制水温的模糊控制系统。
在不同的设定值和变化率下,模糊控制器都能够根据当前的输入变量来自适应地调节输出变量的值,使水温保持在设定的范围内。
通过对实验数据的分析,我们发现模糊控制系统具有较好的动态性能和鲁棒性。
在水温变化较快的情况下,模糊控制器能够及时地调整输出变量的值,使水温能够迅速回到设定的范围内。
而在水温变化较慢的情况下,模糊控制器能够稳定地控制输出变量的值,使水温能够保持在设定的范围内。
对比传统的PID控制器,我们发现模糊控制系统在对非线性系统和难以建模的系统进行控制方面具有明显的优势。
模糊控制程序设计报告
自研112班 麻世博 2201100387
题目:已知被控对象为0.51()101
s G s e s −=+。
假设系统给定为阶跃值r =30,采样时间为0.5s ,系统的初始值r(0)=0。
试分别设计:
(1)常规的PID 控制器;
(2)常规的模糊控制器;
分别对上述2种控制器进行Matlab 仿真,并比较控制效果
解答:
1 常规PID 控制器的设计与SIMULINK 仿真
如图1所示,使用SIMULINK 工具对已知系统的PID 控制系统进行仿真。
图1 PID 控制系统的SIMULIK 仿真
其中PID 控制器为离散型,采样时间T=0.5s ,参数P=14,I=3,D=0。
阶跃信号幅值为30,被控对象传递函数为0.51()101
s G s e s −=+。
该系统的阶跃响应如图2。
图2 PID控制系统的输出
该控制系统上升时间T r=1.5s,调节时间T s=8s,超调量σ%=70%,没有稳态误差。
该系统中PID控制器的输出曲线如图3。
图3 PID控制器的输出曲线
输出最大值为465,最小值为-208。
2 模糊控制器的设计
在本文中,我通过MATLAB提供的模糊逻辑工具箱(Fuzzy Logic Toolbox)编辑隶属函数、控制规则,设计了一个双输入单输出的模糊控制器,如下图所示。
图4 模糊控制器概览
2.1 隶属度函数的确立。
选择偏差E和偏差变化率EC作为控制器的输入,控制量U为输出。
取E、EC和U的模糊子集为{NB, NM, NS, ZO, PS, PM, PL} ,它们的论域为{-3, -2, -1, 0, 1, 2, 3}。
在 MATLAB的命令窗口输入命令Fuzzy,进入模糊逻辑编辑窗口。
取输入量E、EC的隶属函数为高斯型(gaussmf),输出U的隶属函数为三角形(trimf),如下图所示。
图5 输入模糊变量E的隶属度函数
图6 输入模糊变量EC的隶属度函数
图7 输出模糊变量U的隶属度函数
2.2 模糊控制规则与决策方法的确立。
根据隶属函数和控制经验设计的控制规则如表1所示。
以 if ⋯then的形式在Rule Editor窗口输入这49条规则,这样就完成了控制规则的编辑。
表1 模糊控制器规则表 E U
NB NM NS ZO PS PM PB NB NB NB NM NM NM NS NS NM NB NM NM NS NS ZO PS NS NM NM NS NS ZO PS PM ZO NM NM NS ZO PS PM PM
PS NM NS ZO PS PS PM PM
PM NS ZO PS PS PM PM PM
EC PB PS PS PM PM PM PB PB
在本控制器中,模糊决策采用Mamdani 型推理算法,逆模糊用重心平均法(centroid)。
这样就利用模糊逻辑工具箱建立了一个FIS 型文件,取文件名为f4.fis ,并将模糊控制器导入工作空间,这样就完成了FIS 型文件同SIMULINK 的连接,为下一步的系统仿真打下了基础。
3 模糊控制系统的SIMULINK 仿真
在 SIMULINK 的菜单中,选择Fuzzy Logic Toolbox 中的Fuzzy Logic Controller 模块,键入f4,在这基础之上,加上量化因子Ke 、Kec 和Ku 。
这样,模糊控制器便建立起来了,再加上被控系统的模型和相关模块,就构成了如图8所示的模糊控制系统。
图8 模糊控制系统的SIMULINK 仿真
其中,输入阶跃信号幅值为30,起始时间t=1s ,Ke=0.32,采样周期T=0.5s ,Kec=0.03,采样周期T=0.5s ,限幅器Fe 和Fec 输出范围为[-3,3]。
Ku=50。
被控对象传递函数为,
0.51()101
s G s e s −=+。
该系统的输出阶跃响应如图9。
图9 模糊控制系统的阶跃响应
该控制系统上升时间T r=4.5s,调节时间T s=3.5s,超调量σ%=8.2%,稳态误差6.7%。
模糊控制器的输出如图10.
图10 模糊控制器的输出曲线
模糊控制器的最大输出130,最小输出为-3。
4 PID控制器与模糊控制器的比较。
与PID控制器相比,模糊控制器的调节时间较短,超调量较小,控制器输出更加平稳,幅度更小,但稳态误差较大。
这次仿真结果与理想的模糊控制器的仿真效果差距较大,可能是该系统的信号采样时间T=0.5s较大造成的。