刘 刚 蒋伟进董 胡 童 欣
(1.长沙师范学院 长沙 410100)(2.湖南商学院 长沙 410205)
温湿度是生活中最基本的两个环境参数,温度的检测和控制研究比较早,技术比较成熟,而近几年来,随着社会发展带来的生活品质提高,湿度的检测和控制系统,特别是高精度,高效率的湿度检控系统应用需求大幅度增加。不管是温度控制,还是湿度控制,大多数是基于单片机的软件控制。这种控制方法控制效果不是很理想,控制精度不高,费时长[1~3]。随着 EDA技术的快速发展,以 FPGA为开发设计平台,采用先进的PID控制算法不仅能实时达到较高精度,而且能解决单片机软件控制所带来的抗干扰性不强而导致程序易跑飞的问题[4~5]。传统PID控制由于鲁棒性好,可靠性高在自动控制领域得到越来越多的应用,但针对非线性、时变的复杂控制系统会出现难于获得较为准确的数学模型而失去控制对象的现象[6]。为了能较为精确实现湿度控制,本文利用模糊控制理论而因此不需要建立精确的数学系统模型,依据专家和实际工程人员的经验知识,通过自动整定的方式实现参数的调整,从而实现对湿度控制要求比较高的应用场合的精确控制[7~8],并综合PID控制的优点,进行基于FPGA的模糊自适应PID湿度控制设计和实现。
模糊PID控制的结构框图如图1所示。模糊自整定PID是在传统PID算法的基础上,通过计算当前系统误差e和误差变化率ec,首先利用模糊规则进行模糊推理,然后查询模糊矩阵表进行参数调整[9]。以此来进行自适应调节PID算法中的比例系数Kp、积分系数KI、微分系数KD三个系数[10]。
图1 自适应模糊控制器的结构
通过如图2所示的对常规和模糊PID阶跃响应比较分析可知,模糊PID相比于常规PID具有超调量小,调节时间短等优点[11]。并且在控制过程中根据偏差和偏差变化率的改变能够实时地整定参数,具有较强的自适应能力[12]
图2 常规和模糊PID阶跃响应比较图
根据前面增量式PID控制算法结合模糊控制理论得出本设计整体电路架构如图3所示。
图3 模糊自整定PID电路架构
按照模糊自整定PID电路架构和控制算法流程,根据FPGA设计自顶向下设计特点,充分利用该芯片内部的丰富的宏功能模块,运用Verilog HDL语言和原理图混合设计。整体电路如图4所示,该设计分为误差生成模块、模糊量化模块、模糊查找表生成模块、PID运算模块。各子模块设计思路和结构如下:
图4 模糊PID控制器系统结构图
1)误差生成模块
该模块主要是完成产生输入偏差e(k)、及其偏差 e(k)变化率 ec(k)、e(k-1)、e(k-2)。由于该模块主要要用到寄存器和加法器,所以该模块利用宏功能模块进行原理图设计。整个模块的电路设计原理图如图5所示。并通过仿真测试。
图5 误差生成模块电路设计
仿真测试结果如图6所示,经检验此模块设计正确有效。
图6 误差生产模块仿真图
2)模糊量化模块
模糊量化设计就是把实时采集到的模拟信号值首先经A/D模数转化成精确数字量,然后再经过模糊化处理来得到相应的模糊量。本设计需将偏差e、偏差变化率ec两个输入量进行模糊量化设计。其设计主要分为两个步骤:(1)模糊量化分割:此步骤是按照一定的模糊规则对精确数字量进行模糊分割,在分割时一定要兼顾控制精度和算法实现的复杂度[12]。这是因为如果按照过多的模糊规则来进行模糊分割过细,就会导致论域集合过大而造成计算量过大,反之如果分割过粗,就会最终导致其控制精度不精确。经过综合权衡考虑,在本系统中对误差e和误差变化率ec等语言变量采用七级编码机制,模糊语言变量分为七个论域集合如下:{PB,PM,PS,ZO,NS,NM,NB},即{正大,正中,正小,零,负小,负中,负大}[12~13]。(2)隶属函数的选择:隶属函数时模糊集合的特征函数,是反映和表征模糊集合的变换规律的。根据系统控制需求和设计简化需要,本设计选择模糊子集NB的形状是Z形隶属函数,PB是S状隶属度函数,其余的模糊子集都是三角形隶属度函数。其隶属函数如图7所示。
图7 偏差和偏差变化率的隶属函数
将模块中误差e和误差变化率ec模糊化设计之后,得出e和ec的模糊量化后的编码值elunyu和eclunyu,其中0011代表PB,0010代表PM,0001代表PS,0000代表ZO,1001代表NS,1010代表NM,1011代表NB,如图8所示模糊量化设计的测试仿真图。经验证该模块设计正确有效。
图8 模糊量化设计的测试仿真图
3)模糊查找表生成模块
此模块是本设计的核心和关键点,它包含了模糊推理和解模糊化两个方面的工作。模糊PID控制的模糊推理实现一般有两种方法:一种是利用微处理器的计算能力在线实时计算,这种方法计算量大,编程困难。而另一种是对误差e和误差变化率ec在模糊论域中的所有组合,按照一定的规则离线计算得出修正参数并存储到ROM中,以便通过查表方式进行解模清晰化输出修正参数[9]。而本设计就是借助于MATLAB强大的计算能力,采用Mamdani模糊模型和重心法反模糊化,分别计算Kp、Ki、Kd三个参数修正量,再加上初始值就得到KP、KI、Kd。为了简化设计,提高稳定性和速率,根据A=KP+KI+Kd;B=-(KP+2Kd);C=Kd再离线计算出A,B,C并分别储存在FPGA内部三个不同的ROM中。由于FPGA是基于查找表结构,其内部有丰富的储存模块,实现起来非常快捷方便。许多联合MATLAB的离线查表设计是通过查表方式仅得到Kp、Ki、Kd参数修正量后设计相关的硬件加法器电路来实现 A,B,C[14~15]。而本设计是直接离线计算得出A,B,C来供查表输出,这样能极大地减少电路来节省FPGA内部资源,提高运算效率,使其能够在一块FPGA芯片内实现较为复杂的功能。
4)PID运算模块
此模块主要是完成最后的控制增量Δu(k)的输出,根据公式(10),采用FPGA内部的乘法器和并行加法器宏模块来完成。其电路结构如图9所示。
图9 PID运算模块电路模块
各个子模块设计并仿真测试正确后,在顶层设计中整体进行仿真测试,仿真效果如图10所示,经检验设计正确。
图10 模糊PID控制系统整体仿真测试图
本设计是在Altera的Cyclone II EP2C5Q208C8 FPGA芯片内完成的。经仿真测试,完全符合模糊PID控制器设计要求。并且经简单修改可快速形成IP核,利用该芯片内部嵌入的32位NIOS II微处理器完成基于模糊PID的湿度控制系统。该系统控制高效,稳定性、抗干扰性高,性能优越。