基于Matlab模糊控制器HDL代码的自动生成

更新时间:2023-06-07 05:16:01 阅读量: 实用文档 文档下载

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

基于Matlab模糊控制器HDL代码的自动生成

诸葛俊贵

(上海师范大学精密机电系统与控制工程研究室,上海201418)

以水箱液位控制为例,提出了一种基于Matlab的模糊控制器HDL代码自动生成方法,生成的代码可以

移植到FPGA控制系统上。该方法分4个步骤:(1)利用Matlab的FuzzyLogic工具箱设计模糊控制器。(2)将模糊控制器转换为LookupTable的形式。(3)将制作好的控制器查找表用状态机实现。(4)用HDLCoder将状态机实现的模糊控制器翻译成HDL代码。

关键词

FPGA;Matlab;Simulink;模糊控制器;LookupTable;状态机;HDLCoder

TP273+.4

文献标识码

A

文章编号1007-7820(2012)01-042-04

中图分类号

FuzzyControllerHDLCodeAutomaticallyGeneratedBasedonMatlab

ZHUGEJungui

(LabofPrecisionMechano-electronicsSystemsandControlEngineering,ShanghaiNormalUniversity,Shanghai201418,China)

Abstract

Thisarticle,takingtheWaterLevelControlinaTankasanexample,proposesafuzzycontroller

automaticHDLcodegenerationmethodbasedonMatlab.ThegeneratedcodecanbeportedtotheFPGAcontrolsys-tem.Themethodisdividedintofoursteps:(1)ThefuzzycontrollerisdesignedusingFuzzyLogicToolboxintheMatlab.(2)ThefuzzycontrolleristransformedintotheformofLookupTable.(3)ThecontrollerLookuptableisimplementedwiththestatemachine.(4)ThefuzzycontrollerimplementationwithstatemachinewastranslatedintoHDLcodebyHDLCoder.

Keywords

FPGA;Matlab;Simulink;fuzzycontroller;LookupTable;statemachine;HDLColder

经典和现代控制理论都是建立在被控对象具有精

而实际应用中的许多系统很难确数学模型的基础上,

用精确的数学模型来描述,难以建模,无法确定控制过[1]

程的传递函数和状态方程。而模糊控制在处理这类问题上具有明显优势,尤其对那些控制精度要求不高和需要紧跟环境变化的系统。

FPGA在智能电子产随着FPGA技术的快速发展,

品、智能家居、智能交通等领域得到了广泛应用。但在FPGA上直接实现模糊控制算法比较困难,由于MatlabFuzzyLogic的强大功能,可以借助Matlab的Simulink、

和HDLCoder等工具间接快速地自动生成模糊控制器的HDL代码。

的HDLCoder自动生成HDL代码。

实验按照Demos中的举例WaterLevelControlinaTank来设计模糊控制器的,这是一个标准二维mamdani模糊控制器。其输入变量有两个分量,偏差e和偏差变化率rate=de/dt,一个输出量u。偏差e为给定液位与实际输出液位的偏差,命名为level,偏差变化率就是偏差随时间的变化率,输出量为阀门的开度,这里为valve,该模糊控制器有5条控制规则。

okay和对于输入变量level有3个模糊子集high、

low覆盖在模糊论域[-1,1]上,输入变量rate同样有3个模糊子集negative、none和positive覆盖在模糊论

0.1]域[-0.1,上,输出变量valve则有5个模糊子集close_fast、close_slow、no_change、open_slow和open_fast1]覆盖在模糊论域[-1,上。

1FuzzyLogic工具箱设计模糊控制器

实验目的是要将设计的模糊控制器用Matlab自

动生成HDL代码,以用于FPGA中。由于用FuzzyLogic设计的模糊控制器tank.fis嵌入到Simulink中的FuzzyController元件中不能自动生成HDL代码,故采用LookupTable来设计模糊控制器以便用Matlab内嵌

收稿日期:2011-08-22

作者简介:诸葛俊贵(1986—),男,硕士研究生。研究方向:智能信息处理。

2

2.1

用查找表设计模糊控制器的步骤

制作输入输出变量的隶属度矢量表

首先,从图2看出两输入变量level和rate的隶属

okay和low参数分别为函数都是高斯函数且high、

[0.3-1]、[0.30]和[0.31],none和而negative、

positive的参数分别为[0.03-0.1]、[0.030]和[0.030.1],输出变量valve为三角形函数,它们的参

42

43

图像·编码与软件

表5

Breakp…Row(1)(2)(3)(4)(5)(6)(7)(8)(9)(10)(11)

-1-0.8-0.6-0.4-0.200.20.40.60.81Column

(1)-0.1-0.9

(2)-0.08-0.9

(3)-0.06-0.9

水箱液位模糊控制器查找表(4)-0.04-0.9

(5)-0.02-0.9

(6)0-0.9-0.869

(7)0.02-0.9

(8)0.04-0.9

(9)

ElectronicSci.&Tech./Jan.15,2012

(10)0.08-0.9

(11)0.1

0.06-0.9

-0.8587-0.8323-0.8006-0.8006-0.8323-0.8581-0.8385-0.8385-0.8581-0.8862

-0.801-0.599

-0.6029-0.5884-0.5522-0.5522-0.6414-0.6771-0.6793-0.6847-0.6848-0.76770.00290.25870.30.32070.44860.7510.87930.9

-0.040.2130.28970.3290.44870.72260.85170.9

-0.1417-0.2484-0.2302-0.2229-0.11910.22570.28960.4490.65140.8290.9

-0.0180.07430.15250.34780.65130.8290.9

-0.04830.01030.06770.25880.66940.85170.9

-0.03100.0310.22290.67660.8690.9

-0.268

-0.3809-0.5494-0.5849

-0.0741-0.1973-0.4255-0.5097-0.5138-0.0172-0.1238-0.3759-0.48280.04190.22070.63150.82590.9

-0.5

-0.0269-0.2552-0.3936-0.45180.21530.51880.79110.9

0.04650.51850.79110.9

-0.0962-0.15330.54290.82590.9

0.55260.85180.9

[2]

下面用一组数据的计算说明表5的制定。设偏差level=-1,变化率rate=-0.1,由表1和表2可以查出:

择Simulink-Stateflow-NewChart,在弹出的模型文

件编辑窗中双击Chart。对输入的数据先判断对应列的值,再查找对应行,输出查找结果,其中嵌入了一个eM函数odata=df(idata),在状态流程图的每一步该函数的功能是将输入数据转换都调用了该函数,

16位字长、为有符号、小数部分长为8位的定点数输出。

给Chart模块添加两个数据输入一个数据输出,

row和tab_out,分别命名为col、再从库中找到in和out模块,拖入到模型文件编辑器,其中有两个in,一个

out,将两个in和一个out与Chart模块的两个输入端然后选中所有模块,右键Creat和一个输出端连接,Subsystem,生成子系统。最后将生成的子系统替换掉原来sltank.mdl文件

连好线后注意在子系统的中的FuzzyController模块,

两个输入和输出端都要添加covert数据类型转换模

块,输入端转换器将double转换为sfix16_En8,输出转换器则相反,否则数据类型不匹配运行出错。

将修改后的模型另存为mysltank.mdl并运行,结果表明与原举例中效果一样,而且稳定。

level=-1→high(1)(1)

式(1)表示level=-1时,其模糊语言值为high(1),括

可以查出:号中的值为其隶属度。同理,

rate=-0.1→negative(1)

(2)

由以上两式语言值按表4可得出规则:iflevelishigh

(1)andrateisnegative(1)thenvalveisclose-fast(1)。规则中valve的语言值隶属度是根据规则前件及规则

“取小”蕴涵均采用操作运算得到的。即规则中high和negative的隶属度均为1,两者取小,所以后件valve

隶属度也为1。

然后反模糊化,从图1可以看出输出隶属度函数为对称三角形,故采用中心值平均法进行反模糊化运算较简单。模糊控制器输出的精确值为

-0.9×1

valve==-0.9

1

(1)

4在Matlab中自动生成HDL代码

图1输出隶属函数曲线

在Matlab命令窗口中输入hdlsetup('mysltank'),打开模型文件mysltank.mdl在窗口菜单Simulation中选中ConfigurationParameters,在弹出的窗口中左下角点击HDLCoder,在右边generateHDLfor下拉菜单选择Mysltank/Subsystem1,在右下角点击Apply,再单击RunCompatibilityChecker,检测兼容性通过,最后单击Generate自动生成HDL代码,在Matlab命令窗口中点击运行生成的链接就可打开生成的HDL代码。

(下转第47页)

将valve=-0.9的值填写到控制查找表中level=-1与rate=-0.1的交叉点,依次类推,共需计算出11×11=121个数据,完成水箱液位模糊控制器查找表的制定。

3

44

控制器查找表的状态机实现

在Matlab主界面左下角单击Start按钮,依次选

许丽丽,等:高炉冲渣水余热供暖监控系统设计

图像·编码与软件

信。主界面可以正常启动和运行,可以正常显示现场

信息,能够观察实时曲线,实现对电动调节阀、给水泵和补水泵的控制。通过对系统长达10天的手动操作和自动监控实验对比,系统运行检测结果显示:换热器出口温度能够跟踪上设定值的变化,控制精度<1℃;循环水泵电能节能30%以上。

以报表功能的实现为例,简单说明其实现过程。有两种方法可以实现报表:(1)利用Delphi自带的Rave软件包设计报表。(2)利用Ole技术结合Excel实现报表。利用Rave报表,设计的报表样式较为呆板,而且当报表生成后用户不能根据报表内容进行调整,特别是当数据宽度超过表格宽度时往往造成无法打印的情况。Excel在设计各种复杂表格方面有强大的功能。所以选用Ole+Delphi设计报表系统,把Excel与Delphi的功能结合起来,生成满足用户要求且可以自由修改的报表系统

[3]

4结束语

系统采集信息实时性强、自动化程度高、可靠性

好,应用系统后,冲渣水余热供暖系统可实现远程监控。通过二次仪表和工控机,工人在控制室就能完全获得系统运行的实时情况。从而降低了工作强度,最大程度上避免了故障的发生。由于可编程序控制器、变频器和自动阀门的搭配使用,系统的自动化程度得以提高,当某些参数变化时,系统可自动分析,并按预定程序做出相应的控制,系统的可靠性和自动化运行程度大大提高,节能效果显著。参考文献

[1]闫兆民,J].钢周扬民.高炉渣综合利用现状及发展趋势[

2010,32(5):155-160.铁研究,

图5系统温度变化曲线图

[2]刘尊民.油田联合站自动化监测与信息管理系统的设计

D].青岛:青岛理工大学,2007.与实现[

[3]朱松豪,J].计算刘巧英.Delphi动态报表的设计与实现[

2005(12):87-90.机应用与软件,

[4]王怡,赵菁,文时祥.指针式仪表数据智能采集系统设计

[J].电子科技,2011,24(3):17-21.

[5]朱国峰,J].邢冠宇.基于BlackfinDSD的液晶接口设计[

2010,23(10):57-59.电子科技,

3实验结果分析

系统测试温度变化曲线如图5所示,顺利实现了

对现场流量、温度、压力等模拟信号的采集处理和电动调节阀、变频器的控制。I/O前端模块可以保证4~20mA模拟信号的正确输入输出,也可以实现RS232

和RS485电平的转换,同时还能和组态王进行正常通

檪檪檪檪檪檪檪檪檪檪檪檪檪檪檪檪檪檪檪檪檪檪檪檪檪檪檪檪檪檪檪檪檪檪檪檪檪檪檪檪檪檪檪檪檪檪檪檪檪(上接第44页)

2007(6):108-110.与创新,

[2]席爱民.模糊控制技术[M].西安:西安电子科技大学出

2008.版社,

[3]陈静,J].电周志锋.基于Nios处理的模糊控制器设计[

2006,19(6):8-10.子科技,

[4]王史春.基于模糊控制算法实现信号灯智能研究[J].电

2009,22(11):32-35,56.子科技,

[5]黄明慧,J].电王海娟.数字下变频的一种新型设计方法[

2010,23(11):55-58.子科技,

5结束语

以水箱液位模糊控制为例,详细讨论了利用

Matlab进行模糊控制器的设计和模糊控制器算法HDL代码的自动生成技术。该技术可以用于快速生成模糊控制器算法的HDL代码,生成的代码可以移植到FPGA控制系统。参考文献

[1]石磊,J].机电产品开发陈亚娜.模糊控制器的设计研究[

47

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

Top