《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于ARM的城市供水站分布式監(jiān)控系統(tǒng)
基于ARM的城市供水站分布式監(jiān)控系統(tǒng)
來(lái)源:微型機(jī)與應(yīng)用2010年第11期
邵明偉,王素珍
(青島理工大學(xué),山東 青島 266520)
摘要: 提出了一種基于嵌入式和TCP/IP協(xié)議的三層架構(gòu)城市供水站分布式監(jiān)控系統(tǒng)。分析了系統(tǒng)的結(jié)構(gòu),設(shè)計(jì)了該系統(tǒng)的硬件,完成了下位機(jī)數(shù)據(jù)采集程序、上位機(jī)程序以及系統(tǒng)通信的實(shí)現(xiàn)。由此設(shè)計(jì)出基于ARM(S3C2440A)的高速實(shí)時(shí)數(shù)據(jù)采集通信與顯示系統(tǒng),試驗(yàn)驗(yàn)證了該系統(tǒng)良好的可靠性和高速性,具有很好的經(jīng)濟(jì)性和實(shí)用價(jià)值。
Abstract:
Key words :

摘  要: 提出了一種基于嵌入式和TCP/IP協(xié)議的三層架構(gòu)城市供水站分布式監(jiān)控系統(tǒng)。分析了系統(tǒng)的結(jié)構(gòu),設(shè)計(jì)了該系統(tǒng)的硬件,完成了下位機(jī)數(shù)據(jù)采集程序、上位機(jī)程序以及系統(tǒng)通信的實(shí)現(xiàn)。由此設(shè)計(jì)出基于ARM(S3C2440A)的高速實(shí)時(shí)數(shù)據(jù)采集通信與顯示系統(tǒng),試驗(yàn)驗(yàn)證了該系統(tǒng)良好的可靠性和高速性,具有很好的經(jīng)濟(jì)性和實(shí)用價(jià)值。
關(guān)鍵詞: 分布式監(jiān)控;嵌入式;TCP/IP協(xié)議;ADO

    城市供水系統(tǒng)擔(dān)任著為整個(gè)社會(huì)提供安全的生活工業(yè)用水以及合理調(diào)度用水環(huán)節(jié)、保障用水合理性的重要職責(zé),是整個(gè)社會(huì)正常運(yùn)行的命脈。而各個(gè)供水站又是整個(gè)供水系統(tǒng)中最為核心的工作部分。因此,城市供水站監(jiān)控系統(tǒng)就顯得特別重要[1]。
    當(dāng)前城市供水站監(jiān)控系統(tǒng)多以單片機(jī)為核心,將外部傳感器數(shù)據(jù)進(jìn)行A/D轉(zhuǎn)換后接入單片機(jī),其精度可達(dá)12位,數(shù)據(jù)經(jīng)過(guò)處理后用點(diǎn)陣顯示屏顯示。單片機(jī)為8位中央處理器,這對(duì)于要求較高的領(lǐng)域顯得稍有不足。下位機(jī)與上位機(jī)之間多采用串口進(jìn)行通信。串行485接口采用差分方式傳輸,傳輸距離最大可達(dá)1 200 m,但此距離速率只能達(dá)到100 Kb/s,且485在任何時(shí)刻只允許一個(gè)下位機(jī)向上位機(jī)傳遞數(shù)據(jù),使得這種通信方式受到了一定限制。
    嵌入式處理器和以太網(wǎng)技術(shù)的飛速發(fā)展為這些問(wèn)題提供了解決的途徑。
    嵌入式處理器處理速度快、精度高、擴(kuò)展接口豐富,且具有良好的人機(jī)交互性。以太網(wǎng)通信技術(shù)則以其實(shí)時(shí)性強(qiáng)、通信速度快、兼容性強(qiáng)、網(wǎng)絡(luò)布線方便的優(yōu)點(diǎn),越來(lái)越受到人們的青睞。本文以ARM嵌入式處理器為核心,搭載WinCE嵌入式系統(tǒng),結(jié)合TCP/IP協(xié)議,設(shè)計(jì)出基于ARM和TCP/IP的城市供水站高速數(shù)據(jù)采集系統(tǒng)。并對(duì)下位機(jī)數(shù)據(jù)采集程序、上位機(jī)程序以及系統(tǒng)通信的實(shí)現(xiàn)進(jìn)行了詳細(xì)的敘述[2-3]。
1 系統(tǒng)的總體架構(gòu)及硬件設(shè)計(jì)
1.1 系統(tǒng)的總體架構(gòu)

    數(shù)據(jù)采集與監(jiān)控系統(tǒng)的下位機(jī)以ARM9系列的三星S3C2440A嵌入式處理器為核心,處理器的主頻400 MHz,最高達(dá)533 MHz,處理速度快,內(nèi)置8路10位A/D轉(zhuǎn)換器,最高轉(zhuǎn)換頻率為2.5 MHz,數(shù)據(jù)采集速度和精度都很高。在ARM9的基礎(chǔ)之上搭載WinCE嵌入式操作系統(tǒng),該操作系統(tǒng)具有與Windows XP相似的界面和操作,操作起來(lái)更加簡(jiǎn)便快捷;支持多系列的微型處理器,包括ARM系列,使下位機(jī)在硬件和軟件方面得到了完美的融合。下位機(jī)接收傳感器采集的數(shù)據(jù),然后通過(guò)TCP/IP協(xié)議與上位機(jī)進(jìn)行通信,上位機(jī)得到下位機(jī)傳來(lái)的數(shù)據(jù)后進(jìn)行數(shù)據(jù)存儲(chǔ)、顯示、報(bào)警操作。上位機(jī)進(jìn)行遠(yuǎn)程監(jiān)控并完成對(duì)各個(gè)下位機(jī)信息的匯總和分析處理等功能,系統(tǒng)結(jié)構(gòu)如圖1所示。

1.2 系統(tǒng)的硬件設(shè)計(jì)
    城市供水站分布式監(jiān)控系統(tǒng)要測(cè)量的物理量主要有各個(gè)供水站電機(jī)的電流、電壓、溫度等參數(shù),以及供水站的流量、進(jìn)出口壓力、水溫等水質(zhì)的參數(shù)。要根據(jù)各種物理量以及其所處的具體工作環(huán)境選取合適的傳感器[4]。
    由圖2可見(jiàn),下位機(jī)硬件以ARM9為核心,其內(nèi)置的A/D轉(zhuǎn)換接口用來(lái)接收外部傳感器的數(shù)據(jù),搭載的TFT顯示屏作為下位機(jī)的顯示,同時(shí)其各個(gè)擴(kuò)展接口可以提供其他的資源及為以后擴(kuò)展所用。

    傳感器采集的外部數(shù)據(jù)經(jīng)過(guò)放大、濾波等消除干擾的操作后接入ARM內(nèi)部A/D轉(zhuǎn)換器,在嵌入式系統(tǒng)中進(jìn)行處理,并在下位機(jī)顯示屏上進(jìn)行顯示和相應(yīng)地人機(jī)操作。下位機(jī)擴(kuò)展在板64 MB SDRAM內(nèi)存和在板128 MB Nand Flash存儲(chǔ)并支持32 GB的外部SD擴(kuò)展槽,滿(mǎn)足本機(jī)運(yùn)行以及存儲(chǔ)要求。擴(kuò)展的RJ-45接口作為與上位機(jī)進(jìn)行通信的接口。IIC總線以及其他接口作為擴(kuò)展和其他功能用。
    TCP/IP協(xié)議使用客戶(hù)端/服務(wù)器(C/S)模式進(jìn)行通信,其通信是點(diǎn)對(duì)點(diǎn)的,在網(wǎng)絡(luò)中幾乎可以實(shí)現(xiàn)無(wú)差錯(cuò)的數(shù)據(jù)傳輸,可靠性較高,速度快。由于與網(wǎng)絡(luò)相關(guān)的路由和網(wǎng)關(guān)等技術(shù)的發(fā)展,使得多路通信的實(shí)現(xiàn)變得簡(jiǎn)單方便。
    下位機(jī)ARM擴(kuò)展了網(wǎng)絡(luò)RJ-45網(wǎng)絡(luò)接口,使上下位機(jī)之間實(shí)現(xiàn)TCP/IP通信變得更加簡(jiǎn)單。
    每個(gè)供水站的下位機(jī)在將數(shù)據(jù)處理完畢之后,通過(guò)RJ-45網(wǎng)絡(luò)接口與上位機(jī)相連,多處下位機(jī)通過(guò)路由器接入網(wǎng)絡(luò),然后再與上位機(jī)進(jìn)行通信。其結(jié)構(gòu)圖如圖1。
2 供水站分布式監(jiān)控系統(tǒng)的軟件設(shè)計(jì)
    供水站分布式監(jiān)控系統(tǒng)的軟件設(shè)計(jì)包括下位機(jī)地址映射、下位機(jī)數(shù)據(jù)處理及顯示、數(shù)據(jù)通信以及上位機(jī)程序的實(shí)現(xiàn)。
2.1 下位機(jī)地址映射與實(shí)現(xiàn)
    下位機(jī)搭載WinCE操作系統(tǒng),ARM數(shù)據(jù)采集是通過(guò)GPIO來(lái)操作相應(yīng)的寄存器,WinCE系統(tǒng)則將GPIO的實(shí)地址映射到虛擬地址空間,通過(guò)對(duì)虛擬地址空間的操作來(lái)完成對(duì)GPIO及其他片內(nèi)資源的控制。要在WinCE中操作ARM中的GPIO,就必須按照BSP中的基地址找到相應(yīng)的虛擬地址。這就需要對(duì)其進(jìn)行地址映射。圖3為地址映射原理圖。

    地址映射的方法有2種:一是流驅(qū)動(dòng)方法,即在流驅(qū)動(dòng)中將物理地址進(jìn)行相應(yīng)地映射,將流驅(qū)動(dòng)添加到底層映像中來(lái)實(shí)現(xiàn)。另一種方法是在外部WinCE程序中將物理地址與虛擬地址進(jìn)行相應(yīng)地映射,只需對(duì)外部程序進(jìn)行操作,對(duì)內(nèi)核沒(méi)有影響,由于下位機(jī)數(shù)據(jù)采集部分并不復(fù)雜,所以采用第二種方法進(jìn)行實(shí)現(xiàn)。
    要實(shí)現(xiàn)地址映射,首先將所用到底層驅(qū)動(dòng)中的寄存器作為一個(gè)類(lèi)定義到WinCE嵌入式程序中去。然后把物理地址與虛擬地址用VirtualAlloc和VirtualCopy函數(shù)進(jìn)行映射操作。VirtualAlloc函數(shù)用于在當(dāng)前進(jìn)程的虛擬地址空間中保留或者提交空間,在保留時(shí)以64 KB為單位,提交時(shí)以4 KB為單位。VirtualCopy函數(shù)則用來(lái)綁定物理地址到靜態(tài)映射虛擬地址。VirtuaAlloc+VirtualCopy就可以將內(nèi)核到當(dāng)前進(jìn)程進(jìn)行映射,讓當(dāng)前程序找到對(duì)應(yīng)的虛擬地址[5-6]。
    把映射后的地址作為一個(gè)新類(lèi)進(jìn)行定義,就可對(duì)寄存器進(jìn)行操作,如圖3。
2.2 下位機(jī)數(shù)據(jù)處理及顯示
    下位機(jī)采集數(shù)據(jù)后采用數(shù)字模塊進(jìn)行顯示,當(dāng)數(shù)據(jù)超出上下限的時(shí)候,下位機(jī)中的蜂鳴器就會(huì)進(jìn)行報(bào)警,通知現(xiàn)場(chǎng)操作人員。
    數(shù)字顯示模塊采用重繪的形式,預(yù)先定義好相應(yīng)的數(shù)字顯示值,在接收到數(shù)據(jù)后對(duì)數(shù)字顯示模塊進(jìn)行相應(yīng)地重繪。數(shù)字顯示模塊作為一個(gè)插件加入到WinCE程序中,在主函數(shù)中調(diào)用模塊中的顯示函數(shù)來(lái)實(shí)現(xiàn)數(shù)字的顯示。
    下位機(jī)報(bào)警功能采用ARM擴(kuò)展的蜂鳴器實(shí)現(xiàn),蜂鳴器由PWM進(jìn)行控制。在S3C2440A中GPB0為控制PWM的寄存器,通過(guò)地址映射的方法對(duì)相應(yīng)的寄存器進(jìn)行操作。
    首先設(shè)置端口GPB0為T(mén)OUT0功能,然后設(shè)置預(yù)分頻和分割值,計(jì)數(shù)器的輸入時(shí)鐘(CCLK)頻率為:PCLK/(預(yù)分頻+1)/分割值。預(yù)分頻值和分割值分別由TCFG0、TCFG1來(lái)確定。接著設(shè)定初始值TCMPB3和TCNTB,由于計(jì)數(shù)器的輸入時(shí)鐘為PCLK/16/8;而rTCNTB0=(PCLK>>7)/freq;并且計(jì)數(shù)計(jì)到最大值的一半時(shí)發(fā)生翻轉(zhuǎn)。因?yàn)橛?jì)數(shù)的基值是由rTCMPB0設(shè)定為最大計(jì)數(shù)值的50%。最后是定時(shí)控制器的設(shè)定rTCON,TOUT0就產(chǎn)生頻率是rTCNTB0,占空比是50%的方波,蜂鳴器就可以被驅(qū)動(dòng)。當(dāng)數(shù)據(jù)超限時(shí)就調(diào)用此函數(shù)進(jìn)行蜂鳴器報(bào)警。
2.3 TCP/IP通信的實(shí)現(xiàn)
    上下位機(jī)之間采用客戶(hù)機(jī)/服務(wù)器(C/S)形式,下位機(jī)作為客戶(hù)機(jī)上位機(jī)作為服務(wù)器進(jìn)行通信,TCP/IP通信通過(guò)套接字(socket)來(lái)實(shí)現(xiàn)[7-8]。
    下位機(jī)利用套接字socket的connect函數(shù)向上位機(jī)(server)發(fā)送連接請(qǐng)求,當(dāng)連接成功之后,用send函數(shù)向上位機(jī)發(fā)送相應(yīng)的數(shù)據(jù),通信完成后關(guān)閉套接字。
    上位機(jī)通信部分則與下位機(jī)相互對(duì)應(yīng),用套接字socket的bind函數(shù)將套接字綁定到本地地址和端口上,并將套接字設(shè)置為監(jiān)聽(tīng)模式,用listen函數(shù)來(lái)準(zhǔn)備接收client的請(qǐng)求,當(dāng)用accept函數(shù)接收到連接請(qǐng)求后,調(diào)用recv函數(shù)來(lái)接收相應(yīng)的數(shù)據(jù),其流程如圖4所示。

    上位機(jī)作為服務(wù)器端,對(duì)設(shè)定的端口一直進(jìn)行監(jiān)控,因此運(yùn)用多線程進(jìn)行循環(huán)監(jiān)聽(tīng),直到相應(yīng)的操作使其停止。
2.4 上位機(jī)顯示報(bào)警及數(shù)據(jù)存儲(chǔ)實(shí)現(xiàn)
    上位機(jī)是整個(gè)系統(tǒng)監(jiān)視的核心,數(shù)據(jù)顯示為了直觀,采用動(dòng)態(tài)曲線顯示;并進(jìn)行聲音報(bào)警,采用數(shù)據(jù)庫(kù)將數(shù)據(jù)進(jìn)行存儲(chǔ),上位機(jī)系統(tǒng)顯示界面如圖5。

    上位機(jī)動(dòng)態(tài)曲線顯示利用畫(huà)刷、曲線等函數(shù)進(jìn)行繪制,當(dāng)數(shù)據(jù)接收進(jìn)來(lái)后繪制相應(yīng)的曲線,并且隨著數(shù)據(jù)的增多曲線進(jìn)行移動(dòng),使顯示的曲線一直為當(dāng)前一段時(shí)間的數(shù)據(jù)。報(bào)警的實(shí)現(xiàn)比較簡(jiǎn)單,只需在數(shù)據(jù)超限的時(shí)候調(diào)用Beep    蜂鳴函數(shù)即可。
    上位機(jī)的另一個(gè)主要的功能就是對(duì)數(shù)據(jù)進(jìn)行存儲(chǔ),以便在以后調(diào)用。數(shù)據(jù)存儲(chǔ)利用ADO對(duì)數(shù)據(jù)庫(kù)進(jìn)行訪問(wèn)。
    ADO是一個(gè)用于存取數(shù)據(jù)源的COM組件,是微軟最新的對(duì)象層次上的數(shù)據(jù)操作技術(shù),它為操作OLE DB數(shù)據(jù)源提供了一套高層次自動(dòng)化接口。從功能上來(lái)說(shuō),ADO又是一種OLE DB客戶(hù)程序,它不依賴(lài)于特定的OLE DB服務(wù)器反而支持所有的OLE DB服務(wù)提供者。通過(guò)這些OLE DB服務(wù)提供者,ADO支持客戶(hù)/服務(wù)器模式和基于Web的數(shù)據(jù)操作,尤其支持通過(guò)客戶(hù)/服務(wù)器模式或者基于Web模式訪問(wèn)微軟的SQL Server數(shù)據(jù)庫(kù)服務(wù)器[9]。
    用ADO的Connection、Command、Recordset等一系列關(guān)鍵對(duì)象,在數(shù)據(jù)庫(kù)中建立表格對(duì)當(dāng)前日期、時(shí)間以及傳感器數(shù)據(jù)進(jìn)行實(shí)時(shí)的自動(dòng)存儲(chǔ)。
    為保證程序的運(yùn)行狀況,運(yùn)用多線程實(shí)現(xiàn)對(duì)規(guī)定數(shù)據(jù)的儲(chǔ)存操作。
    本系統(tǒng)實(shí)現(xiàn)了對(duì)下位供水站數(shù)據(jù)的精確和高速的采集,并能將下位數(shù)據(jù)在嵌入式下位機(jī)系統(tǒng)中進(jìn)行顯示,實(shí)現(xiàn)在現(xiàn)場(chǎng)對(duì)數(shù)據(jù)進(jìn)行觀測(cè)和處理,同時(shí)又可以將現(xiàn)場(chǎng)的數(shù)據(jù)傳輸?shù)缴衔粰C(jī)中,將不同下位機(jī)中的數(shù)據(jù)傳輸?shù)缴衔粰C(jī)中進(jìn)行匯總和相應(yīng)的操作,實(shí)現(xiàn)了遠(yuǎn)程的監(jiān)控和管理。此系統(tǒng)對(duì)其他的數(shù)據(jù)采集和監(jiān)控系統(tǒng)來(lái)說(shuō)也具有很好的參考價(jià)值。
參考文獻(xiàn)
[1] 楊震.綜合管理與控制系統(tǒng)在城市供水調(diào)度系統(tǒng)中的應(yīng)用[J].產(chǎn)業(yè)與科技論壇,2008,7(6):113-114.
[2] 程言奎,李英.基于ARM9的高速數(shù)據(jù)采集系統(tǒng)的實(shí)現(xiàn)[J].現(xiàn)代電子技術(shù),2008,31(11):140-142.
[3] 何宗鍵.Windows CE嵌入式系統(tǒng)[M].北京:北京航空航天大學(xué)出版社,2006.
[4] 葉俊華,許雪梅,黃帥,等.基于ARM和WinCE的數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)[J].計(jì)算機(jī)工程與科學(xué),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:協(xié)議[M].北京:機(jī)械工業(yè)出版社,2003.
[8] 孫鑫,余安萍.VC++深入詳解[M].北京:電子工業(yè)出版社,2006.
[9] 沈煒,徐慧.Visual C++數(shù)據(jù)庫(kù)編程技術(shù)與實(shí)例[M].北京:人民郵電出版社,2005.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。