0前言
锅炉自控系统是一个典型的大惯性、大滞后、多变量的过程控制系统,其涉及到压力、温度、水位等多个物理参数检测与控制,需要同时控制风机、补水泵、加热装置,自动排除故障等。由于模拟输入量多,需要的硬件电路也多,控制起来不简单。现阶段,很多厂家都是利用PLC对锅炉进行控制,其自动化程度和可靠性较高,但是成本也很高,而且程序修改和参数设置比较困难。以单片机为控制核心的智能控制系统由于成本低、可靠性好、安全性高,受到了更多企业的喜欢[1]。本文在借鉴现有各类单片机温度控制系统的基础上,设计一个中档单片机锅炉压力控制器系统,该系统采用STC89C51单片机作为核心,具体控制采用基于模糊的PID方式。
1系统硬件电路设计
基于模糊PID的锅炉压力控制器的控制系统主要包括单片机芯片、键盘、LED显示、蜂鸣器报警电路、开关电路和输入信号采集电路组成。硬件原理图如图1所示。
图1 硬件系统原理框图
该方案设计相对简单,硬件电路中采用的STC89C51是台湾宏晶科技推出的新一代超强抗干扰/高速/低功耗的单片机,指令代码完全兼容传统8051单片机,12时钟/机器周期和6时钟/机器周期可任意选择,最新的D版本内部集成MAX810专用复位电路。
输入信号采集电路主要是采集水位信号和压力控制器信号,水位信号包括水位极低、低水位、正常水位、高水位、水位极高;压力控制器包括低压、高压、超高压;开关电路主要是负责控制一段火燃烧机、二段火燃烧机、补水泵和鼓风机的控制;LED显示主要是负责各种水位的显示、各种压力的显示和各种故障显示;蜂鸣器报警电路主要是缺水水位、超高水位、超高压状态、各种故障的蜂鸣报警。
该系统完成的功能主要是根据锅炉的水位和压力,来控制水泵是否补水,控制一二段火开关的加热,并根据具体情况控制风机进行降温,并随时可以进行故障报警。而且相应状态都可以通过控制面板上的LED显示出来。图2为一段火开关控制电路。
燃烧机控制过程:运行过程中,当压力状态显示“低位”时,一段火、二段火同时启动;当压力状态显示“正常”时,二段火灭、一段火仍开,当压力状态显示“高位”时,一段火、二段火全灭,继续控制燃烧机风机吹扫30秒。当压力下降,状态再次显示“低位”时,一段火、二段火再次同时启动,如此循环直到停止运行。总之:低压启动,常压保持,高压停止,超高压保护。在压力状态显示“正常”时按“运行”键开始运行的话,一段火、二段火都不启动,等压力下降到“低位”时才启动。
图2 一段火开关控制电路
2模糊PID调节规律的选择
该系统采用常用的PID调节规律:
其中: 作为单片机的输入信号, 是给定值。但由于单片机只能处理数字信号,故用数字PID来表示:
上式中, 次采样时的偏差值和PID的输出量; 和 —比例、积分和微分系数。
在现实系统中,所测控的对象多具有大滞后、强耦合、时变等特征,仅采用PID控制往往存在调整时间长、超调量大、PID参数不易确定等不足。此处引入模糊思想对PID参数进行实时调整,以期获得较好的控制效果。
具体的调整方式如下式所示,其中a、b和c分别为比例系数、积分系数和微分系数的调整系数; 和 ——调整后用于求取PID输出的比例系数、积分系数和微分系数; 和 ——起始的比例系数、积分系数和微分系数。
3系统软件设计
本系统中的软件主要是根据系统要求运用C语言设计的,软件能可靠地实现系统的各种功能。系统软件设计采用模块化思想。根据功能将系统软件分为初始化系统、数据采集并对采集所得的数据进行处理。系统软件主流程图和中断处理程序流程图如图3所示。
图3 系统软件主流程图
本系统水泵自动控制过程如下:当炉水水位下降超过低位时,泵1启动自动补水,当炉水水位上升超过高位时,泵1停止,当炉水水位再次下降超过低位时,泵1又启动自动补水。如此循环直到停止运行。在水位状态显示“正常”时按“运行”键开始运行的话,泵1不启动,等水位下降到“低位”时才启动。在压力控制运行过程中,当发生缺水、压力超高、水位超高、燃烧机故障、烟温超高等故障时声光报警停机保护。
下面是燃烧机故障程序:
else if(status_ERR==1)
{
LED_RUN=LED_ON;
LED_WAIT=LED_OFF;
LED_BURNFAULT=LED_ON;
MotorAlm=0; //警铃开
MotorAir=1; //强制关风机
SecondBurn=1; //关二极火
FirstBurn=1;
status_Start=0;
}
else if(status_Watered==0&&WaterLowest==0)
{
MotorWater=0; //开水泵
MotorAir=1; //关风机
SecondBurn=1; //关二极火
FirstBurn=1; //关一级火
if(WaterHigh==0) //加水到高水位停止
status_Watered=1; //置加过水标志
LED_RUN=LED_ON;
LED_WAIT=LED_OFF;
status_Start=1; //置运行标志
}
……
else if(PressureHighest==1&&Pressurelower==1&&PressureHigh==1) //没有压力
{
status_PressureHighest=0;
status_pressuresilence=0;
LED_PRESSURE=LED_OFF;
}
4结束语
本文设计了一个具有普遍实用意义的中档单片机锅炉压力控制器系统。该系统采用了STC89C51作为核心,具体控制算法采用能进行实时调整的模糊PID方式,该系统能克服常规单片机PID控制系统的一些不足之处,达到较为理想的控制效果。该系统已经被厂家使用,系统运行稳定。