微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于FPGA的模糊控制器管理蔗糖提取

基于FPGA的模糊控制器管理蔗糖提取

时间:01-27 来源:电子产品世界 点击:

。这样,放大后的输入就被送到控制器中。

  

  图 2:三输入模糊控制器算法开发

  

  图 3:由三个点和两个斜率定义的隶属函数

五步过程

使用赛灵思硬件的模糊控制器的 VHDL 实现过程分为五个步骤:输入模糊化、规则评估、逻辑蕴涵、聚合和去模糊化。

设计模糊逻辑控制器有两种方法,即 Mamdani 和 Sugeno。Mamdani 法难度大而且非常复杂。根据研究显示,Mamdani 方法需要通过对不断变化的函数进行积分来得到二维形状的几何中心。因此,这种方法在计算上不够高效。另一方面,而 Sugeno 设计方法则简单得多。因此,我们采用了 Sugeno 实现方法。

第一步是模糊化,包括将明确值转换为模糊值,然后由隶属函数代表。明确值为特定集;模糊值属于特定范围但不限于特定集内。

三个输入变量分别是重量、高度和辊速。使用三角隶属函数来代表这些输入变量。输入参数“重量”的论域为 500kg-1,000kg,它被模糊化为 11 个三角语言变量 (LV)。输入参数“高度”的论域为 0-180cm,它被模糊化为 7 个三角语言变量(LV)。输入参数“辊速”的论域为 12cm/s-16.6cm/s,它被模糊化为 3 个三角语言变量(LV)。

VHDL 代码方面的模糊化如下所示。我们用三个点和两个斜率定义每个隶属函数,如图 3 所示。使用下列等式计算上斜率(斜率 1)和下斜率(斜率 2):

S1= (y2-y1/Point2-x1) S2= (y2-y1/x2- Point 2)

隶属度 (DOM) 函数 (µ) 是模糊化的下一步。我们的算法将隶属函数分成四个部分,即 Segment-1(µ=0),Segment-2{(Input - point 1)* slope 1},Segment-3{(Input-point 2)* slope 2} 以及 Segment-4 (µ=0)。DOM 值计算如下:

• 如果输入值 < Point 1 (Segment 1),那么 DOM =0。

• 如果输入值 ≤ Point 2,且 ≥ Point 1 (Segment 2),那么 DOM = (Input-Point 1) * Slope 1。

• 如果输入值 ≤ Point 3,且 ≥ Point 1 (Segment 3),那么 DOM = FF- (Input–Point 2) * Slope 2。

• 如果输入值 ≥ Point 3 (Segment 4),那么 DOM = 0。

不同的隶属度

下一步是规则设计,以确定为响应不同隶属度函数所采取的行动。使用简单的 If-Then 条件构成模糊规则,其中每个先行词 (antecedent) 都有结果。MATLAB 中的“Fuzzy Logic Toolbox”提供用以组合多个先行词的不同运算符。我们选择 AND 运算符将三个先行词进行组合,因为它的多个先行词运算最少。对于三输入控制器而言,总共生成 231 条规则。我们为这些规则设计了一个规格表。最小值函数可以找到三个值中的最小值,即计算出三个输入变量中的最小 DOM 值。

我们还发现很多规则的结果是相同的。收集所有具有相同结果的规则,并使用最大值函数计算这些值中的最大数。下一步,我们收集所有具有相同结果的规则。编写不同的最大值函数用以评估整个语言变量(LV)的最大值。

在识别每个规则的输出之后,最后一步是将所有输出整合成单个值,换句话说,就是将这些值转换为确定值。这可通过去模糊化来完成。

去模糊化是模糊系统设计中的最后一步也是重要的一步。去模糊化的值可用来生成一个确定值,它就是倾斜电机的速度。我们所用的 Sugeno 去模糊法属于加权平均法。在该方法中,我们将从聚合中获得的模糊输出与相应的单个值相乘,然后用这些值的总和除以从规则评估中获得的所有模糊输出(也就是聚合后获得的值)的总和。

VIRTEX-6 实现

在实现以上步骤后,我们成功使用三角从属函数和中心去模糊法设计出一种三输入模糊控制器。程序代码已经由作者提供。我们使用 MATLAB 7.11.0.584 版本 (R2020b) 的 Fuzzy Toolbox 仿真三输入模糊控制器,并利用赛灵思的 ISE&reg; Design Suite14.5 并使用 VHDL 在赛灵思 Virtex-6 

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top