采用模糊逻辑设计基于DSP发动机控制器
越来越多企业开始使用变速驱动发动机来减少能源的消耗。这需要通过从微分(PID)控制器转向基于模糊逻辑算法的系统来简化设计,缩短开发时间,并消除复杂的数学公式。
但是,这对发动机提出了新的挑战。当使用传统的积分和微分(PID)控制器来控制无刷直流(BLDC)电机的速度是复杂的,因为它们依赖于复杂的数学模型,并且是计算密集型的。而使用模糊逻辑(FL)的算法,可以消除设计过程对复杂的数学公式的依赖,并且提供一个容易理解的解决方案。与(PID)微分控制器相比,模糊逻辑(FL)发动机控制还有一个优势,那就是开发周期更短。本文讨论了采用德州仪器c28xx定点DSP系列,实现用模糊逻辑算法来控制无刷直流电动机的过程。
无刷直流电机控制模型的发展
在模糊逻辑(FL)发动机构建之前,我们必须首先建立一个模型作为设计的基础。模糊逻辑控制器使用启发式知识,并使用一个语言描述模型来表达它的设计。我们将以PID控制器模型为出发点,而不是从头开始开发一个模型。一旦完成开发和实现,模糊逻辑控制器将通过调整其参数来提高性能。
一般来说,开发模糊逻辑无刷直流控制器有三个设计步骤:
1.定义输入、输出控制器的操作范围。
2.定义模糊成员集的功能和规则。
3.调整引擎。
第一步是定义模式相关的输入和输出。输入是误差(E),它是设置的速度(SS)和当前的速度(CS)之间的当前误差;另外的输入是误差的变化(CE),它是当前误差和以前计算误差(PE)之间的差值。输出是电枢电压(CV)的改变值,它是现有的电枢电压(CAV)和以前的电枢电压(PAV)保存值的差额。由此产生的模型方程式如下:
E=SS-CS
CE=E-PE
CV=CAV-PAV
发动机旋转速单位为转每分钟(RPM),E决定了接近目标速度的程度。因此,当E>0,发动机的旋转速度低于设定的速度;当E<0,电机旋转速度超过设定的速度。CE决定控制器的调整方向。当且仅当(iff)目前的旋转速度比设定的速度要低时CE为正,;当且仅当目前的旋转速度大于设定的速度时,CE 为负。当接近设定速度时,CE就会在正的和负的值之间来回调整。CV是电枢的供电电压。这个电压表示为脉冲的宽度调制(PWM)占空比。
下一步是定义模糊集的成员函数、变量和规则。为了保证能工作,非模糊(清晰)输入和输出必须转化成模糊的。转换由使用语言变量来表示输入和输出范围。这些也被称为模糊变量。模糊变量用于为成员函数划分隶属值的区域。例如,5个变量用来映射输入和输出,它们是中等负值(NM)、小负值(NS)、零(z)、小正值(PS)、中等正值(PM)。
它不是数学公式,模糊控制器使用模糊规则来作出决定,并产生一个输出。模糊规则是通过IF-THEN语句的形式来描述的。模糊规则决定系统的行为,而不是复杂的数学方程。例如,如果错误(E)是等于中等负值(NM),而错误的变化(CE)等于小正值 (PS),那么在电枢电压(CV)的改变就等于小负值(NS)。所用的一些规则是根据设计者的经验和系统的知识来设定的。因此,我们的系统所使用的规则的数量是25个。
为了激活电枢,CV模糊输出必须被转换回清晰输出。这个过程称为去模糊化。一种流行的去模糊方法称为重心法。
设计的最后一步是调整成员函数和规则。这个阶段也称为优化调整阶段。优化调整用于提高模糊控制器的性能。一旦设计完成,控制器就将准备付诸实现。
模糊逻辑控制器的实现是由三个模块组成的。它们分别是模糊化、规则部署和去模糊化。以下各节讨论模糊逻辑无刷直流电动机相关模块的实现情况。
模糊化
模糊化是将有明晰数值的数据转换成模糊数据的过程。由此产生的模糊数据的转换是基于对输入变量的模糊隶属度。对于这种应用,电机控制输入变量是旋转误差 (Error)和旋转误差差值(Cerror)。旋转误差(Error)是从一个采样时间到下一个采样时间的绝对旋转速度差。同样地,旋转误差差值 (Cerror)是一个采样时间和下一个采样时间之间的旋转误差变化值。公式如下:
旋转误差(Error)=SetSpeed(设定速度)-Cur-rentSpeed(目前速度)
旋转误差差值(Cerror)=旋转误差(Error)-Pre-viousError(前一次误差)
正如前面谈到的,为旋转误差(Error)变量和旋转误差差值(Cerror)变量定义了五个成员集:
1.NM:中等负值
2.NS:小负值
3.ZE:零
4.PS:小正值
5.PM:中等正值
图1显示了为旋转误差(Error)变量和旋转误差差值(Cerror)变量定义的五个成员集。这些成员集是三角型重叠,以提供良好的响应。每一组有一个0×1AAA的最大值。
输入变量模糊化后产生了由五部分组成的向量,这五个部分相对应于模糊化成员集的中等负值、小负值、零、小正值、中等正值。每个组件对应的Y轴的值代表该明晰输入值的隶属度。向量含有旋转误差(Error)和旋转误差差值(Cerror)模糊化值被表示为数组×1[]和X2[]。
图2和图3图形化地显示了旋转误差[Error)和旋转误差差值(Cerror)模糊化值。
模糊推理规则
模糊推理规则通过操作模糊化数据来确定系统的行为。具体来说,模糊化数据对照规则表进行应用。在语言方面,这就是输入数据Error、Cerror与规则表进行比较。规则表中包含了成员集NM、NS、ZE、PS、和PM,并根据控制面来操作。输出是通过有效“推断”或“既定”的规则。推理过程的描述见如下伪代码清单:
去模糊化
去模糊化是将模糊数据转换成明晰数据的过程。为了这个应用目的,去模糊化后的值确定用于驱动电机的PWM信号的占空比。占空比取决于使用修改后的质心计算功能。在这里采用的去模糊方法是用质心计算函数乘以一个系数。修改后的计算也称为质心点计算函数。
质心点的计算公式为:
Defuzzified VaLue=∑-Y[i]XmultCoeff[l]/∑Y[i]
其中Y[i]的i即为输出向量元素,是multCoeff[i]的输出成员集应乘以的系数。其中,i可取1~5。公式计算结果即为去模糊化后的结果。
图4通过图形显示了被该应用使用的输出成员集与[-0x10,-0x8,0x0,0x8,0x10]系数。
假设,y[]=[0x0,0x13F,0x196A,0x0,0x0],则去模糊输出值如下:
Defuz=0×(-16)+319×(-8)+6506×(0)+0×(8)+0×(16)/0+319+6506+0+0=-2552/6825=“-0.37391
图5显示为输出向量y[]质心点的计算结果。
硬件描述
eZDSP2812 板被用在这种电机控制应用中。eZdsp板的核心是TMS320F2812数字信号处理器。该板使用定时器T1、20kHz的时钟,产生PWM1-6的信号,并使用定时器T2来执行中断服务例程(ISR)。此外,输入捕捉引脚CAP1-3是用来收集霍尔效应传感器高速数据的。
发动机是由 DSP产生的PWM信号驱动的。这六个PWM信号被用来作为三相功率变换器的源。功率变换器将这六个信号转换为三相位信号,并直接作为发动机的电源。三相功率变换器的功能由一个辅助电机控制电路板来处理。频谱数字提供了两个能够提供这种功能的电路板:DMC550和DMC1500。其中任何一块都可直接插入eZdsp28xx板上使用。
霍尔效应传感器用于模糊逻辑控制回路反馈。对三相功率变换器开关的转换是通过检测从霍尔效应传感器接收到的信号来决定的。该信号被送入TMS320F2812的采集针内。实际电机速度的计算是通过一个软件模块来计数的。
软件介绍
电动机控制软件是由数字微型电路(DMC)库模块和FL电动机控制程序组成的。数字微型电路(DMC)库中有七个模块被使用在此应用程序中。它们是:
·Datalog数据记录
·BLDC3PWM
·tall3_Drv
·Mod6_Cnt
·Rmp2Cntl
·Rarnp_Cntl
·Speed_PR
此外,模糊逻辑发动机控制是由一个主要FuzzyCtl()例程来处理的;对于无刷直流电动机就是Fuzzy-BLDC()。
该软件首先是进行首次运行配置,然后进行应用程序特定的设置。具体来说,GPIO引脚被配置为CAPture和PWM引脚。
下一步是进行定时器和模块参数的初始化,以及ISR的设置。当所有外设设置完成,中断被激活,进入主要操控系统。主要操控系统每隔8.7毫秒调用一次模糊控制器。
误差值被转换成通过模糊化的模糊值被存储在X1[]和X2[]。一旦转换,模糊值被应用于模糊推理规则。
从推理模块得到的结果存储在Y[]中。从Y[]得到的输出在去模糊化模块中被转换成明晰值。由此产生的明晰值是一种PWM偏移量,该偏移量被添加到当前的 PWM占空比上。更新后的PWM值被检查,看看是否新的值是在一定范围内,如果不是就将采取适当行动。最后,模糊控制器返回更新后的PWM占空比给调用例程。
图6显示了演示应用程序调试环节。
通道1和2(在右上角显示窗口)分别显示了PWM计数器和捕获霍尔效应传感器。通道3和4(在通道1和2下方)显示边沿触发PWM的计数器和霍尔效应传感器的显示窗口的版本。监视窗口中显示重要变量,其中,最重要的是SetSpeed(设置速度)和CurrentSpeed(当前速度)。这些值足够接近,使得模糊逻辑控制器的输出为零。
这次会话表明发动机是在无负载条件下运行的。此行为可能会和有负荷时的情形略有不同。此外,如果想要更细的粒度,可能有必要对控制器进行调整。