摘 要: 提出了一種基于嵌入式和TCP/IP協議的三層架構城市供水站分布式監控系統。分析了系統的結構,設計了該系統的硬件,完成了下位機數據采集程序、上位機程序以及系統通信的實現。由此設計出基于ARM(S3C2440A)的高速實時數據采集通信與顯示系統,試驗驗證了該系統良好的可靠性和高速性,具有很好的經濟性和實用價值。
關鍵詞: 分布式監控;嵌入式;TCP/IP協議;ADO
城市供水系統擔任著為整個社會提供安全的生活工業用水以及合理調度用水環節、保障用水合理性的重要職責,是整個社會正常運行的命脈。而各個供水站又是整個供水系統中最為核心的工作部分。因此,城市供水站監控系統就顯得特別重要[1]。
當前城市供水站監控系統多以單片機為核心,將外部傳感器數據進行A/D轉換后接入單片機,其精度可達12位,數據經過處理后用點陣顯示屏顯示。單片機為8位中央處理器,這對于要求較高的領域顯得稍有不足。下位機與上位機之間多采用串口進行通信。串行485接口采用差分方式傳輸,傳輸距離最大可達1 200 m,但此距離速率只能達到100 Kb/s,且485在任何時刻只允許一個下位機向上位機傳遞數據,使得這種通信方式受到了一定限制。
嵌入式處理器和以太網技術的飛速發展為這些問題提供了解決的途徑。
嵌入式處理器處理速度快、精度高、擴展接口豐富,且具有良好的人機交互性。以太網通信技術則以其實時性強、通信速度快、兼容性強、網絡布線方便的優點,越來越受到人們的青睞。本文以ARM嵌入式處理器為核心,搭載WinCE嵌入式系統,結合TCP/IP協議,設計出基于ARM和TCP/IP的城市供水站高速數據采集系統。并對下位機數據采集程序、上位機程序以及系統通信的實現進行了詳細的敘述[2-3]。
1 系統的總體架構及硬件設計
1.1 系統的總體架構
數據采集與監控系統的下位機以ARM9系列的三星S3C2440A嵌入式處理器為核心,處理器的主頻400 MHz,最高達533 MHz,處理速度快,內置8路10位A/D轉換器,最高轉換頻率為2.5 MHz,數據采集速度和精度都很高。在ARM9的基礎之上搭載WinCE嵌入式操作系統,該操作系統具有與Windows XP相似的界面和操作,操作起來更加簡便快捷;支持多系列的微型處理器,包括ARM系列,使下位機在硬件和軟件方面得到了完美的融合。下位機接收傳感器采集的數據,然后通過TCP/IP協議與上位機進行通信,上位機得到下位機傳來的數據后進行數據存儲、顯示、報警操作。上位機進行遠程監控并完成對各個下位機信息的匯總和分析處理等功能,系統結構如圖1所示。
1.2 系統的硬件設計
城市供水站分布式監控系統要測量的物理量主要有各個供水站電機的電流、電壓、溫度等參數,以及供水站的流量、進出口壓力、水溫等水質的參數。要根據各種物理量以及其所處的具體工作環境選取合適的傳感器[4]。
由圖2可見,下位機硬件以ARM9為核心,其內置的A/D轉換接口用來接收外部傳感器的數據,搭載的TFT顯示屏作為下位機的顯示,同時其各個擴展接口可以提供其他的資源及為以后擴展所用。
傳感器采集的外部數據經過放大、濾波等消除干擾的操作后接入ARM內部A/D轉換器,在嵌入式系統中進行處理,并在下位機顯示屏上進行顯示和相應地人機操作。下位機擴展在板64 MB SDRAM內存和在板128 MB Nand Flash存儲并支持32 GB的外部SD擴展槽,滿足本機運行以及存儲要求。擴展的RJ-45接口作為與上位機進行通信的接口。IIC總線以及其他接口作為擴展和其他功能用。
TCP/IP協議使用客戶端/服務器(C/S)模式進行通信,其通信是點對點的,在網絡中幾乎可以實現無差錯的數據傳輸,可靠性較高,速度快。由于與網絡相關的路由和網關等技術的發展,使得多路通信的實現變得簡單方便。
下位機ARM擴展了網絡RJ-45網絡接口,使上下位機之間實現TCP/IP通信變得更加簡單。
每個供水站的下位機在將數據處理完畢之后,通過RJ-45網絡接口與上位機相連,多處下位機通過路由器接入網絡,然后再與上位機進行通信。其結構圖如圖1。
2 供水站分布式監控系統的軟件設計
供水站分布式監控系統的軟件設計包括下位機地址映射、下位機數據處理及顯示、數據通信以及上位機程序的實現。
2.1 下位機地址映射與實現
下位機搭載WinCE操作系統,ARM數據采集是通過GPIO來操作相應的寄存器,WinCE系統則將GPIO的實地址映射到虛擬地址空間,通過對虛擬地址空間的操作來完成對GPIO及其他片內資源的控制。要在WinCE中操作ARM中的GPIO,就必須按照BSP中的基地址找到相應的虛擬地址。這就需要對其進行地址映射。圖3為地址映射原理圖。
地址映射的方法有2種:一是流驅動方法,即在流驅動中將物理地址進行相應地映射,將流驅動添加到底層映像中來實現。另一種方法是在外部WinCE程序中將物理地址與虛擬地址進行相應地映射,只需對外部程序進行操作,對內核沒有影響,由于下位機數據采集部分并不復雜,所以采用第二種方法進行實現。
要實現地址映射,首先將所用到底層驅動中的寄存器作為一個類定義到WinCE嵌入式程序中去。然后把物理地址與虛擬地址用VirtualAlloc和VirtualCopy函數進行映射操作。VirtualAlloc函數用于在當前進程的虛擬地址空間中保留或者提交空間,在保留時以64 KB為單位,提交時以4 KB為單位。VirtualCopy函數則用來綁定物理地址到靜態映射虛擬地址。VirtuaAlloc+VirtualCopy就可以將內核到當前進程進行映射,讓當前程序找到對應的虛擬地址[5-6]。
把映射后的地址作為一個新類進行定義,就可對寄存器進行操作,如圖3。
2.2 下位機數據處理及顯示
下位機采集數據后采用數字模塊進行顯示,當數據超出上下限的時候,下位機中的蜂鳴器就會進行報警,通知現場操作人員。
數字顯示模塊采用重繪的形式,預先定義好相應的數字顯示值,在接收到數據后對數字顯示模塊進行相應地重繪。數字顯示模塊作為一個插件加入到WinCE程序中,在主函數中調用模塊中的顯示函數來實現數字的顯示。
下位機報警功能采用ARM擴展的蜂鳴器實現,蜂鳴器由PWM進行控制。在S3C2440A中GPB0為控制PWM的寄存器,通過地址映射的方法對相應的寄存器進行操作。
首先設置端口GPB0為TOUT0功能,然后設置預分頻和分割值,計數器的輸入時鐘(CCLK)頻率為:PCLK/(預分頻+1)/分割值。預分頻值和分割值分別由TCFG0、TCFG1來確定。接著設定初始值TCMPB3和TCNTB,由于計數器的輸入時鐘為PCLK/16/8;而rTCNTB0=(PCLK>>7)/freq;并且計數計到最大值的一半時發生翻轉。因為計數的基值是由rTCMPB0設定為最大計數值的50%。最后是定時控制器的設定rTCON,TOUT0就產生頻率是rTCNTB0,占空比是50%的方波,蜂鳴器就可以被驅動。當數據超限時就調用此函數進行蜂鳴器報警。
2.3 TCP/IP通信的實現
上下位機之間采用客戶機/服務器(C/S)形式,下位機作為客戶機上位機作為服務器進行通信,TCP/IP通信通過套接字(socket)來實現[7-8]。
下位機利用套接字socket的connect函數向上位機(server)發送連接請求,當連接成功之后,用send函數向上位機發送相應的數據,通信完成后關閉套接字。
上位機通信部分則與下位機相互對應,用套接字socket的bind函數將套接字綁定到本地地址和端口上,并將套接字設置為監聽模式,用listen函數來準備接收client的請求,當用accept函數接收到連接請求后,調用recv函數來接收相應的數據,其流程如圖4所示。
上位機作為服務器端,對設定的端口一直進行監控,因此運用多線程進行循環監聽,直到相應的操作使其停止。
2.4 上位機顯示報警及數據存儲實現
上位機是整個系統監視的核心,數據顯示為了直觀,采用動態曲線顯示;并進行聲音報警,采用數據庫將數據進行存儲,上位機系統顯示界面如圖5。
上位機動態曲線顯示利用畫刷、曲線等函數進行繪制,當數據接收進來后繪制相應的曲線,并且隨著數據的增多曲線進行移動,使顯示的曲線一直為當前一段時間的數據。報警的實現比較簡單,只需在數據超限的時候調用Beep 蜂鳴函數即可。
上位機的另一個主要的功能就是對數據進行存儲,以便在以后調用。數據存儲利用ADO對數據庫進行訪問。
ADO是一個用于存取數據源的COM組件,是微軟最新的對象層次上的數據操作技術,它為操作OLE DB數據源提供了一套高層次自動化接口。從功能上來說,ADO又是一種OLE DB客戶程序,它不依賴于特定的OLE DB服務器反而支持所有的OLE DB服務提供者。通過這些OLE DB服務提供者,ADO支持客戶/服務器模式和基于Web的數據操作,尤其支持通過客戶/服務器模式或者基于Web模式訪問微軟的SQL Server數據庫服務器[9]。
用ADO的Connection、Command、Recordset等一系列關鍵對象,在數據庫中建立表格對當前日期、時間以及傳感器數據進行實時的自動存儲。
為保證程序的運行狀況,運用多線程實現對規定數據的儲存操作。
本系統實現了對下位供水站數據的精確和高速的采集,并能將下位數據在嵌入式下位機系統中進行顯示,實現在現場對數據進行觀測和處理,同時又可以將現場的數據傳輸到上位機中,將不同下位機中的數據傳輸到上位機中進行匯總和相應的操作,實現了遠程的監控和管理。此系統對其他的數據采集和監控系統來說也具有很好的參考價值。
參考文獻
[1] 楊震.綜合管理與控制系統在城市供水調度系統中的應用[J].產業與科技論壇,2008,7(6):113-114.
[2] 程言奎,李英.基于ARM9的高速數據采集系統的實現[J].現代電子技術,2008,31(11):140-142.
[3] 何宗鍵.Windows CE嵌入式系統[M].北京:北京航空航天大學出版社,2006.
[4] 葉俊華,許雪梅,黃帥,等.基于ARM和WinCE的數據采集系統設計[J].計算機工程與科學,2009,31(6),136-141.
[5] GRATTAN N, BRAIN M. Windows CE 3.0 Application Programming[M]. Microsoft Technologies series,2001.
[6] FLETCHER N H, ROSSING T D. The physics of musical instruments[M]. 2nd ed. Berlin: Springer-Verlag,1998.
[7] 史蒂文斯.TCP/IP詳解卷1:協議[M].北京:機械工業出版社,2003.
[8] 孫鑫,余安萍.VC++深入詳解[M].北京:電子工業出版社,2006.
[9] 沈煒,徐慧.Visual C++數據庫編程技術與實例[M].北京:人民郵電出版社,2005.