基于模糊控制洗衣机控制器LABVIEW实现

本文详细介绍了基于LabVIEW的模糊控制系统设计过程,包括模糊集合、隶属度函数、模糊规则、模糊推理和解模糊等核心概念,并通过洗衣机控制系统为例,展示了如何在LabVIEW中创建和测试模糊系统。在实验中,选择了最大平均值法进行解模糊,但发现可能导致输出阶跃变化,提出了改用面积中心法以改善这一问题。
摘要由CSDN通过智能技术生成

原理介绍

定义

在了解原理之前,为了快速理解以及回顾原理中的术语,作一下概念汇总:

模糊集合(Fuzzy Set)

定义:
在这里插入图片描述
A fuzzy set is a pair (X,m),
where
X is a set
m:X→[0,1] a membership function(隶属度函数).

表示方法:
在这里插入图片描述eg:
在这里插入图片描述
相关计算:
在这里插入图片描述

隶属度函数(Membership Function)

定义:表示x属于X的程度(“程度”一词是模糊控制的核心)

常见的隶属度函数:
三角函数
在这里插入图片描述
高斯函数
在这里插入图片描述
广义钟型函数
在这里插入图片描述
S函数
在这里插入图片描述
梯形函数
在这里插入图片描述
y函数
在这里插入图片描述
L函数
在这里插入图片描述

模糊关系(Fuzzzy relation)

定义:
在这里插入图片描述
where
x1 ~ xn : n-fold non-empty fuzzy sets
R:Fuzzy relation is a fuzzy set on the Cartesian product or direct product(笛卡尔积或直积)

描述模糊集A={x1 ~ xn ,B={y1 ~ yn }又可表示为以下形式:
在这里插入图片描述
相关运算:
在这里插入图片描述

语言变量(Linguistic Variable)

定义:
在这里插入图片描述
为了便于理解用以下实例说明各参数实际意义:
在这里插入图片描述
常用隶属度函数定义:
在这里插入图片描述

模糊规则(Fuzzy Rule)

在这里插入图片描述
其中 x 和 y 是语言变量,A 和 B 分别是论域 X 和 Y 上的语言值。他们之间存在的关系用R表示记作A——>B。

描述这种关系常用的有以下几种不同的方法:
在这里插入图片描述
在这里插入图片描述

模糊推理(Fuzzy Reasoning)

定义:通过模糊逻辑进行推理,也称近似推理也

常用有以下两种定理:
广义前向推理
在这里插入图片描述
广义逆向推理
在这里插入图片描述
其输出结果,也就是前文中的A’以及B’往往为基于A、B但超出A、B范围的变量值

解模糊(Defuzzification)

一些解模糊方法:
在这里插入图片描述
下面以实例说明:
在这里插入图片描述
这里采用的解模糊方法为最大值平均法,当输出隶属度存在多个相同最大时时则取这几个隶属度对应的元素做平均值计算得出最终精确输出结果,这种方法求出的输出值并没有与隶属度建立关系故在现实中常用的方法为重心法,表达式如下
在这里插入图片描述

操作步骤

  • 确定输入输出语言变量
  • 确定输入输出变量对应的隶属度函数
  • 确定模糊规则
  • 进行模糊推理
  • 解模糊输出精确值

接下来以洗衣机控制器为实例运用labview通过对其隶属度、模糊规则及语言变量的定义设定从而确定控制器内部的结构:如表1定义输入变量衣服重量(kg)以及脏污程度(%)输出变量洗涤时间(min),并分别定义其模糊集合脏污={DS(不太脏),DM(脏),DL(很脏)};重量={GS(轻),GM(重量适中),GL(重)};洗涤时间={VS(很短),S(短),M(中等),L(长),VL(很长)},根据输入变量进行模糊合成可得到相应输入元素对应的输出元素如表1,根据表1即可可设计相应的模糊规则并测试验证相应结果。
在这里插入图片描述

LABVIEW软件介绍

创建新的子VI

学习了解LabVIEW的实验环境:双击桌面上的LabVIEW图标即可打开LabVIEW界面。点击“创建项目”,选择“VI”就可以创建一个VI,如图1所示。或者利用快捷键“Ctrl+N”就可以快速创建一个VI。创建VI文件之后,就会显示一个“程序框图”界面和“前面板”界面,如图2所示。
在这里插入图片描述
图1 创建新的VI
在这里插入图片描述
图2 LabVIEW的前面板和程序框图

模糊系统设计

模糊控制器

在LabVIEW2014环境下创建模糊控制器,点击“工具”>“控制和仿真”>“Fuzzy System Designer”,调出模糊系统设计器,如图5所示。图3逻辑控制器示意图创建一个模糊控制系统,通过设计和修改模糊控制器的隶属度函数、规则库、推理规则和去模糊方法等可以获得一个*.fs文件。应用程序可以调用这个文件。
在这里插入图片描述

图3 逻辑控制器示意图

隶属度函数设计

打开模糊系统设计器,显示三个主要的部分: Variables(变量),Rules(规则)和Test System(测试系统)。下面分别对三个部分进行设计编辑。首先是Variables(变量)编辑界面,如图4所示。在这个界面中我们可以添加输入、输出变量的隶属度函数。
在这里插入图片描述图4 模糊系统设计器

在编辑界面中, :添加一个隶属度函数; :修改一个已经添加的隶属度函数; :删除一个已经添加的隶属度函数。
在这里插入图片描述
图5 变量编辑界面

在变量编辑界面中,可以定义输入隶属度函数的名称(Name),范围(Range)和隶属度函数(Shape)。一共有五种隶属度函数:三角形(Triangle)、梯形(Trapezoid)、Z型(Singleton)、S型(Sigmoid)和高斯型(Gaussian)。
我们希望创建一个模糊控制系统,能够根据输入的衣服重量和脏污程度,计算出需要的洗涤时间。为了实现这样的一个模糊系统,就需要在LabVIEW中设置模糊系统设计器。根据对系统输入和输出的模糊化,分别进行定义变量的隶属度函数,脏污程度和衣服重量都是输入变量,而洗涤时间是输出变量。对输入和输出的变量都使用三角形隶属度函数,洗衣机的语言变量脏污程度、衣服重量和洗涤时间分别如图5、图6和图7所示:
在这里插入图片描述
图6脏污程度隶属度函数
在这里插入图片描述
图7衣服重量隶属度函数
在这里插入图片描述
图8 洗涤时间隶属度函数

模糊规则设计

模糊规则用来描述脏污程度和衣服重量的共同作用下,控制器输出的洗涤时间的长短。编辑好输入输出变量的隶属度函数之后,就需要向模糊系统中添加模糊规则。模糊规则的编辑界面如图8所示。编辑的步骤是首先添加1条规则(Rule),然后添加前提条件(Antecedents)并选择输入变量间的“与”、“或”连接关系,之后添加输出变量,最后选择去模糊的方法。
在这里插入图片描述
图9 模糊规则库逻辑器编辑界面

根据模糊控制规则表,通过LabVIEW模糊逻辑器设计模糊规则编辑器,确定“IF A and B THEN u”形式的模糊规则,同时选择模糊推理方法为常用的Mamdani法。选择去模糊化方式,这里提供了5种去模糊化的方法(Defuzzification method):Center of Area,Modified Center of Area,Center of Sums,Center of Maximum和Mean of Maximum。在本实验中,我们选择最大隶属度平均法(Mean of Maximum)作为去模糊化的方法。

测试完成的模糊

系统添加完模糊规则,选择合适的去模糊化方法之后,就完成了一个模糊控制系统的设计。如何检验之前的工作是否正确,就可以通过测试系统(Test System)对模糊系统进行测试。打开测试系统界面,如图10所示,可以改变输入变量,观察输出变量是否与理论值一致,如果不一致,则回顾前面的步骤,仔细检查是否有错误步骤或者遗漏步骤。
在这里插入图片描述
图10 性能测试界面

如图11所示,在测试界面将脏污程度设置为100,将衣服重量设置为10,可以看到洗涤时间为60。这样的结果就和理论计算的一致,可以证明我们设置的模糊系统是正确的。对设置正确的模糊系统进行保存,以备随时调用。通过File>Save as选择保存路径以及保存的文件名称,文件的后缀是.fs。
在这里插入图片描述
图11 设置完成的洗衣机模糊系统进行测试图

设置完模糊系统之后,要设置简单易懂的工作界面,用户只需要看到需要的数据即可。因此,我们利用LabVIEW中的VI来实现对已经保存的模糊系统的调用。

建立调用模糊系统的VI

模糊控制器VI(FL Fuzzy Controller.vi)

通过右击程序框图进入函数选板,依次点击“控制和仿真”>“模糊逻辑”就可以找到FL Fuzzy Contorller.vi,如图12所示。
在这里插入图片描述
图12 模糊逻辑选板

选中图标(FL Fuzzy Controller.vi),拖到程序框图中,其中FL Fuzzy Controller.vi有四种输入输出,如图14所示;各个端子的功能如图13所示。

在这里插入图片描述
图13 输入输出模式

在这里插入图片描述
图14 各个端子的功能

调入控制器VI(FL Load Fuzzy System.vi)

将.fs文件调入应用程序功能模块将指定的PID参数加载到应用程序的模糊控制器中。将 (Load Fuzzy System.vi)拖到程序框图中,它的端子功能如图15所示。

在这里插入图片描述
图15 FL Load Fuzzy System.vi
在LabVIEW2014环境下,利用模糊逻辑控制器设计隶属度函数编辑器、模糊规则库编辑器,实现对系统模糊控制器的设计。同时利用模糊控制器(FuzzyController.vi)将设计好的模糊控制器作为一个图形功能模块同程序其他部分相连,在搭建程序框图时,选择vi的各个端子,右键点击“创建”即可选择创建对应端子的输入控件和显示控件,如图16所示,这样节省时间。在运行时通过加载模糊控制器VI(Load Fuzzy Controller.vi)将*.fs数据文件中的所有模糊控制器参数加载到模糊控制器VI中,以实现所需的控制功能。系统程序框图如图17所示。(注意:因此在本实验中,有两个输入变量,所以FL Fuzzy Controller.vi的输入输出模式应为Multiple-Input)

在这里插入图片描述
图16 创建输入或者输出控件

在这里插入图片描述
图17 模糊控制器仿真程序框图

前面板测试

用搭建的VI调用模糊系统创建好程序框图之后,我们就可以通过LabVIEW的工作界面直接操作模糊系统的输入,获得模糊系统的输出如图所示。首先点击文件夹标签,选择我们要添加的模糊系统;然后在 中填入我们需要的输入变量,最后一步就是点击运行按钮,程序运行就能得到模糊系统的输出结果。

在这里插入图片描述
图18 洗衣机模糊控制系统前面板

结果分析

由于本实验选取的是三角隶属度函数则相应的语言变量对应的隶属度函数为:
在这里插入图片描述
图19 脏污程度隶属度函数 在这里插入图片描述
图20 衣物重量隶属度函数

在这里插入图片描述
图21 洗涤时间隶属度函数

根据以上函数可计算当脏污程度为60%,衣服重量为7kg时,前件关系选择的是与运算即去最小值,则:
在这里插入图片描述

由表可得:
μ总(z) = max{min(0.6, μM(z)), min(0.4, μL(z)), min(0.2, μL(z)), min(0.2, μVL(z))}
= max{min(0.6, μM(z)), min(0.4, μL(z)), min(0.2, μVL(z))}
=0.6

则可列:
在这里插入图片描述

由于选择的解模糊方式为最大平均值法则其输出为:
在这里插入图片描述
实际测试结果:
在这里插入图片描述
图22 测试验证结果

与计算结果相符。

此外,由于采用的解模糊方法为最大平均法,MoM去模糊化方法选择最有效输出语言项的典型值,而不是计算输出语言项隶属度的平均值。所以会致使系统输出图像呈现断裂面见图10,也就是说当满足某个临界条件时输出将会发生较大的阶跃变化,这对实际应用来说是不可行的,将解模糊方法更换为面积中心法,面积中心(CoA)去模糊化方法(也称重心法,CoG),模糊控制器首先计算输出变量范围内换算后隶属函数的面积,则可解决上述问题,图22为修改后输出图像:

在这里插入图片描述
图23 面积中心法输出图像

补充

本文是博主基于课程实验内容改写,如有侵权请联系删除,另诸多不完整之处由于时间问题之后补充,作者水平有限如有问题欢迎指出讨论。

更新:2022.4.7 完善原理部分内容

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值