EDN China > 技术文章 > 可编程器件 > FPGA > 正文
? 2016博客大赛-不限主题,寻找电子导师,大奖升级??

基于FPGA的三输入模糊控制器实现蔗糖提取

Deepali Vyas?? Lakshmangarh市Mody科技大学;Yogesh Misra?? Mewar大学?? H. R. Kamath?? Malwa理工学院?? 2016年01月28日 ?? 收藏0
食糖是日常生活中广泛使用的重要食品配料成分。全球一半以上的原糖都从甘蔗中榨取获得。印度是仅次于巴西的世界第二大食糖生产国,从事甘蔗种植的农民及其家属数量有 6000 万,产值达 120 亿美元。

由于甘蔗汁的提取是非线性过程,因此我们的团队将模糊逻辑作为改善流量的方法。Mody 科技大学 (MITS) 研究人员的分析表明,利用赛灵思 FPGA 设计和实现的模糊控制器的性能优于传统控制器。如果每天压榨 2,500 吨甘蔗,就需要 26.6 kg/s 的流速。

在具体研究如何实现三输入模糊控制器之前,我们有必要了解食糖制造的基本知识。

如何提取甘蔗

图 1 给出了甘蔗汁提取流程图。甘蔗坯料是指制糖厂把从甘蔗种植者手中收购来的甘蔗进行称重,并卸在院子内。利用起重机将甘蔗放在传送带上。甘蔗传送带不断移动,负责将甘蔗送到食糖生产厂房内。

图 1–甘蔗汁提取流程图
图 1–甘蔗汁提取流程图

甘蔗首先通过两组旋转切刀。切刀将甘蔗切成小段,然后撕蔗机将小段甘蔗切成小块纤维。倾斜传送带将这些大约 1-2cm 的甘蔗块送入Donnelly 榨糖机。压榨机的两三个压辊对甘蔗块进行压榨以提取甘蔗汁。该过程在五六套压榨机中重复进行。剩余的残留物称为甘蔗渣被送到锅炉中作为燃料使用;提取的甘蔗汁需要送去净化,然后送到蒸发器中做成蔗糖。

待加工的甘蔗非常不均匀,在提取汁液过程中会对压榨机效率产生不利影响,可导致压榨机故障、停机和设备堵塞。为了获得最佳的甘蔗汁提取效果,有必要使 Donnelly 榨糖机中的甘蔗水平面保持所需的高度。

我们希望模糊逻辑比传统控制器更好地改变倾斜传送带的速度,以消除甘蔗供给不均的问题并保持所需的甘蔗水平高度。这就是为什么我们尝试将模糊逻辑概念引入制糖领域。

2014 年,我们所做的第一步是设计一款双输入模糊控制器,用来精确监测两个参数的变化:倾斜传送带上的甘蔗重量以及 Donnelly 榨糖机中的甘蔗高度。该控制器的作用是保持榨糖机中的恒定高度,以维持所需的26.6kg/s 的流速。当我们将检测结果与传统控制器的结果进行对比时,可清楚看到双输入模糊控制器的效果要好得多。由于甘蔗在辊子间被压碎,因此我们决定在相同算法中导入第三个参数——辊速——作为实验参数。在加入第三个参数辊速后表明,该变量与其他两个变量同样重要。

因此,2014 年我们将辊速作为第三个参数。我们利用这个附加参数重新设计了算法,并使用 MATLAB? 实现。当新型三输入控制器软件实现方案完成后,下一步是实现算法和使用赛灵思 FPGA 开发整个模糊系统。FPGA 这种可重编程芯片能够对电子电路进行实时的硬件实现。这种芯片非常可靠,性价比高,而且可在制造之前检查电路性能。因此,赛灵思 Virtex?-6 FPGA 成为了完美的硬件实现解决方案。

硬件设计

图 2 给出了三输入模糊控制器的算法。三输入模糊控制器的控制原理与双输入版本相同,只是根据三个输入进行修改,并在 MATLAB 上实现。控制原理为:控制器控制重量、高度和辊速的三个速度等级,即低辊速(RL:12cm/s),中辊速(RM:14.3cm/s)和高辊速(RR:16.6cm/s)。

在 MATLAB 上设计控制器后,下一步是设计用于测量输入参数所需的硬件。称重传感器用于测量倾斜传送带上的甘蔗量。为了测量榨糖机中的甘蔗水平高度,我们在设计中添加了高度传感器。测速发电机用于测量辊子的旋转速度。

称重传感器、高度传感器和测速发电机的输出仅为微伏。为了能在接下来的步骤中使用这些指标,我们必须将输出电压值放大成可测量的电平,也就是从微伏变为毫伏。我们使用 PSpice 上的信号调节系统来进行放大。接下来,我们利用与调节系统串联的模数转换器 (ADC) 将结果转为数字值。这样,放大后的输入就被送到控制器中。

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

图 3:由三个点和两个斜率定义的隶属函数
图 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 实现


上一页12下一页
?? ?? ??


打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮

1.扫描左侧二维码
2.点击右上角的分享按钮
3.选择分享给朋友
?? ??

FPGA?

相关文章

我来评论
美国的游客
美国的游客 ??? (您将以游客身份发表,请登录 | 注册)
?
有问题请反馈