基于VC++的現(xiàn)場總線控制系統(tǒng)在水處理系統(tǒng)中的應(yīng)用
1 引言
隨著火力發(fā)電廠單機容量的不斷增大,系統(tǒng)越來越復(fù)雜性,出于機組安全性和使用壽命的考慮,對水汽品質(zhì)的要求越來越嚴(yán)。實現(xiàn)化學(xué)水處理設(shè)備的自動化,是當(dāng)今電廠化學(xué)水處理技術(shù)發(fā)展的必然趨勢,其安全性及可靠性更是至關(guān)重要。
受漢新發(fā)電有限公司的委托,本課題組對該公司原有水處理系統(tǒng)進(jìn)行改造,開發(fā)出基于can總線的化水監(jiān)控系統(tǒng),將現(xiàn)場總線技術(shù)應(yīng)用于水處理監(jiān)控系統(tǒng),全面提高了該系統(tǒng)的自動化程度,使其更有效更可靠更安全的運行。此計算機監(jiān)控系統(tǒng)將控制功能徹底下放到現(xiàn)場,降低了安裝成本和維修費用。上位機、下位機與現(xiàn)場之間達(dá)到同步控制,實現(xiàn)有效可靠的遠(yuǎn)距離監(jiān)控及操作,節(jié)約人力資源,提高勞動效率,實現(xiàn)效益最大化。
2 化學(xué)水處理程控系統(tǒng)的硬件組成
系統(tǒng)的硬件構(gòu)成整個系統(tǒng)由一臺上位機和兩臺下位機構(gòu)成兩級集散控制系統(tǒng)。在系統(tǒng)機內(nèi)安裝一塊pc can總線板構(gòu)成上位機,該卡通過can總線與下位機進(jìn)行通信。下位機采用std總線驅(qū)動方式,由cpu主板、32路光電隔離輸入板、32路光電隔離輸出板、16路12位a/d數(shù)據(jù)采集卡、4路12位d/a轉(zhuǎn)換卡構(gòu)成。
現(xiàn)場的數(shù)據(jù)采集、預(yù)處理、過程控制及向上位機傳送數(shù)據(jù)等任務(wù)由下位機完成,上位機負(fù)責(zé)全系統(tǒng)的控制、管理和信息綜合。
3 化學(xué)水處理程控系統(tǒng)的軟件實現(xiàn)
系統(tǒng)上位機軟件開發(fā)平臺選用vc++6.0。整個系統(tǒng)軟件設(shè)計采用模塊化結(jié)構(gòu),該方案配置體現(xiàn)了分散控制系統(tǒng)的優(yōu)點—即控制功能分散、操作管理集中??刂乒δ芊稚⒁馕吨到y(tǒng)實時響應(yīng)快和系統(tǒng)危險分散,操作管理集中便于集中管理,方案配置還具有冗余特性。
3.1 上位機監(jiān)控程序設(shè)計
本監(jiān)控系統(tǒng)是以微軟公司的windows98/nt/2000為工作平臺基于vc++6.0開發(fā)出來的。操作人員可向下位機發(fā)出各種控制命令,同時將生產(chǎn)過程中各種信息數(shù)據(jù)采集過來,反映在屏幕上的各種畫面中,使操作人員一目了然。整個系統(tǒng)軟件的設(shè)計分為人機界面的設(shè)計、數(shù)據(jù)庫的建立、實時監(jiān)控部分、上下位機通信、歷史數(shù)據(jù)查詢打印以及報警項目等六部分。
(1) 人機界面的設(shè)計
本系統(tǒng)提供了精美的顯示屏幕、漢字菜單、加速鍵、按鈕等標(biāo)準(zhǔn)的窗口界面對象,對一些重要參數(shù)的輸入提供了漢字提示的填表式輸入對話框,這樣就減少了輸入錯誤。
(2) 數(shù)據(jù)庫的建立
本系統(tǒng)采用access數(shù)據(jù)庫,所以在建立數(shù)據(jù)庫應(yīng)用程序之前,首先要使用odbc登錄一個確定的數(shù)據(jù)庫文件。登錄以后就可以在程序中對數(shù)據(jù)庫進(jìn)行讀寫操作。
(3) 實時監(jiān)視工藝流程
將整個工藝流程在監(jiān)控畫面上反映出來,該畫面以虛擬儀表的方式實時顯示現(xiàn)場的信息,具有直觀、動態(tài)、實時的效果。在畫面中,我們通過不同的顏色表明設(shè)備的各個狀態(tài),畫面流程隨工況的不同而動態(tài)變化,使人一目了然。畫面上標(biāo)有系統(tǒng)所有控件,在有模擬量輸入的控件(如陰床電導(dǎo)值、定時器所余時間)旁顯示即時值,供用戶監(jiān)控。還可對現(xiàn)場儀表進(jìn)行參數(shù)設(shè)置。在運行過程中發(fā)生異常情況時,操作員可直接在上位機按下急停按鈕,設(shè)備立即停止運行;操作員也可以在現(xiàn)場直接手動操作。
(4) 通信軟件的設(shè)計
可靠的通信是集散控制系統(tǒng)的命脈。為符合軟件開發(fā)的模塊化、結(jié)構(gòu)化以及系統(tǒng)通信的實時性要求,利用windows的動態(tài)鏈接庫技術(shù)開發(fā)了上、下位機間的通信軟件。為提高通信的可靠性,防止數(shù)據(jù)丟失,在上、下位機之間開始數(shù)據(jù)傳送前,均采用握手信號設(shè)置。上位機發(fā)送特征字符,下位機檢測、接受并回送同一字符,并由上位機進(jìn)行檢測,只有在應(yīng)答信號正確時才開始數(shù)據(jù)傳送,其流程圖如圖1所示。
圖1 上、下位機數(shù)據(jù)通訊流程圖
軟件編制如下:
do{//查詢can總線狀態(tài)(1為空閑,0為忙)
ret=can_inquiry_trans( );}
while(ret==0);
ret=can_ptrans((byte)address,sznumber,(lp -byte)szdata);//發(fā)送特征字符
if(ret==0)
{messagebox(“數(shù)據(jù)下裝錯誤!”,“數(shù)據(jù)下裝”,mb_ok|mb_iconstop);
return;}
do{//查詢有無下位機返回的數(shù)據(jù)(1為有數(shù)據(jù),0為無
//數(shù)據(jù))
ret=can _inquiry_rece( );}
while(ret==0);//如果有下位機返回的數(shù)據(jù),接收數(shù)據(jù)
ret=can_rece((lpbyte)&m_dtype,( lpbyte)&m_address,( lpbyte)&m_data);
if((ret==0fxx00)||(ret==0fxxff))
{ messagebox (“無數(shù)據(jù)包收到或數(shù)據(jù)包錯誤”,“接收錯誤”mb_ok|mb_iconstop);
return; }
for(i=0;i<4;i++) //數(shù)據(jù)包接收正確,處理接收的數(shù)據(jù)
db[250+i]=m_data[i]; //判斷回送的特征字符是否
//與無發(fā)送的特征字符相同
if(!(m_data[0]==0x61h&&m_data[1]==0x61h&&m_data[2]==m_ptime&& m_data[3]==m_ptemp))
{ messagebox(“下位機回送特征字符錯誤!”,“特征字符下裝”, mb_ok);
return; }
messagebox (“下位機回送特征字符正確!”,“在線參數(shù)下裝”, mb_ok);