1 引言
本文介紹的就是某自來水公司供水自動監(jiān)控及調(diào)度系統(tǒng)" title="調(diào)度系統(tǒng)">調(diào)度系統(tǒng)的設(shè)計與實現(xiàn)方法。自來水是保障城市經(jīng)濟(jì)發(fā)展和人民生活的重要基礎(chǔ)設(shè)施,是保障城市繁榮發(fā)展、人民生活以及發(fā)展國民經(jīng)濟(jì)不可缺少的先決條件。從另一個方面來說,我國是一個高度缺水的發(fā)展中國家,隨著改革開放的不斷深入和發(fā)展以及人口數(shù)量的不斷增長,無論從自來水產(chǎn)量和質(zhì)量上,社會都對城市供水提供了更高的要求。而實現(xiàn)水廠與供水調(diào)度系統(tǒng)的自動化,是保證自來水安全、優(yōu)質(zhì)與供水生產(chǎn)調(diào)度的科學(xué)性、高效性以及合理性的有效措施,現(xiàn)在已經(jīng)逐步發(fā)展為以提高供水質(zhì)量,提高供水系統(tǒng)安全,降低人耗、物耗、水耗這一綜合效益為目標(biāo)。為了達(dá)到這一目標(biāo),要求供水調(diào)度系統(tǒng)從設(shè)計和選型上就必須考慮到水廠、管網(wǎng)和管理信息系統(tǒng)的一體化和配套完整性。
2 系統(tǒng)功能分析與設(shè)計
2.1項目背景
此自來水公司現(xiàn)擁有自來水廠三個,加壓站兩個及遍布全城的供水管網(wǎng)。自來水廠擬完成絕大部分工藝參數(shù)的自動檢測及部分參數(shù)的自動控制,取水、制水及送水實現(xiàn)自動程控。水廠參數(shù)應(yīng)實時傳送至公司總調(diào)度室,并能接收并執(zhí)行總調(diào)度室指令。加壓站及管網(wǎng)全部納入系統(tǒng),加壓站實現(xiàn)自動化,管網(wǎng)全部壓力、流量等數(shù)據(jù)實時傳送至總調(diào)度室。
2.2調(diào)度控制中心的基本功能
(1) 數(shù)據(jù)通訊采集:接收水廠和管網(wǎng)測壓點的壓力、流量、泵運行參數(shù)、耗電量等信息。對采集的數(shù)據(jù)進(jìn)行統(tǒng)計和處理,提供對整個系統(tǒng)的網(wǎng)絡(luò)數(shù)據(jù)庫管理。
(2) 畫面顯示:廠站、管網(wǎng)的動態(tài)運行圖、實時趨勢圖、棒圖、運行報表、及其其他自定義畫面。還可顯示日期、時間、報警、數(shù)據(jù)、工藝流程、設(shè)備狀態(tài)、趨勢、操作指導(dǎo)、調(diào)度指令等。
(3) 報警管理:提供全方位的報警功能,可在多種畫面中以直觀方式通知調(diào)度人員系統(tǒng)發(fā)生異常。不同級別的報警可在所有操作站上接收,報警沒有確認(rèn)時保持閃光。報警內(nèi)容有:實際值和偏差值報警、給定值限值報警、系統(tǒng)自診斷報警、識別變送器運行在4~20mA范圍以外的報警、輸出限幅報警、電源故障報警、模板故障報警、通信故障報警等等。
(4) 統(tǒng)計計算和分析:系統(tǒng)能對供水量、供水總量等進(jìn)行統(tǒng)計計算,并具有數(shù)據(jù)存儲、查詢、建帳等功能,供管理人員進(jìn)行分析。
根據(jù)以上功能分析,可以將系統(tǒng)設(shè)計為C/S(客戶/服務(wù)器)模式,各水廠和加壓站設(shè)立下位機(jī),負(fù)責(zé)預(yù)處理現(xiàn)場測量點傳感器采集的數(shù)據(jù),然后通過RS-232將預(yù)處理數(shù)據(jù)傳送給監(jiān)控中心的上位機(jī)" title="上位機(jī)">上位機(jī)。上位機(jī)對接收到的數(shù)據(jù)進(jìn)一步判斷,存在越限報警的便啟動報警處理方案,并對采集的所有數(shù)據(jù)分類存儲到數(shù)據(jù)庫中。圖1是監(jiān)控網(wǎng)絡(luò)的組成結(jié)構(gòu)示意圖。
3 串口" title="串口">串口通信的實現(xiàn)
各測量點測得的數(shù)據(jù)的是通過RS-232標(biāo)準(zhǔn)串行接口傳送到監(jiān)控中心的,因為RS-232驅(qū)動能力太低,所以使用了MODEM作為中繼器。監(jiān)控中心讀取到這些數(shù)據(jù)之后,再根據(jù)預(yù)定義好的規(guī)約分析數(shù)據(jù),做出報警判斷及進(jìn)行數(shù)據(jù)存儲。監(jiān)控中心軟件運行在Windows 2000操作系統(tǒng)下,為了方便對數(shù)據(jù)庫編程,可以采用Delphi(Windows平臺下的可視化軟件開發(fā)工具)作為監(jiān)控軟件的開發(fā)工具。在Delphi中編寫串口讀寫程序的方法基本可以分為兩種,一是采用封裝了串口讀寫方法的控件,二是直接調(diào)用Win32 API。使用已有控件可以提高編程效率,只需要幾條簡潔的語句就可以實現(xiàn)串口的讀寫,但是靈活性太差,不能完全按照個人意愿讀寫串口,并且有些控件的健壯性也沒有得到充分的驗證,所以本系統(tǒng)程序編寫采用Win32 API(應(yīng)用編程適配器:Windows的32位應(yīng)用程序編程接口,一組調(diào)用操作系統(tǒng)或其他程序而獲得訪問服務(wù)的例行程序)完成。
API函數(shù)不僅提供了打開和讀寫通訊端口的操作方法,還提供了名目繁多的函數(shù)以支持對串行通訊的各種操作。下面以處理串口接收數(shù)據(jù)的子程序為例介紹一下本系統(tǒng)的串口通信" title="串口通信">串口通信程序。接收消息之前應(yīng)該先用clearcommerror函數(shù)處理串口通信錯誤并報告當(dāng)前串口狀態(tài),如果出現(xiàn)錯誤向用戶發(fā)出提示并退出此子程序,如果沒有錯誤就再判斷串口接收的數(shù)據(jù)數(shù)是否超過預(yù)定以緩沖區(qū)的大小。限于篇幅,本文略過這段語句,直接給出讀取并處理數(shù)據(jù)的主體程序,并給出程序的注釋。
procedure TMainForm.WMCOMMNOTIFY(var message:tmessage);
var
Temp : string; inputbuffer: array[0..4000>of Char;
nBytesRead, dwError:DWORD ; showReceive:string;
commstate:TCOMSTAT;//存放串口狀態(tài)的結(jié)構(gòu)體
begin
//略過預(yù)處理程序……
//使用readfile函數(shù)讀取串口數(shù)據(jù);在win32 API中使用文件操作函數(shù)操作串口
if(not readfile(hcomm,inputbuffer,commstate.cbInQue,nbytesread,@read_os)) then
begin
if(dwerror<>0)and(dwerror<>error_io_pending) then
begin//讀取串口錯誤,則提示用戶,并關(guān)閉所有相關(guān)句柄
messagebox(0,'readfile error','notice',mb_ok);
stop:=true;
closehandle(read_os.hEvent);
closehandle(post_event);
closehandle(hcomm);
exit;
end
else
begin
waitforsingleobject(hcomm,infinite);
getoverlappedresult(hcomm,read_os,nbytesread,false);
end;
end;
if nbytesread>0 then
begin
temp:=system.copy(inputbuffer,1,commstate.cbinque);
receivebuffer:=receivebuffer+temp;
buffer:=receivebuffer;
if (temp[length(temp)>=#13)or(temp[length(temp)>=#10)or (length(receivebuffer)>128)
//上位機(jī)和下位機(jī)定義通信規(guī)約為以ASCII的13或者10作為幀結(jié)束標(biāo)志
then
begin
//若處于顯示接收內(nèi)容模式,顯示接收到的內(nèi)容
if NShowRecerve.Checked then
begin
showreceive:=buffer;
StatusBar1.Panels[2>.Text:='接受內(nèi)容:'+showreceive;
end
else
StatusBar1.Panels[2>.Text:='接受內(nèi)容:';
//分析故障信息
if temp[length(temp)>=#10 then
failureinfoparse(buffer);//條用故障處理子程序,此子程序分析故障類型,判斷故障設(shè)備,并把故障信息記錄到數(shù)據(jù)庫
receivebuffer:='';//處理完一幀數(shù)據(jù)就清空緩沖區(qū),為下一次讀取做準(zhǔn)備
end; end; end;
setevent(post_event);
end;
上位機(jī)的圖形化監(jiān)控軟件完成調(diào)度控制中心的基本功能。上位機(jī)網(wǎng)絡(luò)由一個應(yīng)用程序服務(wù)器、兩個監(jiān)控工作站、一個模擬屏控制機(jī)和數(shù)據(jù)庫服務(wù)器組成。上述串口讀寫程序就工作在應(yīng)用程序服務(wù)器上。
4 結(jié)束語
本文介紹了一個供水自動監(jiān)控及調(diào)度系統(tǒng)的設(shè)計和實現(xiàn),采用了分布式控制結(jié)構(gòu),使系統(tǒng)處理事故和進(jìn)行調(diào)度的效率有所改善和提高。但因為考慮設(shè)計成本等因素,這種設(shè)計方案并不是最優(yōu)的,在以后的實踐研究中會做出進(jìn)一步改進(jìn)。