模糊PID控制方法研究 - 图文

更新时间:2023-10-05 02:33:02 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

烟台大学文经学院毕业论文(设计)

模糊PID控制方法研究 Fuzzy PID Controller

烟台大学文经学院毕业论文(设计)

2 模糊控制器的设计

2.1 模糊控制器的基本原理

2.1.1 模糊控制器的原理

模糊控制(Fuzzy Control)是以模糊集理论、模糊语言变量和模糊逻辑推理为基础的一种智能控制方法,它从行为上模仿人的模糊推理和决策过程。模糊控制是先将操作人员或专家经验编成模糊规则,然后将来自传感器的实时信号通过模糊规则模糊化,将模糊化后的信号作为模糊规则的输入,完成模糊推理,进行解模糊化,最后将解模糊后得到的输出量加到执行器上。图2-1是模糊控制原理框图。

图2-1 模糊控制原理框图

2.1.2 模糊控制器的组成

在整个控制器中,模糊控制器是整个控制系统的核心,所采用的模糊规则、合成推理算法和模糊决策的方法等都是决定整个控制器优劣的因素。其组成如图2-2:

图2-2 模糊控制器的组成框图

烟台大学文经学院毕业论文(设计)

模糊化接口是模糊控制器的输入借口,主要作用是将真实的确定量输入转换为一个模糊矢量。

数据库和规则库共同组成了控制器的知识库,数据库中存放的是所有输入、输出变的的全部模糊子集的隶属度矢量值(即经过论域等级离散化以后对应值的集合)。在规则推理的模糊关系方程求解过程中,向推理机提供数据。规则库是对人类长期经验的总结,将其转化成模糊控制算法,为推理机提供控制规则。

推理是模糊控制器中,根据输入模糊量,模仿人类判断时的模糊概念,运用模糊逻辑和模糊推论法进行推论,而得到模糊控制讯号。此部分是模糊控制器的精髓所在。

解模糊借口是将推论所得到的模糊值转换为明确的控制讯号,做为系统的输入值。

2.2 模糊控制器的设计步骤

通过对模糊控制器原理的研究,得出设计模糊控制器主要包括以下几项内容: (1)确定模糊控制器的输入变量和输出变量(即控制量)。输入变量为误差e以及误差变化ec,输出变量为控制量u。e,ec,u的模糊集均为:{NB,NM,NS,ZO,PS,PM,PB}。e,ec的论域均为:{-3,-2,-1,0,1,2,3}。u的论域为:{-4.5,-3,-1.5,0,1,3,4.5}。

(2)定义输入、输出隶属函数。 (3)建立模糊控制规则。 (4)建立模糊控制表。 (5)模糊推理。 (6)反模糊化。

2.3 模糊控制器的程序仿真

2.3.1 输入量和输出量的程序及仿真

设定e的范围、隶属度函数的程序:

a=addvar(a,'input','e',[-3,3]); 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]); 仿真的图形:

烟台大学文经学院毕业论文(设计)

图2-3 e的隶属度函数

设定ec的范围、隶属度函数的程序:

a=addvar(a,'input','ec',[-3,3]); a=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]); 仿真后的图形:

图2-4 ec的隶属度函数

烟台大学文经学院毕业论文(设计)

设定kp的范围、隶属度函数的程序:

a=addvar(a,'output','kp',[-0.3,0.3]); a=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]); 仿真后的图形:

图2-5 kp的隶属度函数

设定ki的范围、隶属度函数:

a=addvar(a,'output','ki',[-0.06,0.06]); 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]); 仿真后的图形:

本文来源:https://www.bwwdw.com/article/2o8d.html

Top