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