在设计模糊PID控制器时,为节省FPGA的逻辑资源,一般不选择含有三个模糊控制器的方案,而采用并行结构,将PDFLC和PIFLC两个模糊控制器模块的输出相加,来实现PIDFLC。基于这种设想,先将PD控制器转变成PI控制器,再将二者叠加。式(1)为PD控制器的位置表达式,式(2)为PI控制器的增量表达式。
u(n)=KPe(n)+KDr(n) (1)
△u(n)=KPr(n)+KIe(n) (2)
式中:e(n)为采样误差信号;r(n)为采样误差的变化率;△u(n)为控制量的增量。比较式(1)和式(2)可知,位置式的PD控制器可以转换成增量式PI控制器,条件如下:
①r(n)和e(n)交换位置;
②KI取代KD;
③△u(n)取代u(n)。
图2为基于上述原理的控制器的结构图,图中对PDFLC的输出端求和(虚框部分),以代替PIFLC。
每一个PDFLC模块均采用两输入单输出的Mandani型模糊推理系统,输入的两个信号分别为误差信号和误差信号的变化率。在进入模糊化之前,每一个输入变量均乘以一个来自于PDFLC内部的增益系数(KP和KI或KP和KD)。同样,模糊化后输出值也需乘一个来自于PDFLC内部的增益系数(KO),PDFLC和PIFLC的输出(uPDFLC和uPIFLC)之和作为PIDFLC的输出(uPIDFLC)。模式选择控制端的输入变量决定输出模式。由图2可见PDFLC模块是控制器设计中的核心,主要包括增益、模糊化、模糊推理和解模糊化模块。[page]
1.1 增益模块
在PDFLC模块的输入和输出部分各包含一个增益模块。增益模块中为两输入一输出模块。两个输入变量分别为来自外部的输入变量和不同模式下对应的增益系数,它们的乘积作为该模块的输出。每个增益模块各包含一个8 b的锁存器,用于存储增益系数的值,该值的具体数值取决于控制器工作在哪个工作方式。增益模块的结构如图3所示。
1.2 模糊化挨块
模糊化过程是使用两个模糊器模块完成的,每一个变量对应一个模糊器模块。每一个模糊器模块输入一个变量,产生四个输出,即表示两个主动模糊集序列的i和i+1,及变量所对应的隶属度μi和μi+1。模糊器模块由三部分构成:存储器、转换器和增量器。存储器模块用作查找表,存放的是每个输入变量的隶属度值和主动模糊集数。
存储器模块中每个字节被分为两个部分。第一部分表示第一个主动模糊集的序列号,第二个主动模糊集的序列号是通过增量器在第一个主动模糊集序列号上加1获得的。字节的第二部分,表示第一个主动模糊集中输入变量的隶属度数值。在第二个主动模糊集中,输入变量的隶属度值是1减去第一个输入变量的隶属度值。即两个连续模糊集的隶属度值之和为1,用式(3)表示:
μi+μi+1=1 (3)
1.3 推理机模块
设计中使用的推理机模块是建立在主动规则选择机制上的。主动规则选择器模块使用的信息来源于模糊器中的主动模糊集,且仅发主动规则。通过这种方式使用模糊选择器,可使被处理的规则的数目减少很多,主动规则数目用式(4)表示:
N=Vm (4)
式中:N为主动规则数目;m为输入数;V为重叠模糊集的最大数目。在设计中,假设m=2,V=2,则每次主动规则的数目为Vm=22=4个。
除了主动规则选择器模块,推理机还有另外两个模块。规则存储模块和最小电路模块。3个模块的连接图如图4所示。
1.4 解模糊化模块
解模糊化是在解模糊器中完成的,采用的是重心法,用式(5)表示:
式中:N为规则数;μk为第k条规则的适应度;βk为第k条规则输出隶属度函数的解模糊化数值。
[page]
解模糊器由两个累加器、一个乘法器和一个除法器构成的。解模糊化模块接受来自于推理机的四条规则序列和它们的隶属度(在4个时钟周期内顺序接收),并产生一个明确的输出送到增益模块,如图5所示。
在四个连续的时钟周期内,来自推理机的隶属度和规则序列按顺序传送,而不是在一个周期内并行传输,这样可减少FPGA中的资源消耗。
2 联合仿真及结果
将设计的文件加载到FPGA器件之前,为了验证设计的正确性,必须进行全面充分的功能和时序仿真。功能仿真一般对大型设计的前期代码进行验证,通常使用Mentor公司的Modelsim来进行;时序仿真使用QuartusⅡ或Modelsim软件均可。模糊PID控制器的设计较小,省略了功能仿真步骤,直接进行时序仿真。
在设计中采用Matlab与QuartusⅡ联合仿真,不仅能够提高设计效率,而且大大增强了QuartusⅡ的仿真功能。下面介绍仿真的过程和方法。
*.vec文件是QuartusⅡ与Matlab联合仿真时需要Matlab提供的文件。*.vwf和*.vec格式的文件是QuartusⅡ仿真软件中时序仿真中常用的两种文件格式。前者是在QuartusⅡ中通过波形编辑器生成的,主要用于输入简单数据,当输入较为复杂数据时,用波形输入的方法难以实现,仿真效果较差。后者是按一定仿真格式要求的文本文件输入方式,只要满足QuartusⅡ对仿真文件的格式要求,可以利用任何文本编辑器产生。为了加强数据生成处理能力,这里选用Matlab软件生成*.vec文件。*.vec文件格式及其格式说明如下:
按以上格式要求,在Matlab中将输入数据以文件的形式输出并将其保存为*.vec格式。
[page]
在QuartusⅡ中对仿真参数进行设置,将仿真向量文件指向由Matlab生成的*.vec文件,即可将Matlab中生成的仿真信号导入QuartusⅡ进行仿真。将仿真结束后生成的波形文件(*.vwf格式),另存为*tbl格式文件,以便将仿真结果导入Matlab中进行验证。*tbl文件如下:
以数据文件输入的方式将此*.tbl文件中的QuartusⅡ仿真输出信号的数值导入Matlab中,既可以分析模糊PID设计的正确与否,也可以分析其性能优劣。
下面以基于软件的模糊PID控制器(Software Bulid Controller,SBC)与基于FPGA的模糊PID控制器(FPGA Bulid Controller,FBC)做比较。在仿真中对称三角模糊集和单值模糊集分别用于输入和输出变量,此外还应用图6中所示的64个模糊规则的规则表。
将两种模糊PID控制器用在图1所示的控制系统中,并输入0.5 V的阶跃信号。选择的受控对象是工业控制对象中的典型模型,如直流电机位置控制等。模型的离散使用的是ZOH法。离散传递函数如下:
式(6)的采样周期T=0.25 s。采用FBC和SBC进行仿真比较。因为每一个控制器均能作为PDFLC,PIFLC或PIDFLC使用,所以给出了3种控制器的仿真结果。图7为受控对象受PDFLC,PIFLC和PIDFLC控制时的阶跃响应的仿真曲线。
3 结语
针对以传统方式实现模糊PID控制器时,各输入变量均需要建立模糊控制器模块,且需要大量的规则库,提出了改进的模糊PID控制器,以PDFLC代替PIFLC,用两个PD模糊控制器实现模糊PID控制器,并利用FPGA实现。采用Matlab与QuartusⅡ联合仿真,比较了基于FBC和SBC的仿真结果,表明基于FPGA的模糊PID控制器,响应时间和控制效果较为理想,验证了设计方案的正确性和可行性。
『本文转载自网络,版权归原作者所有,如有侵权请联系删除』