用單片機(jī)系統(tǒng)實(shí)現(xiàn)故障診斷
0.引言
現(xiàn)代工礦企業(yè)設(shè)備日益朝向大型化、復(fù)雜化、智能化發(fā)展,迫切要求對其運(yùn)行狀態(tài)進(jìn)行多參數(shù)監(jiān)測和故障診斷。隨著芯片技術(shù)的發(fā)展及智能技術(shù)的應(yīng)用,診斷技術(shù)已開始進(jìn)入一個新階段,即智能化階段,這是一種基于人工智能技術(shù)的診斷方法。該方法對復(fù)雜大系統(tǒng)的診斷尤其有效,可充分利用現(xiàn)有的經(jīng)驗(yàn)知識,構(gòu)造智能模型,進(jìn)行快速診斷。智能診斷系統(tǒng)的性能取決于所采用的智能模型。
本文用人工神經(jīng)網(wǎng)絡(luò)綜合實(shí)現(xiàn)凝汽器運(yùn)行狀態(tài)的診斷判斷。其原理是:設(shè)備的各種運(yùn)行狀態(tài)與其各種物理參數(shù)如溫度、壓力、振動頻率等有一定關(guān)聯(lián)。這種關(guān)聯(lián)難以用確定的數(shù)學(xué)表達(dá)式來表達(dá),但可以用神經(jīng)網(wǎng)絡(luò)來逼近該模型。
1.基于神經(jīng)網(wǎng)絡(luò)的故障診斷
人工神經(jīng)網(wǎng)絡(luò)(Artificial Neural Networks 簡稱ANN)[1]是由大量簡單處理單元廣泛連接而成的復(fù)雜的非線性系統(tǒng),具有學(xué)習(xí)能力、自適應(yīng)能力、非線性逼近能力等。實(shí)際應(yīng)用研究中,大多使用的是 BP網(wǎng)絡(luò)(Back-Propagation network)即反向傳播網(wǎng)絡(luò)。BP網(wǎng)絡(luò)因具有較強(qiáng)的非線性逼近能力,能進(jìn)行故障模式識別,還能進(jìn)行故障嚴(yán)重程度評估和故障預(yù)測,因此,應(yīng)用最廣。但是,由于BP算法在迭代時采用梯度下降法,存在著收斂緩慢、振蕩和局部極小等問題,一些改進(jìn)的BP算法在這些方面有些改善。BP網(wǎng)絡(luò)屬于多層結(jié)構(gòu),前饋式,它是繼Hopfield 網(wǎng)絡(luò)之后,Rumelhart提出的又一重實(shí)用網(wǎng)絡(luò)模型,其學(xué)習(xí)算法采用的是反向傳播算法,基本思想是構(gòu)造一個類似于感知機(jī)的非線性系統(tǒng),并讓該系統(tǒng)的決策能力與最小誤差函數(shù)和梯度下降聯(lián)系起來,從而解決了普遍存在的多層神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)不易收斂問題。
1989年Robert Hesht Nielson證明了對于任何在閉區(qū)間內(nèi)的一個連續(xù)函數(shù),都可以用一個隱含層的BP網(wǎng)絡(luò)來逼近,因而一個3層BP網(wǎng)絡(luò)可以完成任意的n維空間到m維的映射,故本文采用的網(wǎng)絡(luò)是3層網(wǎng)絡(luò),中間只有一層隱含層,網(wǎng)絡(luò)結(jié)構(gòu)如下圖所示。
2.系統(tǒng)總體方案介紹
表1為該系統(tǒng)使用的凝汽器11種典型故障的征兆集[2][3]。在征兆集中,“1”表示征兆存在,“0”表示征兆不存在。BP網(wǎng)絡(luò)的目標(biāo)輸出對應(yīng)各故障的隸屬函數(shù),即為:
q, l-1, 2, …, 11
為了說明起見,仍采用文獻(xiàn)[2]中給出的故障征兆來對網(wǎng)絡(luò)進(jìn)行訓(xùn)練。
該系統(tǒng)實(shí)現(xiàn)的功能有上述17種信號的采集與放大濾波、壓力溫度信號的補(bǔ)償、鍵盤輸入、LCD顯示輸出、與上位機(jī)的通信。
注:故障征兆序號的含義為:1.真空急劇下降;2.真空緩慢下降;3.循環(huán)水泵電動機(jī)電流降至零;4.循環(huán)水泵出口壓力降至零;5.汽輪機(jī)低壓脹差為負(fù)值;6.凝結(jié)水泵出口壓力增加;7.凝結(jié)水泵出口壓力下降;8.凝結(jié)水泵電動機(jī)電流增加;9.凝結(jié)水泵電動機(jī)電流減小; 10 .凝結(jié)水導(dǎo)電度增加; 11 .低壓加熱器水位升高; 12 .循環(huán)水溫升增加; 13 .循環(huán)水溫升減小; 14.凝汽器端差增加;15.凝結(jié)水過冷度增加;16 .抽氣器抽出的空氣溫度與冷卻水入口溫度之差增加;17.凝汽器抽氣口至抽氣器入口之間的壓差減小。
3.硬件實(shí)現(xiàn)
為了硬件系統(tǒng)的小型化,這里選用帶有A/D轉(zhuǎn)換、4K ROM和256字節(jié)RAM的83C552 CPU??删幊谭糯笃魍瑫r具有采樣保持的功能。
4.軟件實(shí)現(xiàn)
用Franklin C51[4]編制BP程序關(guān)鍵部分如下:
uchar data i,j;
float xdata show[17]; //故障征兆
float xdata fault[11]; //故障類型
float xdata weight[10][17]; //輸入層與隱含層間的權(quán)重
float xdata vweight[11][10]; //隱含層與輸出層間的權(quán)重
//這兩種權(quán)重已在PC機(jī)中訓(xùn)練好,燒錄在EPROM中。
float xdata Inet[10];
…… //初始化,從采集濾波保存的信號中讀取show[17]
for(i=0; i<10; i++)
for(j=0; j<17; j++)
Inet[i] += weight[i][j]*show[j];
for(i=0; i<11; i++)
for(j=0; j<10; j++)
fault[i] += vweight[i][j] / (1.0 + exp(-Inet[j]));
for(i=0; i<11; i++)
{ if(fault[i] > 0.1)
…… // 顯示出故障并調(diào)用通信程序上位機(jī)
// 進(jìn)行通信告知故障
}
實(shí)現(xiàn)通信功能的主要程序如下:
//這里略去了中斷服務(wù)程序的初始化
uchar idata transmit_buf[8] = "fault1";
uchar idata receive_buf[8];
void transmit_data(void)
{ uchar p, i;
transmit_ready = 0;
do{ p = 0; //清校驗(yàn)和
for(i=0; i<8; i++)
{ SBUF = transmit_buf[i];//發(fā)送一數(shù)據(jù)
p += transmit_buf;
while(TI != 1);
TI = 0;
}
SBUF = p; //發(fā)送校驗(yàn)和
while(TI == 0); TI = 0;
while(RI == 0); RI = 0;
}while (SBUF != 0)//接收不正確,重新發(fā)送
SM2 = 1; //設(shè)置監(jiān)聽狀態(tài)
ES = 1; //開串行口中斷
}
void receive_data(void)
{
uchar p, i;
receive_ready = 0;
while(1)
{
p=0; //清校驗(yàn)和
for(i=0; i<8; i++)
{
while(RI != 1); RI = 0;
receive_buf[i] = SBUF; //接收一數(shù)據(jù)
p += receive_buf[i];
}
while(RI != 1); RI = 0;
if(SBUF==p) {SBUF=0x00; break;}
//校驗(yàn)和相同,發(fā)"00"
else{
SBUF=0xff; //校驗(yàn)和不同,發(fā)"0FF"
while(TI == 0); TI = 0;}
}
SM2 = 1;
ES = 1;
}
5.實(shí)驗(yàn)結(jié)果及對比
重慶電廠機(jī)組凝汽器運(yùn)行過程中表現(xiàn)出的故障征兆:(0 1 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0),將其對應(yīng)的電信號分別輸入各個壓力溫度電導(dǎo)儀傳感器,經(jīng)過采集濾波,進(jìn)入上述已訓(xùn)練好的BP網(wǎng)絡(luò)中,網(wǎng)絡(luò)即輸出該征兆相對于各故障的隸屬度,如表2 所示。
為了比較起見,這里將文獻(xiàn)[2]中的模糊診斷方法簡單說明如下:
設(shè)故障論域中有m個模糊子集 A1,A2,…,Am,它們分別代表m種故障。對于該論域中的任意一個元素u0,若有
μAi(u0) = max{μA1(u0),μA2(u0), …,μAm(u0)}
則稱u0相對屬于Ai,其中μAi(u0)是u0相對Ai的隸屬度函數(shù)。
設(shè)凝汽器系統(tǒng)中有n種故障征兆S1,S2,…,Sn,每種故障所表現(xiàn)出的征兆論域?yàn)椋?br /> u(i) =S1(i),S2(i),…,Sn(i)),i=1,2,…,m
對于實(shí)際運(yùn)行中的任意故障征兆u(yù)=(S1,S2,…,Sn)
則其相對于各故障Ai (i=1,2,…,m)的隸屬度為:
μAi(u) =
根據(jù)最大隸屬度的原則,便可以診斷出該凝汽器存在的故障。這種診斷方法實(shí)質(zhì)上是一種基于歐氏距離的診斷方法,適用于對線性可分的故障類別進(jìn)行診斷。其診斷結(jié)果如表2所示。
從表2看出,把診斷門限值取為0.1時,據(jù)BP網(wǎng)絡(luò)輸出值判斷為5、10、6、11號,此結(jié)論與文獻(xiàn)[2]中給出的結(jié)論是相符的。同時計(jì)算得出的值之間的差別比文獻(xiàn)[2]中由模糊診斷得出的值之間得出的差別更加明顯,從而可更為準(zhǔn)確的得到故障集。
6.結(jié)束語
在今天大力提倡智能儀表的形勢下,采用微機(jī)實(shí)現(xiàn)智能化,使微計(jì)算機(jī)技術(shù)應(yīng)用前進(jìn)了一大步,尤其是采用了單片微機(jī),大大簡化硬件電路,也就減小了儀表體積,降低了儀表的成本。體積的縮小,使智能儀表的安裝更加容易;通信的應(yīng)用,使整個系統(tǒng)分布式的實(shí)現(xiàn)也更加容易。如果完善設(shè)計(jì)的功能,擴(kuò)大應(yīng)用范圍,可使本設(shè)計(jì)在故障檢測方面發(fā)揮更大作用。
參考文獻(xiàn):
[1] 趙林明等 多層前向人工神經(jīng)網(wǎng)絡(luò) 黃河水利出版社 1999.7
[2] 李錄平 凝汽器低真空運(yùn)行的原因及模糊診斷,汽輪機(jī)技術(shù),1993(5):45~48
[3] 汽輪機(jī)運(yùn)行規(guī)程 重慶電廠內(nèi)部資料 2001
[4] 徐愛鈞,彭秀華 單片機(jī)高級語言C51 Windows環(huán)境編程與應(yīng)用 電子工業(yè)出版社 2001.7