基于單片機(jī)的模糊PID的鍋爐壓力控制器的設(shè)計(jì)
摘要:介紹了一款基于單片機(jī)的全自動(dòng)鍋爐壓力控制器的設(shè)計(jì)。該系統(tǒng)能根據(jù)鍋爐現(xiàn)場檢測的各個(gè)狀態(tài)做出實(shí)時(shí)精確的自動(dòng)控制,如實(shí)現(xiàn)溫度、壓力、水位等的監(jiān)控,數(shù)碼管顯示、報(bào)警、系統(tǒng)參數(shù)設(shè)置的功能。該系統(tǒng)還采用模糊PID方法進(jìn)行溫度控制,能克服普通的單片機(jī)PID溫度控制系統(tǒng)的一些不足之處,達(dá)到較為理想的控制效果。
0前言
鍋爐自控系統(tǒng)是一個(gè)典型的大慣性、大滯后、多變量的過程控制系統(tǒng),其涉及到壓力、溫度、水位等多個(gè)物理參數(shù)檢測與控制,需要同時(shí)控制風(fēng)機(jī)、補(bǔ)水泵、加熱裝置,自動(dòng)排除故障等。由于模擬輸入量多,需要的硬件電路也多,控制起來不簡單。現(xiàn)階段,很多廠家都是利用PLC對鍋爐進(jìn)行控制,其自動(dòng)化程度和可靠性較高,但是成本也很高,而且程序修改和參數(shù)設(shè)置比較困難。以單片機(jī)為控制核心的智能控制系統(tǒng)由于成本低、可靠性好、安全性高,受到了更多企業(yè)的喜歡[1]。本文在借鑒現(xiàn)有各類單片機(jī)溫度控制系統(tǒng)的基礎(chǔ)上,設(shè)計(jì)一個(gè)中檔單片機(jī)鍋爐壓力控制器系統(tǒng),該系統(tǒng)采用STC89C51單片機(jī)作為核心,具體控制采用基于模糊的PID方式。
1系統(tǒng)硬件電路設(shè)計(jì)
基于模糊PID的鍋爐壓力控制器的控制系統(tǒng)主要包括單片機(jī)芯片、鍵盤、LED顯示、蜂鳴器報(bào)警電路、開關(guān)電路和輸入信號采集電路組成。硬件原理圖如圖1所示。
圖1 硬件系統(tǒng)原理框圖
該方案設(shè)計(jì)相對簡單,硬件電路中采用的STC89C51是臺灣宏晶科技推出的新一代超強(qiáng)抗干擾/高速/低功耗的單片機(jī),指令代碼完全兼容傳統(tǒng)8051單片機(jī),12時(shí)鐘/機(jī)器周期和6時(shí)鐘/機(jī)器周期可任意選擇,最新的D版本內(nèi)部集成MAX810專用復(fù)位電路。
輸入信號采集電路主要是采集水位信號和壓力控制器信號,水位信號包括水位極低、低水位、正常水位、高水位、水位極高;壓力控制器包括低壓、高壓、超高壓;開關(guān)電路主要是負(fù)責(zé)控制一段火燃燒機(jī)、二段火燃燒機(jī)、補(bǔ)水泵和鼓風(fēng)機(jī)的控制;LED顯示主要是負(fù)責(zé)各種水位的顯示、各種壓力的顯示和各種故障顯示;蜂鳴器報(bào)警電路主要是缺水水位、超高水位、超高壓狀態(tài)、各種故障的蜂鳴報(bào)警。
該系統(tǒng)完成的功能主要是根據(jù)鍋爐的水位和壓力,來控制水泵是否補(bǔ)水,控制一二段火開關(guān)的加熱,并根據(jù)具體情況控制風(fēng)機(jī)進(jìn)行降溫,并隨時(shí)可以進(jìn)行故障報(bào)警。而且相應(yīng)狀態(tài)都可以通過控制面板上的LED顯示出來。圖2為一段火開關(guān)控制電路。
燃燒機(jī)控制過程:運(yùn)行過程中,當(dāng)壓力狀態(tài)顯示“低位”時(shí),一段火、二段火同時(shí)啟動(dòng);當(dāng)壓力狀態(tài)顯示“正常”時(shí),二段火滅、一段火仍開,當(dāng)壓力狀態(tài)顯示“高位”時(shí),一段火、二段火全滅,繼續(xù)控制燃燒機(jī)風(fēng)機(jī)吹掃30秒。當(dāng)壓力下降,狀態(tài)再次顯示“低位”時(shí),一段火、二段火再次同時(shí)啟動(dòng),如此循環(huán)直到停止運(yùn)行。總之:低壓啟動(dòng),常壓保持,高壓停止,超高壓保護(hù)。在壓力狀態(tài)顯示“正常”時(shí)按“運(yùn)行”鍵開始運(yùn)行的話,一段火、二段火都不啟動(dòng),等壓力下降到“低位”時(shí)才啟動(dòng)。
圖2 一段火開關(guān)控制電路
2模糊PID調(diào)節(jié)規(guī)律的選擇
該系統(tǒng)采用常用的PID調(diào)節(jié)規(guī)律:
其中: 作為單片機(jī)的輸入信號, 是給定值。但由于單片機(jī)只能處理數(shù)字信號,故用數(shù)字PID來表示:
上式中, 次采樣時(shí)的偏差值和PID的輸出量; 和 —比例、積分和微分系數(shù)。
在現(xiàn)實(shí)系統(tǒng)中,所測控的對象多具有大滯后、強(qiáng)耦合、時(shí)變等特征,僅采用PID控制往往存在調(diào)整時(shí)間長、超調(diào)量大、PID參數(shù)不易確定等不足。此處引入模糊思想對PID參數(shù)進(jìn)行實(shí)時(shí)調(diào)整,以期獲得較好的控制效果。
具體的調(diào)整方式如下式所示,其中a、b和c分別為比例系數(shù)、積分系數(shù)和微分系數(shù)的調(diào)整系數(shù); 和 ——調(diào)整后用于求取PID輸出的比例系數(shù)、積分系數(shù)和微分系數(shù); 和 ——起始的比例系數(shù)、積分系數(shù)和微分系數(shù)。
3系統(tǒng)軟件設(shè)計(jì)
本系統(tǒng)中的軟件主要是根據(jù)系統(tǒng)要求運(yùn)用C語言設(shè)計(jì)的,軟件能可靠地實(shí)現(xiàn)系統(tǒng)的各種功能。系統(tǒng)軟件設(shè)計(jì)采用模塊化思想。根據(jù)功能將系統(tǒng)軟件分為初始化系統(tǒng)、數(shù)據(jù)采集并對采集所得的數(shù)據(jù)進(jìn)行處理。系統(tǒng)軟件主流程圖和中斷處理程序流程圖如圖3所示。
圖3 系統(tǒng)軟件主流程圖
本系統(tǒng)水泵自動(dòng)控制過程如下:當(dāng)爐水水位下降超過低位時(shí),泵1啟動(dòng)自動(dòng)補(bǔ)水,當(dāng)爐水水位上升超過高位時(shí),泵1停止,當(dāng)爐水水位再次下降超過低位時(shí),泵1又啟動(dòng)自動(dòng)補(bǔ)水。如此循環(huán)直到停止運(yùn)行。在水位狀態(tài)顯示“正常”時(shí)按“運(yùn)行”鍵開始運(yùn)行的話,泵1不啟動(dòng),等水位下降到“低位”時(shí)才啟動(dòng)。在壓力控制運(yùn)行過程中,當(dāng)發(fā)生缺水、壓力超高、水位超高、燃燒機(jī)故障、煙溫超高等故障時(shí)聲光報(bào)警停機(jī)保護(hù)。
下面是燃燒機(jī)故障程序:
else if(status_ERR==1)
{
LED_RUN=LED_ON;
LED_WAIT=LED_OFF;
LED_BURNFAULT=LED_ON;
MotorAlm=0; //警鈴開
MotorAir=1; //強(qiáng)制關(guān)風(fēng)機(jī)
SecondBurn=1; //關(guān)二極火
FirstBurn=1;
status_Start=0;
}
else if(status_Watered==0&&WaterLowest==0)
{
MotorWater=0; //開水泵
MotorAir=1; //關(guān)風(fēng)機(jī)
SecondBurn=1; //關(guān)二極火
FirstBurn=1; //關(guān)一級火
if(WaterHigh==0) //加水到高水位停止
status_Watered=1; //置加過水標(biāo)志
LED_RUN=LED_ON;
LED_WAIT=LED_OFF;
status_Start=1; //置運(yùn)行標(biāo)志
}
……
else if(PrESSureHighest==1&&Pressurelower==1&&PressureHigh==1) //沒有壓力
{
status_PressureHighest=0;
status_pressuresilence=0;
LED_PRESSURE=LED_OFF;
}
4結(jié)束語
本文設(shè)計(jì)了一個(gè)具有普遍實(shí)用意義的中檔單片機(jī)鍋爐壓力控制器系統(tǒng)。該系統(tǒng)采用了STC89C51作為核心,具體控制算法采用能進(jìn)行實(shí)時(shí)調(diào)整的模糊PID方式,該系統(tǒng)能克服常規(guī)單片機(jī)PID控制系統(tǒng)的一些不足之處,達(dá)到較為理想的控制效果。該系統(tǒng)已經(jīng)被廠家使用,系統(tǒng)運(yùn)行穩(wěn)定。