基于AT89S52的双模糊温度控制器设计
现代工业控制中,温度控制十分重要且日益复杂化。由于温度控制具有的非线性、大滞后、时变性、升温单向性等特点,在实际应用中难以建立精确的数学模型,无法用经典控制理论及现代控制理论来解决实现温度控制效果。目前,现代智能控制中不依赖对象数学模型、能有效控制时变和非线性系统的模糊控制已普遍应用于工业温度控制中。通过对温度的基本模糊控制,可达到较好的控制效果,但存在一定的稳态误差,难以达到较高的控制精度。若根据系统不同的工作状态采用不同的温度模糊控制,即双模糊控制,可大幅度改善稳态误差,提高控制精度,同时利用单片机作为主控芯片,可有效完成温度模糊处理及温度实时控制且可靠性高。
1 控制器功能及硬件设计
双模糊温度控制器主要以单片机为主控芯片,主要负责温度的模糊化处理、模糊控制算法实现、输出温度的大小控制处理。工业现场温度通过温度传感器采集,传感器输出信号经变送器转变为0~5 V 的标准信号,经A/D 转换后与温度设定值进行比较, 得到温度误差信号e 及温度变化率ec,并在系统初始阶段和稳态阶段将两者送入不同的单模糊控制器进行模糊处理,得到输出控制量u,经隔离放大后控制功率可控硅改变加热元件功率,从而完成温度的调节。其温度控制系统原理框图如图1 所示。
温度控制器主控芯片采用ATMEL 公司的AT89S52 单片机,该单片机是一种低功耗、高性能CMOS 8 位微控制器,具有8 kB 在系统可编程Flash 存储器和256B RAM,32 位I/O线,3 个16 位定时器,6 个中断源以及看门狗定时器等,可满足温度控制器的基本设计及扩展设计需求。
温度传感器采用镍铬/镍硅热电偶,该热电偶具有线性度好,热电动势较大,灵敏度高,稳定性和均匀性较好等特点,其使用温度为0~1 300 ℃,对应输出为0~52.37 mV[1]。温度变送器采用DBW 型, 把热电偶输出的毫伏信号转换为0~5 V标准模拟信号。该信号通过A/D 转换器ADC0809 的IN0 通道输入,从而转换为数字信号,再由AT89S52 单片机利用控制程序从P0 口输入其内部RAM 单元,以便与温度设定值进行比较[2]。模糊控制器输出控制量通过P1.0 输出,通过光电双向可控硅驱动器MOC3051 去驱动功率可控硅, 从而改变加热元件的加热功率,以实现温度调节的目的。
考虑到系统的人机互动,利用并行接口芯片8155 进行I/O 口扩展,以完成键盘输入及显示器输出的设计。其中键盘采用矩阵式键盘,负责参数的设定和一些开关量的输入,如:启动、停止、复位、温度设定、设定值修改、温度数字键等;而显示器采用LED 显示器,用于同时显示系统设定温度及实际温度。
2 双模糊控制算法设计
2.1 双模糊控制器结构设计
本模糊控制器采用双模糊控制结构以及典型的双输入、单输出方式,如图2 所示。将温度设定值与温度反馈值之间的误差e 及变化率ec 作为输入量,将温度控制量u 作为输出量。由于系统在不同的控制状态下存在大小不同的误差,若考虑单模糊控制器设计,将使系统的快速响应及控制精度之间存在矛盾[3],两者无法兼顾。为此,采用双模糊控制器设计,并人为设置一个误差临界值完成双模控制切换[4]。在系统初始阶段,系统误差较大,使用系统因子Kec、Ku相对较小(如Kec1、Ku1)的模糊控制器,以实现快速响应,消除误差的目的;在系统稳态阶段,系统误差较小,使用系统因子Kec、Ku适当增加(如Kec2、Ku2)的模糊控制器,以改善系统的稳态性能。
2.2 双模糊控制策略
考虑温度控制的特点, 将误差e、变化率ec 及输出量u的论域设为[-6,6],将其量化为13 个等级,并分别为误差e、变化率ec、输出量u 选取7 个语言值,即{NL,NM,NS,ZO,PS,PM,PL}。三者的隶属度函数均采用梯形分布[5],如图3 所示。根据对工业过程控制的经验总结,制定相应的模糊控制规则表如表1 所示。
为提高系统的实时响应速度,事先根据模糊控制规则表及语言变量赋值表, 离线计算出模糊控制总表如表2 所示,该表经严格的实践检验和反复修改后存放在单片机的程序存储器中。然后根据输入量e 及ec 在不同工作状态的实际变化范围及其论域,计算出量化因子Ke1、Kec1和Ke2、Kec2,并确定出比例因子Ku1和Ku2。实际控制时,模糊控制器把系统在不同工作状态下的输入量e 及ec 分别乘以相应的Ke、Kec,并量化到输入量的语言变量论域中,再根据量化的结果与模糊控制总表进行比较,通过查表程序得到所需的输出量U,最后乘以Ku,得到系统在不同工作状态下的实际输出控制量u。
3 控制器软件设计
双模糊温度控制器的软件采用模块化设计思想,主要包括主程序、温度采集程序、键