摘 要: 針對當(dāng)前污水處理沒有實(shí)現(xiàn)自動(dòng)控制和污水處理工藝分散的特點(diǎn),設(shè)計(jì)了基于CAN總線結(jié)構(gòu)的污水處理集散控制系統(tǒng)(DCS)模型構(gòu)建一體化氧化溝的整個(gè)控制系統(tǒng)。用CAN總線對上位機(jī)與下位機(jī)之間進(jìn)行數(shù)據(jù)通信,解決了多臺設(shè)備監(jiān)控的實(shí)時(shí)傳輸。對CAN總線和DeviceNet協(xié)議作了詳細(xì)的解釋,并給出了DLL以及DeviceNet協(xié)議中控室的應(yīng)用程序。
關(guān)鍵詞: CAN總線;DeviceNet協(xié)議;DCS
當(dāng)今世界的水環(huán)境面臨兩大問題:水資源短缺和水污染加重。造成水污染的主要原因是工業(yè)廢水、農(nóng)田排水及城鄉(xiāng)生活污水向江河湖海大量排放,造成地面水和地下水水質(zhì)受到污染,嚴(yán)重制約了經(jīng)濟(jì)的發(fā)展并危害著人類的健康,因此,近年來各國對控制水污染越來越引起重視,全球都在加大和加快水污染治理的力度和速度。我國污水處理設(shè)備的制造水平和科技含量都比較低,本文對污水處理設(shè)備在線監(jiān)測系統(tǒng)設(shè)計(jì)方案進(jìn)行分析,并對其軟件開發(fā)提供了一定的指導(dǎo)作用[1-2]。
1 污水處理系統(tǒng)現(xiàn)狀
目前,對污水處理系統(tǒng)運(yùn)行狀況進(jìn)行在線監(jiān)測已成為發(fā)展趨勢,國外已開發(fā)出一些污水處理在線監(jiān)測系統(tǒng),并設(shè)計(jì)了一些基于神經(jīng)網(wǎng)絡(luò)、小波變化、專家系統(tǒng)等技術(shù)的診斷軟件?,F(xiàn)有的污水處理在線監(jiān)測系統(tǒng)設(shè)計(jì)方案大多采用傳統(tǒng)的上下位機(jī)結(jié)構(gòu)。下位機(jī)完成現(xiàn)場設(shè)備運(yùn)行狀況和污水處理狀態(tài)信號的在線監(jiān)測,大多采用工控機(jī)和單片機(jī)來實(shí)現(xiàn)。上位機(jī)負(fù)責(zé)污水處理狀態(tài)參數(shù)的監(jiān)測顯示、報(bào)警、故障診斷及識別等。這種結(jié)構(gòu)對少量設(shè)備的幾個(gè)狀態(tài)參數(shù)的檢測,實(shí)時(shí)處理效率較高,當(dāng)需要對多個(gè)設(shè)備進(jìn)行監(jiān)測時(shí),上下位機(jī)通信成為系統(tǒng)實(shí)時(shí)性和可靠性的瓶頸。另外,這些系統(tǒng)的在線監(jiān)測和故障診斷相對脫離,即各成一套系統(tǒng),即使有些系統(tǒng)將兩者合在一起,當(dāng)多個(gè)設(shè)備對多種診斷功能提出診斷請求時(shí),整個(gè)系統(tǒng)的工作效率會明顯降低,造成系統(tǒng)集成性差,不便于軟件升級和擴(kuò)充[2-3]。
2 污水處理軟件開發(fā)
為了便于用戶監(jiān)控和管理整個(gè)污水處理廠處理情況,本文開發(fā)了中控室通信與應(yīng)用控制程序,提供了良好的人機(jī)操作界面。ADAM5000系列CAN模塊與許多軟件兼容,DeviceNet和CANopen可用來配置系統(tǒng),建立在這兩個(gè)協(xié)議上的動(dòng)態(tài)鏈接庫DLL可用于Windows程序設(shè)計(jì)。PCL-841附帶軟件包提供了7個(gè)函數(shù),分別為初始化模塊CanInitHW()、退出模塊CanExitHW()、復(fù)位模塊CanReset()、配置模塊CanConfig()、設(shè)置正常運(yùn)行狀態(tài)模塊CanNormRun()、發(fā)送幀模塊CanSendMsg()及接收幀模塊CanReceiveMsg()。其源文件在Can841.h中,運(yùn)用這幾個(gè)函數(shù)和DeviceNet指令集就可構(gòu)成系統(tǒng)應(yīng)用軟件各個(gè)功能子程序,實(shí)現(xiàn)各個(gè)節(jié)點(diǎn)模塊間數(shù)據(jù)傳送數(shù)據(jù)采集和控制輸出。PC機(jī)與CAN適配卡的聯(lián)絡(luò)采用命令的通信協(xié)議,即“命令+參數(shù)”形式和“多主競爭的總線仲裁”方式實(shí)現(xiàn)。
適配卡設(shè)備驅(qū)動(dòng)程序、動(dòng)態(tài)連接庫和所要開發(fā)的Ring3層應(yīng)用程序的關(guān)系如圖1所示。
Ring3應(yīng)用層對CAN適配卡的訪問全部通過動(dòng)態(tài)鏈接庫實(shí)現(xiàn),這種訪問主要包括對CAN卡的初始化、發(fā)送報(bào)文、接收報(bào)文以及其他操作。CAN卡初始化除了對CAN適配卡本身的初始化外,還包括虛擬設(shè)備驅(qū)動(dòng)程序的動(dòng)態(tài)加載和初始化(設(shè)置中斷號和I/O地址)。
污水處理自控軟件的設(shè)計(jì)如圖2所示。
2.1 對CAN串口的操作
適配卡PCL-841上提供了兩個(gè)獨(dú)立的CAN串口,對該串口的操作有幾種方法可以使用,如直接使用Windows AP對該串口進(jìn)行操作,使用包裝好的控件(例如MSComm),也可以先把涉及到串口操作的WindowsAPI都封裝到一個(gè)類里面供開發(fā)使用。在本系統(tǒng)中,使用一個(gè)封裝好的串口類來對串口進(jìn)行操作。該類能支持多串口、多線程,并能在所有主流Windows系統(tǒng)下使用。serialPortEx類的用戶只需熟悉少數(shù)幾個(gè)公共成員函數(shù),就能輕易在自己的程序中加入串口的支持。必須注意的是該類并不支持串口通信協(xié)議,因?yàn)椴煌瑧?yīng)用場合下可能需要使用不同的協(xié)議,在本系統(tǒng)中使用的是DeviceNet協(xié)議。
2.2 實(shí)時(shí)運(yùn)行數(shù)據(jù)的讀取
監(jiān)控軟件中設(shè)備實(shí)時(shí)運(yùn)行狀態(tài)的顯示通過對設(shè)備實(shí)時(shí)運(yùn)行數(shù)據(jù)的讀取來實(shí)現(xiàn)。實(shí)時(shí)數(shù)據(jù)的讀取通過定時(shí)發(fā)送狀態(tài)請求(STATUS REQUEST)信號來實(shí)現(xiàn),定時(shí)器的間隔足夠小(例如1 s),那么每隔1 s監(jiān)控軟件都能夠?qū)⑵湎到y(tǒng)運(yùn)行狀態(tài)顯示和現(xiàn)場設(shè)備的運(yùn)行狀態(tài)同步,這就保證了監(jiān)控軟件中系統(tǒng)狀態(tài)顯示的實(shí)時(shí)性。如果定時(shí)器的精度要求不高、定時(shí)器的間隔不是太小,使用Windows定時(shí)器就可以了,一般用SetTimer()函數(shù)來啟動(dòng)一個(gè)定時(shí)器,用KillTimer()函數(shù)來結(jié)束一個(gè)定時(shí)器。對于污水處理系統(tǒng),通常每隔1 s左右讀取一次系統(tǒng)狀態(tài)信息就可以滿足系統(tǒng)實(shí)時(shí)性的要求,因此使用Windows定時(shí)器完全可以滿足要求。實(shí)時(shí)數(shù)據(jù)的讀取步驟是:在監(jiān)控軟件啟動(dòng)時(shí)打開定時(shí)器,每次定時(shí)器被觸發(fā)后,發(fā)送一條狀態(tài)請求信號;接收到回應(yīng)的狀態(tài)信號后,再更新系統(tǒng)運(yùn)行狀態(tài)的顯示,在下一次定時(shí)器被觸發(fā)之后,再發(fā)送一條狀態(tài)請求信號。不斷循環(huán),直到監(jiān)控軟件退出為止[2-7]。
3 編寫程序代碼
(1)使用Visual C++6.0的應(yīng)用程序向?qū)聞?chuàng)建一個(gè)基于文檔時(shí)間的“COMMSewageDlg”,修改標(biāo)題為“污水處理自動(dòng)控制系統(tǒng)”,其他設(shè)置全部接受默認(rèn)選項(xiàng)。
(2)為了使用DLL,必須將DLL驅(qū)動(dòng)函數(shù)庫的頭文件加入工程中。方法是:從Visual C++主菜單中選擇Project-Add to Project-Filesw…,在彈出的對話框中選擇driver.H,單擊確定即可。加入完該文件后,就可以看見DA&C常量定義、參數(shù)聲明和DLL函數(shù)定義等。這些函數(shù)都可以用在將要開發(fā)的應(yīng)用程序中。
(3)選擇Build菜單,選中Settings選項(xiàng),在彈出的對話框中選中Link頁,接著在類型欄選中Input,輸入adsapi32.lib于Object/library模塊中,然后單擊OK按鈕即可。
(4)將SerialPort.h、SerialPort.cpp兩個(gè)類文件復(fù)制到工程文件夾中,用Project-Add to Project-Files命令將上述兩個(gè)文件加入工程,并在COMMSewageView.h中將頭文件SerialPort.h說明:#include "SerialPort.h"。
(5) 人工添加消息響應(yīng)函數(shù)
首先在CCOMMsewageView. h中添加串口字符接收消息WM COMM RXCHAR(串口接收緩沖區(qū)內(nèi)有一個(gè)字符)的響應(yīng)函數(shù)聲明:
//{{AFXes MSG(COMMSewageView)
afx_msgLONG onCommunication(WPARAM ch,LPARAM port);
//}}AFXes MSG
然后在S CPortTestView.cpp文件中進(jìn)行WM_ COMM- RXCHAR消息映射:
BEGIN_MESSAGE_MAP(COMMSewageView,CView)
//{{AFX_ MSG MAP(COMMSewageView)
ON_MESSAGE(WM_COMM_RXCHAR, On Communication)
//}}AFX_ MSG MAP
END_ MESSAGE_ MAP()
接著在S CPortTestView. cpp中加入函數(shù)的實(shí)現(xiàn):
LONG
COMMSewageView::OnCommunication(WPARAM ch, LPARAM port){…};
(6)在視創(chuàng)建時(shí)初始化串口,首先利用C1assWizardr生成OnInitialUpdate()函數(shù);
(7)利用C1assWizard成COMMSewageView的時(shí)間消息WM_TIMER響應(yīng)函數(shù);
(8)在OnCommunication(WPARAM ch,LPARAM port)函數(shù)中進(jìn)行數(shù)據(jù)處理。
本文詳細(xì)分析了污水處理的總體設(shè)計(jì)方案,介紹了CAN總線能實(shí)時(shí)處理上位機(jī)與下位機(jī)的數(shù)據(jù)通信,對CAN串口操作、數(shù)據(jù)的讀取以及編寫程序代碼的步驟都進(jìn)行詳細(xì)的分析和介紹。本文的思想對我國的污水處理在線監(jiān)測系統(tǒng)的實(shí)時(shí)顯示和監(jiān)控起到一定的指導(dǎo)作用。
參考文獻(xiàn)
[1] 黃大貴.微機(jī)數(shù)控系統(tǒng)[M].成都:電子科技大學(xué)出版社,1996.
[2] 蒲旺.污水處理在線監(jiān)測系統(tǒng)及關(guān)鍵設(shè)備設(shè)計(jì)[D].成都:電子科技大學(xué),2004.
[3] 饒運(yùn)濤,鄒繼軍.現(xiàn)場總線CAN原理與應(yīng)用技術(shù)[M].北京:北京航空航天大學(xué)出版社,2003.
[4] 鄔寬明.CAN總線原理和應(yīng)用系統(tǒng)設(shè)計(jì)[M].北京:北京航空航天大學(xué)出版社,2002.
[5] 金以慧.過程控制[M].北京:清華大學(xué)出版社,2002.
[6] 李現(xiàn)勇.Visual c++串口通信技術(shù)與工程實(shí)踐[M].北京:人民郵電出版社,2003.
[7] 盧鴻權(quán),黃大貴等.基十CAN總線的一體化氧化溝DCS系統(tǒng)方案研究[J].電子科技大學(xué)學(xué)報(bào),2001,30(3).
[8] 鄔寬明.CAN總線系統(tǒng)設(shè)計(jì)中的幾個(gè)問題[J].電子技術(shù)應(yīng)用,1998,24(9).