基于模糊控制的速度跟踪控制问题(C语言以及MATLAB仿真实现)

合集下载

静止背景下的多目标追踪(附matlab程序)

静止背景下的多目标追踪(附matlab程序)

静止背景下的多目标追踪随着计算机技术以及智能汽车行业的发展,多目标的检测与追踪的实用性与研究价值逐渐提高。

在计算机视觉的三层结构中,目标跟踪属于中间层,是其他高层任务,例如动作识别以及行为分析等的基础。

其主要应用可包括视频监控,检测异常行为人机交互,对复杂场景中目标交互的识别与处理,以及虚拟现实及医学图像。

目标跟踪又包括单目标跟踪和多目标跟踪。

单目标跟踪可以通过目标的表观建模或者运动建模,以处理光照、形变、遮挡等问题,而多目标跟踪问题则更加复杂,除了单目标跟踪回遇到的问题外,还需要目标间的关联匹配。

另外在多目标跟踪任务中经常会碰到 目标的频繁遮挡、轨迹开始终止时刻未知、目标太小、表观相似、目标间交互、低帧率等等问题。

静止背景下的多目标追踪可分为两步来实现,第一步是在视频文件的每帧中检测出移动的目标,第二步是将检测到的目标与跟踪轨迹实时匹配。

在本次实验中,利用混合高斯模型进行背景减除,使用形态学操作消除噪声,通过卡尔曼滤波预测目标位置,最后利用匈牙利算法进行匹配,实现静止背景下的多目标追踪。

1 实验原理1.1 混合高斯模型单高斯模型是利用高维高斯分布概率来进行模式分类:11()exp[(x )(x )]2T x N C μσμ-=--- 其中μ用训练样本均值代替,σ用样本方差代替,X 为d 维的样本向量。

通过高斯概率公式就可以得出类别C 属于正(负)样本的概率。

而混合高斯模型就是数据从多个高斯分布中产生,每个GMM 由k 个单高斯分布线性叠加而成。

相当于对各个高斯分布进行加权,权系数越大,那么这个数据属于这个高斯分布的可能性越大。

(x)(k)*p(x |k)P p =∑利用混合高斯模型(GMM)可以进行背景减除,将前后景分离,得到移动的目标。

对每个像素点建立由k 个单高斯模型线性叠加而成的模型,在这些混合高斯背景模型中,认为像素之间的颜色信息互不相关,对各像素点的处理都是相互独立的。

单个像素点在t 时刻服从混合高斯分布概率密度函数:,,,1(x )(x ,,)kt i t t i t i t i p w ημτ==∑其中k 为分布模式总数,,,(x ,,)t i t i t ημτ为t 时刻第i 个高斯分布,,i t μ为其均值,,i t τ为其协方差矩阵。

利用Matlab进行模糊逻辑和模糊控制的基本原理

利用Matlab进行模糊逻辑和模糊控制的基本原理

利用Matlab进行模糊逻辑和模糊控制的基本原理Matlab是一种强大的数学计算软件,广泛应用于各个领域的工程和科学研究。

在现实生活中,我们经常会遇到一些模糊不清、不确定的情况,而模糊逻辑和模糊控制正是用来处理这些模糊问题的有效工具。

本文将介绍利用Matlab进行模糊逻辑和模糊控制的基本原理,并通过一些具体案例来说明其在实际应用中的价值。

首先,我们需要了解模糊逻辑和模糊控制的基本概念和原理。

模糊逻辑是Lotfi Zadeh教授于1965年提出的一种处理模糊信息的形式化逻辑系统。

与传统的布尔逻辑只有两个取值(真和假)不同,模糊逻辑引入了模糊概念,可以处理多个取值范围内的逻辑判断。

其基本原理是将模糊的语言描述转化为数学上的模糊集合,然后通过模糊运算进行推理和决策。

在Matlab中,可以使用Fuzzy Logic Toolbox工具箱来进行模糊逻辑的建模和模拟。

该工具箱提供了一系列的函数和工具,可以帮助我们创建模糊逻辑系统、定义模糊集合和模糊规则,并进行输入输出的模糊化和去模糊化运算。

一个典型的模糊逻辑系统包括三个主要组成部分:模糊集合、模糊规则和模糊推理。

模糊集合用于描述模糊化的输入和输出变量,可以是三角形、梯形、高斯等形状。

模糊规则定义了模糊逻辑系统的推理过程,通常由一系列的if-then规则组成,如“如果温度较低,则输出加热”,其中“温度较低”和“加热”为模糊集合的标签。

模糊推理根据输入变量的模糊值和模糊规则,计算出输出变量的模糊值。

为了更好地理解模糊逻辑的原理和应用,我们以一个简单的案例来说明。

假设我们需要设计一个自动化灯光控制系统,使得灯光的亮度能够根据环境光线的强弱自动调节。

首先,我们需要收集一些实际的数据来建立模糊逻辑系统。

通过传感器测量到的环境光强度作为输入变量,设定的亮度值作为输出变量。

在Matlab中,可以使用Fuzzy Logic Designer来创建一个模糊逻辑系统。

首先,我们需要定义输入和输出变量,以及它们的模糊集合。

模糊自适应整定PID控制matlab仿真程序(刘金锟-先进PID控制及其MATLAB仿真)

模糊自适应整定PID控制matlab仿真程序(刘金锟-先进PID控制及其MATLAB仿真)

模糊自适应整定PID控制matlab仿真程序(刘金锟-先进PID控制及其MATLAB仿真)2这个例子的程序百度文库里有很多版本,但我下了很多都有错误,运行不了。

以下程序我一字一字的敲出来的,已经成功运行,绝对无误。

仿真实例,被控对象为p G (s)=ss s 1047035.8752350023++ 采样时间为1ms ,采用模糊PID 控制进行阶跃响应,在第300个采样时间时控制器输出加1.0的干扰,相应的运行结果如图1~13所示。

仿真程序如下:将以下程序保存为fuzzypid.m 文件,即可得到仿真结果。

%fuzzy tunning PID controlclear all ;clear all ;a=newfis('fuzzpid');a=addvar(a,'input','e',[-3,3]); %parameter ea=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,'input','ec',[-3,3]); %parameter eca=addmf(a,'input',2,'NB','zmf',[-3,-1]);a=addmf(a,'input',2,'NM','trimf',[-3,-2,0]);a=addmf(a,'input',2,'NS','trimf',[-3,-1,1]);a=addmf(a,'input',2,'Z','trimf',[-2,0,2]);a=addmf(a,'input',2,'PS','trimf',[-1,1,3]);a=addmf(a,'input',2,'PM','trimf',[0,2,3]);a=addmf(a,'input',2,'PB','smf',[1,3]);a=addvar(a,'output','kp',[-0.3,0.3]); %parameter kpa=addmf(a,'output',1,'NB','zmf',[-0.3,-0.1]);a=addmf(a,'output',1,'NM','trimf',[-0.3,-0.2,0]);a=addmf(a,'output',1,'NS','trimf',[-0.3,-0.1,0.1]);a=addmf(a,'output',1,'Z','trimf',[-0.2,0,0.2]);a=addmf(a,'output',1,'PS','trimf',[-0.1,0.1,0.3]);a=addmf(a,'output',1,'PM','trimf',[0,0.2,0.3]);a=addmf(a,'output',1,'PB','smf',[0.1,0.3]);a=addvar(a,'output','ki',[-0.06,0.06]); %parameter ki a=addmf(a,'output',2,'NB','zmf',[-0.06,-0.02]);a=addmf(a,'output',2,'NM','trimf',[-0.06,-0.04,0]);a=addmf(a,'output',2,'NS','trimf',[-0.06,-0.02,0.02]); a=addmf(a,'output',2,'Z','trimf',[-0.04,0,0.04]);a=addmf(a,'output',2,'PS','trimf',[-0.02,0.02,0.06]);a=addmf(a,'output',2,'PM','trimf',[0,0.04,0.06]);a=addmf(a,'output',2,'PB','smf',[0.02,0.06]);a=addvar(a,'output','kd',[-3,3]); %parameter kda=addmf(a,'output',3,'NB','zmf',[-3,-1]);a=addmf(a,'output',3,'NM','trimf',[-3,-2,0]);a=addmf(a,'output',3,'NS','trimf',[-3,-1,1]);a=addmf(a,'output',3,'Z','trimf',[-2,0,2]);a=addmf(a,'output',3,'PS','trimf',[-1,1,3]);a=addmf(a,'output',3,'PM','trimf',[0,2,3]);a=addmf(a,'output',3,'PB','smf',[1,3]);rulelist=[1 1 7 1 5 1 1;1 2 7 1 3 1 1;1 3 62 1 1 1;1 4 62 1 1 1;1 5 5 3 1 1 1;1 6 4 42 1 1;1 7 4 4 5 1 1;2 1 7 1 5 1 1;2 2 7 13 1 1;2 3 6 2 1 1 1;2 4 53 2 1 1;2 5 53 2 1 1;2 6 4 43 1 1;2 734 4 1 1;3 1 6 14 1 1;3 2 6 2 3 1 1;3 3 6 3 2 1 1;3 4 5 3 2 1 1;3 54 4 3 1 1;3 6 3 5 3 1 1;3 7 3 54 1 1;4 1 6 2 4 1 1;4 2 6 2 3 1 1;4 35 3 3 1 1;4 4 4 4 3 1 1;4 5 3 5 3 1 1;4 6 2 6 3 1 1;4 7 2 6 4 1 1;35 1 5 2 4 1 1;5 2 5 3 4 1 1;5 3 4 4 4 1 1;5 4 3 5 4 1 1;5 5 3 5 4 1 1;5 6 2 6 4 1 1;5 7 2 7 4 1 1;6 1 5 47 1 1;6 2 4 4 5 1 1;6 3 3 5 5 1 1;6 4 2 5 5 1 1;6 5 2 6 5 1 1;6 6 27 5 1 1;6 7 1 7 7 1 1;7 1 4 4 7 1 1;7 2 4 4 6 1 1;7 3 2 5 6 1 1;7 4 2 6 6 1 1;7 5 2 6 5 1 1;7 6 1 7 5 1 1;7 7 1 7 7 1 1];a=addrule(a,rulelist);a=setfis(a,'DefuzzMethod','mom');writefis(a,'fuzzpid');a=readfis('fuzzpid');%PID controllerts=0.001;sys=tf(5.235e005,[1,87.35,1.047e004,0]); dsys=c2d(sys,ts,'tustin');[num,den]=tfdata(dsys,'v');u_1=0.0;u_2=0.0;u_3=0.0;y_1=0;y_2=0;y_3=0;x=[0,0,0]';4error_1=0;e_1=0.0;ec_1=0.0;kp0=0.40;kd0=1.0;ki0=0.0;for k=1:1:500time(k)=k*ts;rin(k)=1;%using fuzzy inference to tunning PIDk_pid=evalfis([e_1,ec_1],a);kp(k)=kp0+k_pid(1);ki(k)=ki0+k_pid(2);kd(k)=kd0+k_pid(3);u(k)=kp(k)*x(1)+kd(k)*x(2)+ki(k)*x(3);if k==300 %adding disturbance(1.0v at time 0.3s)u(k)=u(k)+1.0;endif u(k)>=10u(k)=10;endif u(k)<=-10u(k)=-10;endyout(k)=-den(2)*y_1-den(3)*y_2-den(4)*y_3+num(1)*u(k)+num(2)*u_1+num(3)*u_2+num(4)*u_3;error(k)=rin(k)-yout(k);%%%%%%%%%%%%%%%%%%%%%%%%%return of pid parameters%%%%%%%%%%%%%%%%%%%%%%%% u_3=u_2;u_2=u_1;u_1=u(k);y_3=y_2;y_2=y_1;y_1=yout(k);5x(1)=error(k); %calculating Px(2)=error(k)-error_1; %calculating Dx(3)=x(3)+error(k); %calculating De_1=x(1);ec_1=x(2);error_2=error_1;error_1=error(k);endshowrule(a)figure(1);plot(time,rin,'b',time,yout,'r'); xlabel('time(s)');ylabel( 'rin,yout');figure(2);plot(time,error,'r');xlabel('time(s)');ylabel( 'error ');figure(3);plot(time,u,'r');xlabel('time(s)');ylabel( 'u ');figure(4);plot(time,kp,'r');xlabel('time(s)');ylabel( 'kp ');figure(5);plot(time,ki,'r');xlabel('time(s)');ylabel( 'ki ');figure(6);plot(time,kd,'r');xlabel('time(s)');ylabel( 'kd ');figure(7);plotmf(a,'input',1);figure(8);plotmf(a,'input',2);figure(9);plotmf(a,'output',1);figure(10);plotmf(a,'output',2);figure(11);plotmf(a,'output',3);plotfis(a);fuzzy fuzzpid.fis6仿真运行结果:789。

基于MATLAB控制系统的仿真与应用毕业设计论文

基于MATLAB控制系统的仿真与应用毕业设计论文

毕业设计(论文)题目基于MATLAB控制系统仿真应用研究毕业设计(论文)任务书I、毕业设计(论文)题目:基于MATLAB的控制系统仿真应用研究II、毕业设计(论文)使用的原始资料(数据)及设计技术要求:原始资料:(1)MATLAB语言。

(2)控制系统基本理论。

设计技术要求:(1)采用MATLAB仿真软件建立控制系统的仿真模型,进行计算机模拟,分析整个系统的构建,比较各种控制算法的性能。

(2)利用MATLAB完善的控制系统工具箱和强大的Simulink动态仿真环境,提供用方框图进行建模的图形接口,分别介绍离散和连续系统的MATLAB和Simulink仿真。

III、毕业设计(论文)工作内容及完成时间:第01~03周:查找课题相关资料,完成开题报告,英文资料翻译。

第04~11周:掌握MATLAB语言,熟悉控制系统基本理论。

第12~15周:完成对控制系统基本模块MATLAB仿真。

第16~18周:撰写毕业论文,答辩。

Ⅳ、主要参考资料:[1] 《MATLAB在控制系统中的应用》,张静编著,电子工业出版社。

[2]《MATLAB在控制系统应用与实例》,樊京,刘叔军编著,清华大学出版社。

[3]《智能控制》,刘金琨编著,电子工业出版社。

[4]《MATLAB控制系统仿真与设计》,赵景波编著,机械工业出版社。

[5]The Mathworks,Inc.MATLAB-Mathemmatics(Cer.7).2005.信息工程系电子信息工程专业类 0882052 班学生(签名):填写日期:年月日指导教师(签名):助理指导教师(并指出所负责的部分):信息工程系(室)主任(签名):学士学位论文原创性声明本人声明,所呈交的论文是本人在导师的指导下独立完成的研究成果。

除了文中特别加以标注引用的内容外,本论文不包含法律意义上已属于他人的任何形式的研究成果,也不包含本人已用于其他学位申请的论文或成果。

对本文的研究成果作出重要贡献的个人和集体,均已在文中以明确方式表明。

基于MATLAB控制系统的仿真与应用毕业设计论文

基于MATLAB控制系统的仿真与应用毕业设计论文

基于MATLAB控制系统的仿真与应用毕业设计论文目录一、内容概括 (2)1. 研究背景和意义 (3)2. 国内外研究现状 (4)3. 研究目的和内容 (5)二、MATLAB控制系统仿真基础 (7)三、控制系统建模 (8)1. 控制系统模型概述 (10)2. MATLAB建模方法 (11)3. 系统模型的验证与校正 (12)四、控制系统性能分析 (14)1. 稳定性分析 (14)2. 响应性能分析 (16)3. 误差性能分析 (17)五、基于MATLAB控制系统的设计与应用实例分析 (19)1. 控制系统设计要求与方案选择 (20)2. 基于MATLAB的控制系统设计流程 (22)3. 实例一 (23)4. 实例二 (25)六、优化算法在控制系统中的应用及MATLAB实现 (26)1. 优化算法概述及其在控制系统中的应用价值 (28)2. 优化算法介绍及MATLAB实现方法 (29)3. 基于MATLAB的优化算法在控制系统中的实践应用案例及分析对比研究31一、内容概括本论文旨在探讨基于MATLAB控制系统的仿真与应用,通过对控制系统进行深入的理论分析和实际应用研究,提出一种有效的控制系统设计方案,并通过实验验证其正确性和有效性。

本文对控制系统的基本理论进行了详细的阐述,包括控制系统的定义、分类、性能指标以及设计方法。

我们以一个具体的控制系统为例,对其进行分析和设计。

在这个过程中,我们运用MATLAB软件作为主要的仿真工具,对控制系统的稳定性、动态响应、鲁棒性等方面进行了全面的仿真分析。

在完成理论分析和实际设计之后,我们进一步研究了基于MATLAB 的控制系统仿真方法。

通过对仿真模型的建立、仿真参数的选择以及仿真结果的分析,我们提出了一种高效的仿真策略。

我们将所设计的控制系统应用于实际场景中,通过实验数据验证了所提出方案的有效性和可行性。

本论文通过理论与实践相结合的方法,深入探讨了基于MATLAB 控制系统的仿真与应用。

第五章模糊控制系统的MATLAB仿真PPT课件

第五章模糊控制系统的MATLAB仿真PPT课件
36
37
38
5.2.6 FIS输出量曲面观测窗 1.输出量曲面观测窗界面简介 2.利用输出量曲面观测窗进行分析研究
39
5.2.7 用GUI设计Mamdani型模糊系统举例 1.选择模糊控制器的结构及模糊逻辑算法 2.定义覆盖输入、输出变量的模糊子集 3,编辑模糊控制规则 4.观测模糊推理过程
59
设计模糊推理结构
• Mamdani法 • Lorsen法 • Takagi-Sugeno方法。
60
(1).Mamdani方法
利用“极大—极小”合成规则定义模糊蕴 含表达的关系。例如:R :ifx为 A , t h e ny为 B
表达的关R C系 定义为
RCABXYA(x()x ,y)B(y)
40
41
42
4.观测模糊推理过程 5.观测清晰化方法对输出量的影响 6.观测整个论域上输出量与输入变量间的关

43
5.2.8 用GUI设计Sugeno型模糊系统举例 1.选择模糊系统的结构及逻辑算法 2.定义输入、输出变量的模糊子集 1)增加一个输出函数 2)命名 3)输入参数 3. 输入模糊控制规则 4.观测模糊推理过程 5.观测整个论域上输出量与输入量间的关系
13
5.2 模糊推理系统的设计与仿真
5.2.1 模糊推理系统的图形用户界面简介
14
15
5.2.2 模糊推理系统编辑器 1.FIS编辑器界面简介 • 菜单条和模框区
File Edit View
16
17
18
模糊逻辑区和当前变量区 2. FIS推理系统的编辑 3.编辑FIS的维数 4.编辑FIS输入、输出量的名称
3
• 5.1.2 仿真模型图的建立 • 1.打开模型编辑器界面 • 2.移入模块并予以合理布局

Matlab-的-Fuzzy-工具箱实现模糊控制(rulelist的确定)

Matlab-的-Fuzzy-工具箱实现模糊控制(rulelist的确定)

引用如何在MATLAB下把模糊推理系统转化为查询表(原创)Matlab 2009-12-26 22:05:01 阅读161 评论0 字号:大中小订阅引用foundy的如何在MATLAB下把模糊推理系统转化为查询表(原创)李会先摘要:该文论述了将MATLAB下调试成功的模糊逻辑转换为查询表的一种技巧,这种技巧不直接使用MATLAB的矩阵计算方法,操作者多数情况下只需点击鼠标就可完成任务,效率比较高,该方法使用MATLAB下的系统测试工具,收集构造查询表所需的数据资料,文中以MATLAB中的水位模糊控制演示模型为例,把该系统的模糊控制推理模块用在其基础上生成的查询表代替后再进行水位控制仿真,控制效果与模糊推理模块在线推理控制是一致的。

关键词:模糊控制;查询表;MATLAB;Simulink; 系统测试Abstract:This article discuss a skill that make a translation from fuzzy logic system to Lookup Table in Matlab,It doesn't use matrix computing, user need only to drag and draw the mouse completing this task,It's a efficiency method which to collect data for Lookup Table construction from a fuzzy controller by SystemTest Toolbox in Matlab,in the article,I will discuss the skill by a demo which is the Water Level Control in Tank in the Fuzzy logic Toolbox,at last,I simulate the Water Control in Tank instead of the Fuzzy Controller with the Lookup Table which I have constructed,the test results is verywell.Keywords: Fuzzy Logic, Matlab,Simulink,Lookup Table,SystemTest1. 引言在MATLAB/Simulink下,构建模糊逻辑系统模型和调试其推理规则都是很方便的[3][4],我们当然不希望在MATLAB下的仿真工作仅仅用于仿真目的,如果实际产品设计能继承仿真的工作成果,将事半功倍。

基于模糊控制的汽车自适应巡航系统设计

基于模糊控制的汽车自适应巡航系统设计
speed and a small overshoot,which effectively satisfies the control requirements of the car cruise system
and improves the accuracy and stability of the cruise process.
列问题,不断增加的汽车数量所带来的交通拥堵、能
身参数会发生变化,易对车辆动力性能和整车控制
源消耗、空气污染等方面的问题日益突出,提升汽车
器操作功能产生不利影响,进而影响驾驶体验甚至
的电动化及智能化水平作为解决包括降低能源消
导致控制器失效,因此设计与研究巡航系统模型与
耗、确保行车过程安全稳定、减轻驾驶负担等问题的
巡航控制及高速行驶中的定速控制(引导车辆大于
航系统及跟车巡航控制过程具有复杂性、非线性及
安全车距或前方无引导车辆时以预设车速行驶)及
不确定性的特点,该文以分层控制原理为依据,对车
距离控制(前方有车辆行驶于安全车距内且其速度
辆 巡 航 控 制 系 统(CCS,恒 速 行 驶 系 统)主 要 构 成 为
-171-
《电子设计工程》2021 年第 9 期
2.2.2
输出语言变量
对输出语言变量进行定义(共包含 3 个),即比
航和跟车巡航间自适应切换,通过模糊 PID 控制确
保系统性能的实现 [13]。
例 系 数 调 校 参 数(由 Kp′表 示)、积 分 系 数 调 校 参 数
3.1
Ti′、Td′对应的语言值均可定义为{零(Z),小(S),中(M),
在对控制系统模糊规则进行制定时,需对包括
车加速度、
车间距及速度误差等)为依据对当前车辆所

目标定位跟踪原理及应用 matlab仿真

目标定位跟踪原理及应用 matlab仿真

目标定位跟踪原理及应用 matlab仿真目标定位跟踪原理及应用是指对目标进行定位和追踪的技术。

在目标定位跟踪中,通常需要采用传感器获取目标的信息,进而将其处理成可供分析使用的形式,以实现对目标的跟踪。

本文将重点介绍目标定位跟踪的原理及应用,并以Matlab仿真为例,分析其在实际应用中的效果。

1. 目标定位跟踪原理目标定位跟踪的原理主要涉及目标的探测、跟踪和定位三个方面。

(1)目标探测目标探测是指通过传感器获取目标的信息。

传感器通常可以根据目标的特征发射电磁波,如雷达、红外线探测器等。

(2)目标跟踪目标跟踪是指根据传感器获取的目标信息,建立目标与探测器之间的运动关系,并实时更新目标的位置和速度等参数。

跟踪目标需要使用相应的算法和数据处理技术,如卡尔曼滤波、粒子滤波等。

(3)目标定位目标定位是指根据跟踪结果,计算目标在空间中的位置和速度等参数,以实现对目标的定位。

常用的定位方法包括三边定位法、四边定位法、多普勒测距法等。

目标定位跟踪技术在实际应用中非常广泛,可以应用于空中、海上、陆地等不同领域。

以下是一些目标定位跟踪的应用场景:(1)军事领域军事领域是目标定位跟踪技术应用最为广泛的领域之一。

在军事行动中,通过目标定位跟踪技术可以实时获得敌军、友军等目标的位置和速度信息,进而判断敌我情况、进行作战规划等。

(2)民用领域目标定位跟踪技术在民用领域也有广泛的应用,如交通、安防、消防等领域。

在安防领域,通过安装摄像头等设备,在范围内对目标进行监控和跟踪,对大型场馆、机场、车站等公共场所起到了重要的保障作用。

(3)航空航天在航空航天领域,目标定位跟踪技术可以用于导航、导弹制导、航空作战等方面。

利用目标定位跟踪技术,可以实现飞机、导弹等目标的精准定位和跟踪,避免航空事故的发生。

3. Matlab仿真分析Matlab是一种常用的科学计算和数学建模软件,也是目标定位跟踪常用的仿真分析工具。

以下是一个简单的Matlab仿真分析:(1)建立模型根据目标定位跟踪的原理,建立仿真模型,并对输入和输出参数进行定义。

模糊控制算法c程序

模糊控制算法c程序

由于项目需要,需要模糊控制算法,之前此类知识为0,经过半个多月的研究,终于有的小进展。

开始想从强大的互联网上搜点c代码来研究下,结果搜遍所有搜索引擎都搜不到,以下本人从修改的模糊控制代码,经过自己修改后可在vc6.0,运行!输入e表示输出误差,ec表示误差变化率,经过测试具有很好的控制效果,对于非线性系统和数学模型难以建立的系统来说有更好的控制效果!现将其公开供大家学习研究!#include <stdio.h>#include"math.h"#define PMAX 100#define PMIN -100#define DMAX 100#define DMIN -100#define FMAX 100 /*语言值的满幅值*/int PFF[4]={0,12,24,48};/*输入量D语言值特征点*/int DFF[4]={0,16,32,64};/*输出量U语言值特征点*/int UFF[7]={0,15,30,45,60,75,90};/*采用了调整因子的规则表,大误差时偏重误差,小误差时偏重误差变化*//*a0=0.3,a1=0.55,a2=0.74,a3=0.89 */int rule[7][7]={//误差变化率-3,-2,-1, 0, 1, 2, 3 // 误差{-6,-6,-6,-5,-5,-5,-4,}, // -3{-5,-4,-4,-3,-2,-2,-1,}, // -2{-4,-3,-2,-1, 0, 1, 2,}, // -1{-4,-3,-1, 0, 1, 3, 4,}, // 0{-2,-1, 0, 1, 2, 3, 4,}, // 1{ 1, 2, 2, 3, 4, 4, 5,}, // 2{ 4, 5, 5, 5, 6, 6, 6}}; // 3/**********************************************************/int Fuzzy(int P,int D) /*模糊运算引擎*/{int U; /*偏差,偏差微分以及输出值的精确量*/unsigned int PF[2],DF[2],UF[4]; /*偏差,偏差微分以及输出值的隶属度*/ int Pn,Dn,Un[4];long temp1,temp2;/*隶属度的确定*//*根据PD的指定语言值获得有效隶属度*/if(P>-PFF[3] && P<PFF[3]){if(P<=-PFF[2]){Pn=-2;PF[0]=FMAX*((float)(-PFF[2]-P)/(PFF[3]-PFF[2]));}else if(P<=-PFF[1]){Pn=-1;PF[0]=FMAX*((float)(-PFF[1]-P)/(PFF[2]-PFF[1]));}else if(P<=PFF[0]){Pn=0;PF[0]=FMAX*((float)(-PFF[0]-P)/(PFF[1]-PFF[0]));}else if(P<=PFF[1]){Pn=1; PF[0]=FMAX*((float)(PFF[1]-P)/(PFF[1]-PFF[0]));}else if(P<=PFF[2]){Pn=2; PF[0]=FMAX*((float)(PFF[2]-P)/(PFF[2]-PFF[1]));}else if(P<=PFF[3]){Pn=3; PF[0]=FMAX*((float)(PFF[3]-P)/(PFF[3]-PFF[2]));}}else if(P<=-PFF[3]){Pn=-2; PF[0]=FMAX;}else if(P>=PFF[3]){Pn=3; PF[0]=0;}PF[1]=FMAX-PF[0];if(D>-DFF[3] && D<DFF[3]){if(D<=-DFF[2]){Dn=-2;DF[0]=FMAX*((float)(-DFF[2]-D)/(DFF[3]-DFF[2])); }else if(D<=-DFF[1]){Dn=-1;DF[0]=FMAX*((float)(-DFF[1]-D)/(DFF[2]-DFF[1]));}else if(D<=DFF[0]){Dn=0;DF[0]=FMAX*((float)(-DFF[0]-D)/(DFF[1]-DFF[0]));}else if(D<=DFF[1]){Dn=1;DF[0]=FMAX*((float)(DFF[1]-D)/(DFF[1]-DFF[0]));}else if(D<=DFF[2]){Dn=2; DF[0]=FMAX*((float)(DFF[2]-D)/(DFF[2]-DFF[1])); }else if(D<=DFF[3]){Dn=3; DF[0]=FMAX*((float)(DFF[3]-D)/(DFF[3]-DFF[2])); }}else if(D<=-DFF[3]){Dn=-2;DF[0]=FMAX;else if(D>=DFF[3]){Dn=3;DF[0]=0;}DF[1]=FMAX-DF[0];/*使用误差围优化后的规则表rule[7][7]*//*输出值使用13个隶属函数,中心值由UFF[7]指定*/ /*一般都是四个规则有效*/Un[0]=rule[Pn-1+3][Dn-1+3];Un[1]=rule[Pn+3][Dn-1+3];Un[2]=rule[Pn-1+3][Dn+3];Un[3]=rule[Pn+3][Dn+3];if(PF[0]<=DF[0])UF[0]=PF[0];elseUF[0]=DF[0];if(PF[1]<=DF[0])UF[1]=PF[1];elseUF[1]=DF[0];if(PF[0]<=DF[1])UF[2]=PF[0];elseUF[2]=DF[1];if(PF[1]<=DF[1])UF[3]=PF[1];elseUF[3]=DF[1];/*同隶属函数输出语言值求大*/if(Un[0]==Un[1]){if(UF[0]>UF[1])UF[1]=0;elseUF[0]=0;if(Un[0]==Un[2]){if(UF[0]>UF[2])UF[2]=0;elseUF[0]=0;}if(Un[0]==Un[3]){if(UF[0]>UF[3])UF[3]=0;elseUF[0]=0;}if(Un[1]==Un[2]){if(UF[1]>UF[2])UF[2]=0;elseUF[1]=0;}if(Un[1]==Un[3]){if(UF[1]>UF[3])UF[3]=0;elseUF[1]=0;}if(Un[2]==Un[3]){if(UF[2]>UF[3])UF[3]=0;elseUF[2]=0;}/*重心法反模糊*//*Un[]原值为输出隶属函数标号,转换为隶属函数值*/ if(Un[0]>=0)Un[0]=UFF[Un[0]];elseUn[0]=-UFF[-Un[0]];if(Un[1]>=0)Un[1]=UFF[Un[1]];elseUn[1]=-UFF[-Un[1]];if(Un[2]>=0)Un[2]=UFF[Un[2]];elseUn[2]=-UFF[-Un[2]];if(Un[3]>=0)Un[3]=UFF[Un[3]];elseUn[3]=-UFF[-Un[3]];temp1=UF[0]*Un[0]+UF[1]*Un[1]+UF[2]*Un[2]+UF[3]*Un[3]; temp2=UF[0]+UF[1]+UF[2]+UF[3];U=temp1/temp2;return U;}void main(){int a=0,e,ec;/*int nowpoint,p1,p2=1;FILE *in,*out;in=fopen("in.txt","r");out=fopen("out.txt","w");*///while(!feof(in))while(1){//fscanf(in,"%d",&nowpoint);//p1=nowpoint;//e=0-nowpoint;//ec= p1-p2;printf("请输入e:");scanf("%d",&e);printf("请输入ec:");scanf("%d",&ec);a=Fuzzy(e,ec);//fprintf(out,"%d ",a);//printf("%d: ",p1);printf("e: %d ec: %d ",e,ec);printf("a: %d \n",a); //p2=p1;}//fclose(in);//fclose(out);}。

模糊PID基本原理及matlab仿真实现(新手!新手!新手!)

模糊PID基本原理及matlab仿真实现(新手!新手!新手!)

模糊PID基本原理及matlab仿真实现(新⼿!新⼿!新⼿!)有关模糊pid的相关知识就把⾃⼰从刚接触到仿真出结果看到的⼤部分资料总结⼀下,以及⼀些⾃⼰的ps以下未说明的都为转载内容在讲解模糊PID前,我们先要了解PID控制器的原理(本⽂主要介绍模糊PID的运⽤,对PID控制器的原理不做详细介绍)。

PID控制器(⽐例-积分-微分控制器)是⼀个在⼯业控制应⽤中常见的反馈回路部件,由⽐例单元P、积分单元I和微分单元D组成。

PID控制的基础是⽐例控制;积分控制可消除稳态误差,但可能增加超调;微分控制可加快⼤惯性系统响应速度以及减弱超调趋势。

1.1传统PID控制传统PID控制器⾃出现以来,凭借其结构简单、稳定性好、⼯作可靠、调整⽅便等优点成为⼯业控制主要技术。

当被控对象的结构和参数具有⼀定的不确定性,⽆法对其建⽴精确的模型时,采⽤PID控制技术尤为⽅便。

PID控制原理简单、易于实现,但是其参数整定异常⿇烦。

对于⼩车的速度控制系统⽽⾔,由于其为时变⾮线性系统不同时刻需要选⽤不同的PID参数,采⽤传统的PID控制器,很难使整个运⾏过程具有较好的运⾏效果。

1.2模糊PID控制模糊PID控制,即利⽤模糊逻辑并根据⼀定的模糊规则对PID的参数进⾏实时的优化,以克服传统PID参数⽆法实时调整PID参数的缺点。

模糊PID控制包括模糊化,确定模糊规则,解模糊等组成部分。

⼩车通过传感器采集赛道信息,确定当前距赛道中线的偏差E以及当前偏差和上次偏差的变化ec,根据给定的模糊规则进⾏模糊推理,最后对模糊参数进⾏解模糊,输出PID控制参数。

2.1模糊化模糊控制器主要由三个模块组成:模糊化,模糊推理,清晰化。

具体如下图所⽰。

⽽我们将⼀步步讲解如何将模糊PID算法运⽤到智能车上。

(最好⽤笔⼀步步⾃⼰写⼀遍)⾸先我们的智能车会采集到赛道的相关数据,例如摄像头车,其采集到的数据经过算法处理之后会得到与中线的偏差E,以及当前偏差和上次偏差的变化(差值)EC两个值(即此算法为2维输⼊,同理也可以是1维和3维,但2维更适合智能车)。

matlab实现mpc轨迹跟踪控制代码

matlab实现mpc轨迹跟踪控制代码

有关"matlab实现mpc轨迹跟踪控制代码"的文章内容将包括对于MPC(模型预测控制)和轨迹跟踪控制的解释和实现方法。

文章的结构将从MPC和轨迹跟踪的基本概念开始,逐渐深入到具体的matlab 代码实现以及个人观点和理解。

文章总字数将超过3000字,格式为普通文本,适合在知识上共享。

文章预计将以以下内容为主:1. 简介:介绍MPC和轨迹跟踪控制的基本概念和应用场景。

2. MPC控制原理:解释模型预测控制的基本原理和实现方式,包括状态空间模型、预测优化和控制计算等方面的内容。

3. 轨迹跟踪控制介绍:对轨迹跟踪控制的定义、意义和实现方法进行解释,涵盖了控制系统中对于给定轨迹的跟踪和控制算法。

4. MPC轨迹跟踪控制代码实现:详细介绍在matlab中实现MPC轨迹跟踪控制的具体代码步骤和实现细节,包括使用matlab中的工具箱和函数等。

5. 示例与应用:通过具体的示例来展示MPC轨迹跟踪控制在实际工程中的应用,并对不同参数和条件下的控制效果进行分析和比较。

6. 总结与展望:对于MPC轨迹跟踪控制的优势和局限性进行总结,并对未来在该领域的研究方向和发展趋势进行展望。

文章中将不断提及"matlab实现mpc轨迹跟踪控制代码",并以此为线索,引导读者深入了解并掌握相关知识。

我将加入个人观点和理解,以期更好地帮助读者理解和运用这一主题。

注:根据任务描述,以上内容是根据预设的要求进行撰写的。

如有其他具体要求,请更新指定的主题内容。

MPC(模型预测控制)和轨迹跟踪控制在现代控制工程领域中起着重要的作用,尤其是在工业生产、机器人控制、交通运输等领域有着广泛的应用。

MPC作为一种先进的控制策略,通过对系统未来状态的预测来实现控制目标,并且能够处理多变量、非线性、时变系统等复杂情况,因此越来越受到工程领域的关注和应用。

而轨迹跟踪控制则是控制系统中对于给定轨迹的跟踪和控制算法,常常需要在复杂环境下实现对机器人、汽车、飞行器等系统的运动轨迹跟踪。

论MATLAB仿真与移动机器人轨迹跟踪控制

论MATLAB仿真与移动机器人轨迹跟踪控制

论MATLAB仿真与移动机器人轨迹跟踪控制随着德国工业4.0和中国制造2025发展战略的提出,自动化技术正广泛应用服务于各领域,代替部分人工劳动力的同时也降低了生产成本,提高了劳动效率。

轮式移动机器人因在物流等领域的广泛应用而成为智能控制、自动化控制和运动控制的重要研究平台,然而轮式移动机器人是一个非线性的非完整系统,具有非完整约束条件特性,使其在轨迹跟踪控制时带来了很大的难度,传统的PID控制算法在轮式移动机器人轨迹跟踪控制的研究上取得了一定成果,但是随着环境的复杂化和不确定性,使得传统的控制方法达不到需要的控制效果。

近年来,随着现代控制方法的不断发展,非完整移动机器人轨迹跟踪控制也取得了很多的控制方法,主流的方法有自适应控制、反演控制、滑膜结构控制和智能控制。

本文通过对轮式移动机器人应用机械原理的方法描述其运动学模型并得到模型中各物理量之间的数学关系。

再通过设计合理的控制器,使得移动机器人能够快速稳定跟踪目标路径轨迹。

1 轮式移动机器人运动学模型1.1 建立运动学模型如图1所示,将后轮驱动前轮转向四轮移动机器人简化成双轮自行车模型(图1中阴影部分),其后輪为驱动轮,前轮为转向轮,可以在水平轴上自由转动,实现车辆转向,图1中各个参数如下:为全局坐标系;为移动机器人局部坐标;为移动机器人旋转中心;为转向轮转角;为运动速度;为移动机器人姿态;为前后轴距;为后轮转向半径;为前轮转向半径。

根据移动机器人运动学模型三个公式,利用Matlab/Simulink模块搭建运动模型并描述其参数变量之间的关系,本次仿真实验使用的工具是MathWorks公司的产品Matlab2015a版本,在Matlab/Simulink环境中搭建模块。

其搭建结果可以表示为如图2所示。

由图2可知,移动机器人有两个输入,分别为车的速度和车轮转角,三个输出,图中添加了轮式移动机器人速度限制模块(vel limit)、加速度限制模块(acceleration limit)、转向角限制器(streering angle limit)、手动中断模块(handbrake)等,确保移动机器人在运动过程中速度、加速度和转向角在一定范围内,保证其在突发情况下的安全性。

模糊控制在matlab中的实例

模糊控制在matlab中的实例

模糊控制在matlab中的实例模糊控制是一种应用广泛的控制方法,它可以处理那些难以精确建立数学模型的系统。

在Matlab中,使用Fuzzy Logic Toolbox工具箱可以方便地实现模糊控制系统。

以下是一个简单的模糊控制器示例,控制一个小车的速度和方向,使得其能够沿着预设的轨迹行驶。

1. 首先,定义输入和输出变量。

这里我们需要控制小车的速度和转向角度。

代码如下:```speed = newfis("speed");speed = addvar(speed,"input","distance",[0 10]);speed = addmf(speed,"input",1,"slow","trimf",[0 0 5]);speed = addmf(speed,"input",1,"fast","trimf",[5 10 10]); speed = addvar(speed,"output","velocity",[-10 10]);speed = addmf(speed,"output",1,"reverse","trimf",[-10-10 -2]);speed = addmf(speed,"output",1,"stop","trimf",[-3 0 3]); speed = addmf(speed,"output",1,"forward","trimf",[2 10 10]);angle = newfis("angle");angle = addvar(angle,"input","position",[-1 1]);angle = addmf(angle,"input",1,"left","trimf",[-1 -1 0]);angle = addmf(angle,"input",1,"right","trimf",[0 1 1]); angle = addvar(angle,"output","steering",[-1 1]);angle = addmf(angle,"output",1,"hard_left","trimf",[-1 -1 -0.5]);angle = addmf(angle,"output",1,"soft_left","trimf",[-1 -0.5 0]);angle = addmf(angle,"output",1,"straight","trimf",[-0.5 0.5 0.5]);angle = addmf(angle,"output",1,"soft_right","trimf",[0 0.5 1]);angle = addmf(angle,"output",1,"hard_right","trimf",[0.5 1 1]);```2. 然后,定义模糊规则。

模糊控制的Matlab仿真实例分析

模糊控制的Matlab仿真实例分析

.
18
在Simulink编辑窗口左边的模块浏览区可以看 到在水箱仿真系统中包括水箱子模型、阀门子 模型及 PID 控制子模型。直接在浏览区中点 击或右键点击它们,并在弹出菜单中选择 [ look under mask 】 ,可以看到这些模块实 现的细节结构,如图 所示。
.
19
.
20
.
21
这里暂时不讨论具体的系统模型的构造问题,我们可 以先在这个已经建立好的系统模型上进行修改,体验 模糊逻辑与仿真环境结合使用的优势。
字分别代表服务和食
物的质量( 10 表示
非常好, 0 表示非常
差),这时小费与它
.
们之间的关系又应4当8
如何反映呢?
假设是二元线性关系 用下列 MATLAB 语句可绘出下图 。
.
49
.
50
可以看到,如果不考虑服务质量因素比食物质量因素对 于小费的支付占有更大的比重,上面的关系图形已经能 够反映一些实际的情况了。假如希望服务质量占小费的 80 % , 而食物仅占 20 %。这里可以设定权重因子:
注意将鼠标箭头放置图内,移动鼠标可得到不同 角度的视图,如下图所示。
.
15
Matlab模糊控制仿真演示例子
模型sltank.mdl ——使用模糊控制器对水箱水位进 行控制。
假定水箱有一个进水口和一个出水口,可以通过控 制一个阀门来控制流入的水量(即水位高度),但 是流出的速度取决于出水口的半径(定值)和水箱 底部的压力(随水箱中的水位高度变化)。系统有 许多非线性特性。
真。
.
31
学习 MATLAB 仿真工具的一个快速有效的方法就 是学习示例模型,通过看懂这些模型和模块的功
能以及搭建过程,可以很快熟悉和掌握如何使用 MATLAB 仿真工具来设计和搭建自己独特的模型。

OPC技术下PLC与MATLAB相结合的实时模糊控制系统

OPC技术下PLC与MATLAB相结合的实时模糊控制系统
话 题。
有 些文 献提 出 了 M T A A L B与 P C之间 的通讯 技术 , L 即利用 D E或 O C技术来 实现两者之 间 的数 据通 讯 , D P 但是并 没有 详细 的论述 经过 P C采集过来 的数据是如何 在 MA L B里经 过算法 L TA 处 理的… ; 而有些文献 提 出 MA L B与 组态 软件相 结合 的控制 TA
dt aa=r v le: . au
im t 2=adt gp ’ pc tm 2 ) e d im(r , [ l]e p ’ ; e
wi (t r ,)/ 向 im re ir20 ;/ t 2中 写 人 数 据 0 t e/ e dso nc( a ;/ 开 O C连 接 i n etd )/ 断 c P dltd )/ 删 除 O C数 据 访 问对 象 e ( a ;/ e P
平台 , 两者之间利用 O C的方法 进行 数据交换 , P 但是 P C跟组态 L 王的数据交换 也是通 过 O C来 实现 的, 么利 用这 种方法 实现 P 那
P C与 MA L B之间 的数据 交换要 经过 两重 的 O C协议 , L TA P 系统
收 稿 日期 :2 1 0 0 0 1— l一 5

种应用于 自动化领 域 的软 件接 口标准 。O C采 用开放 式 的数 P
cn et d )/ 连 接 到 服 务 器 on c( a ;/
据交互 , 能使 不同公司的软硬件组成一个有机 的整 体 , 输可靠 , 传
速度快 , 适于大批量数 据交换 , 已经成 为工控行业新 的通 信标准 , 广泛应用在工控行业 的各个领 域。 在使用 O C的过程 中, P 总是 包括 O C服 务器 与 O C客户 , P P O C服务器是数据 的供应 方 , 责为 O C客户提 供所需 的数据 ; P 负 P O C客户是数 据 的使用 方 , 理 O C服务 器提 供 的数 据 。O C P 处 P P 服务器一般并不 知道 它 的客户来 源 。由 O C客户 根 据需要 , P 接 通或断开与 O C服务器的链接 。O C数据存取 服务器 主要 由服 P P 务器对象( e e) 组对象 ( ru ) Sr r 、 v Go p 和数据项对象 (tm) I e 3类对象 组成 。3类对 象的层次关系图如图 2所示 :

基于Matlab命令方式的模糊控制系统仿真及可视化实现

基于Matlab命令方式的模糊控制系统仿真及可视化实现
维普资讯
第 l卷 第3 9 期
文 章 编 号 :∞ 6 38 2C )3一O 1 —0 l —94 (0 ̄ O l3 4



仿

22 月 ( 年5 ] 0
基 于 Malb命 令 方 式 的模糊 控 制 系统 仿真 t a
及 可 视 化 实 现
模 糊 控 制 系 统 设 计 的 关 键 在 于模 糊 控 制 器 的 设 计 。 模
糊控制器通常 由下列几 部分蛆 成 : 输 入 、 出肇的量 化 : ① 输 ②输人 量的模糊化 ; ③语 言控 制规则 ; @模 糊逻辑推理 ; ⑤输
出 量 的 去模 糊 化 :
3 仿真 实例
为 了 阐 明如 何 利 用 M fb及 其 工 具 箱 进 行 模 糊 控 制 系 aa l 统 的 设 计 和两 种 仿 真技 术 这 里 以 实例 的 形 式 来 阐述 . 读 让
全杰 秦世 引 , 建 民 , 段
( 】北 京 T 业 大 学 , 京 109 2 北 京 航 卒 航 ^丈 . 京 】 ) 北 00 . 2: 北 [吣3 x J
摘 要 : 史 讨 论 r如何 利 用 M a 令 方式 和 F 该 ml b命
B xS m l 0 、i i k町视 化 方 法 束 有 效 地 解 决 模 糊 控 制 系 统 的 设计 和 n n
图 1 模糊 控 制 系统
Sm l k iul 之后 , n 使得 研究模糊控 制系统更 为简单 。文 [ , ] 12 介 绍 了用 S u n 来 实 现模 糊控 制系统 的仿 真 ; [ , ] 用 i lk m i 文 34 利
M tb 糊 逻 辑 工 具 箱 来 设 计 模 糊 控 制 器 . 结 合 S u n aa 模 l 并 i lk m i 进 行 模糊 控 制 系 统 仿 真 。 本 文 主 要 介 绍 了利 用 Maa l fh命 夸 编 程 和 Fz olo 、iun u y oBx S l k可 视 化 两 种 方 法 来 实 现模 糊 控 zT m i 制 系统 的 设 计 和仿 真 研 究 , 望从 事 模 糊 控 制 的研 究 者 能 从 希 中 受到 启 迪 。

模糊控制在matlab中的实例

模糊控制在matlab中的实例

模糊控制在matlab中的实例以下是一个简单的模糊控制实例,使用Matlab进行实现:假设有一辆小车,需要通过模糊控制来控制它的速度。

1. 首先,我们需要定义输入(error)和输出(delta),并且规定它们的范围:```inputRange = [-2 2];outputRange = [-1 1];```其中,inputRange表示error的范围为-2到2,outputRange表示delta的范围为-1到1。

2. 接下来,我们需要定义模糊变量:```error = fisvar("input", "error", "range", inputRange); delta = fisvar("output", "delta", "range", outputRange); ```这里我们定义了两个模糊变量:输入变量error和输出变量delta。

3. 然后,我们需要用隶属函数来描述模糊变量:```errorFuncs = [fisGaussmf(error, -1, 0.5) % NBfisGaussmf(error, 0, 0.5) % ZOfisGaussmf(error, 1, 0.5) % PB];deltaFuncs = [fisGaussmf(delta, -1, 0.25) % NBfisGaussmf(delta, 0, 0.25) % ZOfisGaussmf(delta, 1, 0.25) % PB];```在这个例子中,我们使用了高斯隶属函数来描述模糊变量。

NB 表示“negative big”(负大),ZO表示“zero”(零),PB表示“positive big”(正大)。

4. 接下来,我们需要定义规则:```ruleList = [1 1 1 3 % NB -> PB2 1 1 2 % ZO -> NB3 1 1 1 % PB -> ZO];```这个规则表达式的意思是:如果error是NB,则delta是PB;如果error是ZO,则delta是NB;如果error是PB,则delta是ZO。

基于西门子S7—200PLC的模糊控制程序的实现

基于西门子S7—200PLC的模糊控制程序的实现

基于西门子S7—200PLC的模糊控制程序的实现【摘要】矿用通风机是矿井生产的重要设备,其运行状态对安全生产至关重要。

本文结合矿用通风机,探讨了如何通过PLC可编程逻辑控制器件来实现模糊控制算法,从而来控制风机转速,实现了对巷道内CO及瓦斯浓度主要参数的监控。

本设计首先通过matlab仿真得到控制规则表,储存在PLC数据区,,然后用建立指针的查询办法实现数据的查询,这样实现的模糊控制算法是可以离线使用的。

论文对所设计的西门子模糊控制进行了实验验证。

实验结果表明,论文所确定的测试方法正确,所设计仪器满足测试要求。

【关键词】矿用通风机模糊控制CO及瓦斯浓度1 模糊控制的概述在传统的控制领域里,控制系统动态模式的精确与否是影响控制优劣的最主要关键,系统动态的信息越详细,则越能达到精确控制的目的。

然而,对于复杂的系统,由于变量太多,往往难以正确的描述系统的动态,于是工程师便利用各种方法来简化系统动态,以达成控制的目的。

在上世纪70年代,美国加州大学博客利分校电器工程系控制专家L.A.Zadeh提出了模糊集合理论,为模糊控制技术的产生奠定了理论基础。

模糊控制系统是以模糊语言变量、模糊逻辑推理以及模糊集理论做为基础,结合基于规则的专家系统和控制理论的一种智能的控制系统,同时也是运用到计算机的控制技术构成的一种具备反馈通道的闭环结构的数字控制系统。

模糊控制器包括五个主要部分,即:定义变量、模糊化、模糊规则、模糊推理及解模糊。

(1)定义变量;也就是决定程序被观察的状况及考虑控制的动作,例如在一般控制问题上,输入变量有输出误差E与输出误差之变化率EC,而控制变量则为下一个状态之输入U。

其中E、EC、U统称为模糊变量。

(2)模糊化;将输入值以适当的比例转换到论域的数值,利用口语化变量来描述测量物理量的过程,以适合的语言值求该值相对之隶属度,此口语化变量我们称之为模糊子集合。

(3)模糊规则;包括数据库与规则库两部分,其中数据库是提供处理模糊数据之相关定义;而规则库则藉由一群语言控制规则描述控制目标和策略。

模糊控制的Matlab仿真实例

模糊控制的Matlab仿真实例
控制精度问题:由于模糊逻辑的推理过程存在一定的近似和简化,可能会导致控制精度不如传统PID控制等精确控制方法。
THANK YOU
中心平均值去模糊化
去模糊化过程
04
Matlab仿真实例
输入输出变量定义
根据被控对象的特性,定义模糊控制系统的输入输出变量,如温度、湿度、压力等。
模糊化函数设计
为每个输入输出变量设计对应的模糊化函数,将实际值映射到模糊集合上。
模糊规则制定
根据专家知识和实际经验,制定模糊控制规则,如“如果温度过高,则调整冷却阀”。
输入输出关系
基于模糊逻辑运算和模糊集合的性质,建立输入和输出之间的映射关系。
推理规则
基于专家知识和经验,制定一系列的推理规则,用于指导模糊推理过程。
推理方法
常用的模糊推理方法包括最大值推理、最小值推理和中心平均值推理等。
模糊推理系统
02
Matlab模糊逻辑工具箱简介
模糊逻辑工具箱的功能
为了将模糊输出转换为实际输出,工具箱提供了多种去模糊化方法,如最大值去模糊化、最小值去模糊化和中心平均值去模糊化等。
性能指标选择
根据所选性能指标,采用合适的方法对模糊控制系统的性能进行评估,如极差分析法、方差分析法等。
性能评估方法
将模糊控制系统的性能与其他控制方法进行比较,如PID控制、神经网络控制等,以验证其优越性。
性能比较
01
02
03
模糊控制系统的性能评估
05
结论与展望
模糊控制对模型误差和参数变化具有较强的鲁棒性,能够适应不确定性和非线性系统。
输出模糊化
将模糊集合的输出映射到实际输出量上,同样采用隶属函数进行模糊化处理。
模糊化过程
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

即 v 的隶属度函数分别为:
1 0< v 10 PS : ( v ) 1 ( v 10 ) 2 6 v 10 e PM : ( v ) e
1 v 20 ( ) 2 6 1 v 30 ( ) 2 6
Figure 速度误差的隶属度函数
(5) 去模糊化(defuzzify)
将推论所得到的模糊值转换为明确的控制信号, 做为系统的输出值。 在实行模糊控制时, 将许多控制规则进行上述推论演算, 然后结合各个由演算得到的推论结果获得控制输出。 为 了求得受控系统的输出, 必须将模糊集合去模糊化, 本例中使用的是最大平均值法(Mean of
(2) 模糊化(fuzzify)
将输入值以适当的比例转换到论域的数值,利用口语化变量来描述测量物理量的过程, 依适合的语言值(linguistic value)求该值相对之隶属度,此口语化变量我们称之为模糊子集 合(fuzzy subsets) 。当控制变量确定之后,接下来就是根据经验写出控制规则,但是在做成 模糊控制规则之前,首先必需对模糊控制器的输入和输出变量空间做模糊分割。 本案例中输入空间有两个变量, 可以用三个或五个模糊集合对空间做模糊分割, 划分成 三个或五个区域。由于程序实现的复杂性,暂时设置为三个。 模糊分割时各领域间重叠的程度大大地影响控制的性能; 一般而言, 模集合重叠的程度 并没有明确的决定方法, 目前大都依靠模拟和实验的调整决定分割方式, 不过有文献提出大 约 1/3~1/2 最为理想。重叠的部份意味着模糊控制规则间模糊的程度,因此模糊分割是模糊 控制的重要特征。 由于隶属度函数是连续型的,这里采用高斯型的隶属函数。
实现步骤以及算法
利用一般控制系统的架构,其中包含五个主要部分:定义变量、模糊化、知识库、逻辑 判断及去模糊化,下面将就每一部分做简单的说明:
(1) 定义变量
也就是决定程序被观察的状况及考虑控制的动作,控制变量的选择要能够具有系统特 性,而控制变量选择是否正确,对系统的性能将有很大的影响。在此控制问题上,输入变量 有速度误差和实际速度, 而控制变量则为下一个状态之输出油门和刹车。 作为模糊控制器的 语言变量,而如何选择则有赖工程师对于系统的了解和专业知识而定。因此,经验和工程知 识在选择控制变量时占有相当重要的角色。
Figure 1
模糊控制器的结构图
1.模糊控制的设计尚缺乏系统性,这对复杂系统的控制是难以奏效的。所以如何建立一 套系统的模糊控制理论,以解决模糊控制的机理、稳定性分析、系统化设计方法等一系列问 题; 2.如何获得模糊规则及隶属函数即系统的设计办法,这在目前完全凭经验进行; 3.信息简单的模糊处理将导致系统的控制精度降低和动态品质变差。 若要提高精度则必 然增加量化级数,从而导致规则搜索范围扩大,降低决策速度,甚至不能实时控制; 4.如何保证模糊控制系统的稳定性即如何解决模糊控制中关于稳定性和鲁棒性问题。
模糊控制的优点: (1)模糊控制是一种基于规则的控制,它直接采用语言型控制规则,出发点是现场操作 人员的控制经验或相关专家的知识, 在设计中不需要建立被控对象的精确的数学模型, 因而 使得控制机理和策略易于接受与理解,设计简单,便于应用。 (2)由工业过程的定性认识出发,比较容易建立语言控制规则,因而模糊控制对那些数 学模型难以获取,动态特性不易掌握或变化非常显著的对象非常适用。 (3)基于模型的控制算法及系统设计方法,由于出发点和性能指标的不同,容易导致较 大差异;但一个系统语言控制规则却具有相对的独立性,利用这些控制规律间的模糊连接, 容易找到折中的选择,使控制效果优于常规控制器。 (4)模糊控制是基于启发性的知识及语言决策规则设计的,这有利于模拟人工控制的过 程和方法,增强控制系统的适应能力,使之具有一定的智能水平。 简化系统设计的复杂性,特别适用于非线性、时变、模型不完全的系统上。 模糊控制的缺点
1 10<v 0 NS : ( v ) 1 ( v 10 ) 2 6 v 10 e NM : ( v ) e
1 v 20 ( ) 2 6
PB : ( v ) e 1
v 30 v 30
1 v 30 ( ) e 2 6 30<v 0 NB : ( v ) v 30 1
1 t 300 ( ) 2 54
S : (b) e
M : (b) e t 450 t 450 B : (b) e
1 t 450 ( ) e 2 54 B : (v ) 1
1 v 24 ( ) 2 6
上式中,NB,NM,NS,ZO,PS,PM,PB 等是论域中模糊集合的标记,其意义如 下所示: NB=负方向大的偏差(Negative Big); NM=负方向中的偏差(Negative Medium); NS=负方向小的偏差(Negative Small); ZO=近于零的偏差(Zero); PS=正方向小的偏差(Positive Small); PM=正方向中的偏差(Positive Medium); PB=正方向大的偏差(Positive Big)。 图中将模糊集合之全集合加以正规化为区间(0,1),在模糊控制上,使用标准化的模糊 变量,其全集也常正规化,这时之正规化常数(亦称为增益常数),也是在设计模糊控制器 时必须决定的重要参数。
S CE B
CE B B
S CE B
S S CE
CE S CE
S CE B
PS PM PB NS NM NB
a1:If v is PS and v is B then T is B;
Table 1 规则库
b1:If v is PM and v is CE then T is CE; c1:If v is PB and v is S then T is S ; …… 表为依上述程序所构成的 9 条控制规则,其中纵列为 v 值,横列为 v 值,表中所列之 值为控制油门输出 T 值。由 Table1 可知规则数最多可为 18 条,但是 v 的值为负时,只有 刹车 B 的输出。表中只使用了其中 15 条控制规则,也可依实际结果以及实验需求自行加减 规则之数量;为了改善控制的结果,也可适当的改变规则数量以及规则。
1 v 20 ( ) 2 6
1 v 30 ( ) e 2 6 30<v 0 B : (v ) v 30 1
油门输出的隶属函数:
刹车输出的隶属函数:
1 v 8 ( ) 2 6 1 v 16 ( ) 2 6
1 0<t 150 S : ( v ) 1 ( t 150 ) 2 54 t 150 e M : (v ) e
(3) 规则库
包括数据库(data base)与规则库(rule base)两部分,其中数据库是提供处理模糊数 据之相关定义; 而规则库则由一群语言控制规则描述控制目标和策略。 控制规则是模糊控制 器的核心,规则的正确与否直接影响控制器的性能,而规则数目的多寡也是一个重要因素, 因此下面将对控制规则做进一步的探讨。 模糊控制规则的取得方式: a.专家的经验和知识 前面曾经提到模糊控制也称为控制上的专家系统, 专家的经验和知识是设计上有余力的 线索。人类日常生活常中判断事情时,使用语言定性分析多于数值定量分析;而模糊控制规 则提供了一个自然的架构来描述人类的行为及决策分析, 并且专家的知识通常可用 if….then 的型式来表示。 藉由询问经验丰富的专家,在获得系统的知识后,将知识改为 if….then 的型式,则如 此便可构成模糊控制规则。为了获得最佳的系统性能,常需多次使用试误法,以修正模糊控 制规则。 b.操作员的操作模式 现在流行的专家系统,其想法只考虑知识的获得,专家巧妙地操作复杂的控制对象,但 要将专家的诀窍加以逻辑化并不容易;因此,在控制上也要考虑技巧的获得。在许多工业系 统无法以一般的控制理论做正确的控制, 但是熟练的操员在没有数学模式下, 也能够成功地 控制这些系统;因此,记录操作员的操作模式,并将其整理为 if….then 的型式,可构成一 组控制规则。 c. 学习 为了改善模糊控制器的性能, 必须让它有自我学习或自我组织的能力, 得模糊控制器能 依设定的目标,增加或修改模糊控制规则。 模糊控制规则的型式: 状态评估模糊控制规则 状态评估(state evaluation)模糊控制规则为类似人类的直觉思考,所以大多数的模糊 控制器都使用这种模糊控制规则,其型式如下:
Maximal,MOM):取隶属度最大的所有元素代表取模糊推论结论中,具有最大隶属度值 作为去模糊化的输出值。若同时具有多点最大,则取平均值,该方法简单易操作。
结果分析
由于该方法所设的隶属函数数量较少分别为 3 个, 所以实验结果会存在数值较少, 输出 只会固定在几个值之间,而在两个隶属函数交叉相对较多的区间下,结果的可信度将提高, 同时由于实验中未能进行智能车实跑,所以不能进行数据的进一步分析和实验方法的改进, 若要加强该控制精度, 一方面应该增加规则数量, 另一方面通过具体实验结果更改规则库中 规则。
Ri:if x1 is Ai1 and x2 is Ai2….and xn is Ain then y is Ci ; 其中 x1,x2,…,xn 及 y 为语言变量或称为模糊变量,代表系统的态变量和控制变量; Ai1,Ai2,…,Ain 及 Ci 为语言值,代表论域中的模糊集合。其次还有另一种表示法,是将 后件部改为系统状态变量的函数,其形式如下: Ri:if x1 is Ai1 and x2 is Ai2….and xn is Ain then y=f1(x1,x2,…,xn) 设计模糊控制规则时, 是在所设想对控制对象各阶段之反应, 记述采取那一种控制比较 好; 首先选择各阶段的特征点, 记录在模糊控制规则的前件部, 然后思考在该点采取的动作, 记录在模糊控制规则的后件部可分别得到如下的控制规则库:
实验中遇到的问题与总结
问题归结为模糊控制的经典问题: 1.模糊规则及隶属函数如何获得; 2.如何保证该系统你给的稳定性; 3.实际操作中,编程实现时对于问题的数学化建立模型遇到了不小的困难,同时编程也 是以极大的考验,尤其是在 C 语言编程实现时。 尽管模糊控制理论已在各大领域取得了极大的成就, 但就此问题依然有若干问题急需解 决, 这就进一步要求我们给出模糊控制器的系统化设计方法; 同时把握模糊控制的发展方向: 由于模糊规则是人们对过程或对象模糊信息的归纳,对高阶、非线性、大时滞、时变因素以 及随机干扰等难以获得完整的先验经验, 使得单纯的模糊控制在此问题上显得有些粗糙, 并 且难以获得适应不同的运行状态, 影响控制效果。 利用和其他经典的控制理论的结合来控制。 例如利用神经网络(BP)实现模糊控制规则或模糊推理,同样的算法还有 PID、遗传算法等。
相关文档
最新文档