靳小巍
(山西農(nóng)業(yè)大學(xué) 軟件學(xué)院,山西 晉中 030801)
高速高性能單片機(jī)在網(wǎng)絡(luò)監(jiān)控中的應(yīng)用
靳小巍
(山西農(nóng)業(yè)大學(xué) 軟件學(xué)院,山西 晉中 030801)
當(dāng)前,網(wǎng)絡(luò)通信設(shè)備成本居高不下。為降低網(wǎng)絡(luò)實(shí)時(shí)監(jiān)控系統(tǒng)中傳輸設(shè)備成本,設(shè)計(jì)采用高速、高性能單片機(jī)作為網(wǎng)絡(luò)服務(wù)器,完成大數(shù)據(jù)量視頻圖像傳輸以及控制信號(hào)傳遞。搭建實(shí)驗(yàn)環(huán)境,編程實(shí)現(xiàn)前端視頻采集、圖像數(shù)據(jù)在網(wǎng)絡(luò)服務(wù)器中的傳輸以及后端接收、處理和顯示等代碼。為改進(jìn)和提高網(wǎng)絡(luò)圖像傳輸性能,使用單片機(jī)嵌入μC/OSII操作系統(tǒng)。實(shí)驗(yàn)結(jié)果表明,接收端視頻圖像顯示清晰,控制信號(hào)傳輸時(shí)延滿(mǎn)足使用要求。
單片機(jī);視頻采集;實(shí)時(shí)監(jiān)控;網(wǎng)絡(luò)傳輸
隨著單片機(jī)(MCU)處理速度的不斷提高,單片機(jī)在網(wǎng)絡(luò)中的應(yīng)用逐漸趨于復(fù)雜化[1]。本文主要研究美國(guó)Cygnal公司生產(chǎn)的8位高速、高性能單片機(jī)C8051F020在網(wǎng)絡(luò)中作為服務(wù)器的復(fù)雜應(yīng)用,以降低網(wǎng)絡(luò)通信費(fèi)用,主要包括實(shí)時(shí)網(wǎng)絡(luò)監(jiān)控和動(dòng)態(tài)圖像傳輸兩大部分。
C8051F020具有與8051兼容的微控制器內(nèi)核CIP-51[2],與MCS指令集完全兼容。除了具有標(biāo)準(zhǔn)8051的數(shù)字外設(shè)外,片內(nèi)還集成了數(shù)據(jù)采集和控制系統(tǒng)中常用的模擬部件和其他數(shù)字外設(shè)及功能部件。與傳統(tǒng)的MCS-51相比,C8051F020采用流水線結(jié)構(gòu),指令運(yùn)行速度大幅提高。在25 MHz外頻時(shí),可達(dá)最高處理速度25 MIPS。另外,采用3 V低電壓供電,使整個(gè)芯片的功耗大幅降低。
圖1為實(shí)驗(yàn)網(wǎng)絡(luò)環(huán)境構(gòu)成。
圖1 網(wǎng)絡(luò)環(huán)境構(gòu)成
客戶(hù)端由預(yù)裝了Windows XP操作系統(tǒng)的PC構(gòu)成。PC通過(guò)以太網(wǎng)連接線與單片機(jī)實(shí)驗(yàn)板相連,兩者構(gòu)成以太局域網(wǎng)絡(luò)。利用VC++ 6.0編程,通過(guò)WINSOCK網(wǎng)絡(luò)編程及圖像處理編程,可以實(shí)現(xiàn)客戶(hù)/服務(wù)器(C/S)模型下、建立在TCP/IP之上的客戶(hù)端功能,包括網(wǎng)絡(luò)監(jiān)控、請(qǐng)求網(wǎng)絡(luò)圖像傳輸及圖像數(shù)據(jù)接收和顯示功能[3]。
服務(wù)器端主要由單片機(jī)C8051F020、支持以太網(wǎng)絡(luò)收發(fā)的芯片RTL8019AS、支持RS232串行通信及外圍測(cè)控的芯片組成。RTL8019AS可以獨(dú)立完成網(wǎng)絡(luò)接發(fā)包工作,實(shí)現(xiàn)以太網(wǎng)載波監(jiān)聽(tīng)、沖突檢測(cè)、碰撞重傳等功能,并可以與MCU進(jìn)行數(shù)據(jù)交換。單片機(jī)C8051F020的程序存儲(chǔ)器中固化有按照uIP、用C語(yǔ)言編程實(shí)現(xiàn)的TCP/IP及ARP,還有應(yīng)用程序。它們分別完成建立在TCP/IP之上的網(wǎng)絡(luò)圖像數(shù)據(jù)傳輸和通過(guò)RS232接口的串行通信、外圍測(cè)控信號(hào)的采集、監(jiān)控等功能。
采用嵌入式C語(yǔ)言編程實(shí)現(xiàn)服務(wù)器功能。編譯環(huán)境為Keil μVision 4.0,采用J-Link調(diào)試盒下載程序和在線調(diào)試。
單片機(jī)外圍電路主要分成兩部分,分別完成圖像采集和測(cè)控功能。圖像采集部分由PC及攝像頭構(gòu)成,PC預(yù)裝Windows XP操作系統(tǒng)。利用VC++ 6.0編程,通過(guò)Microsoft提供的VFW(Video For Windows)視頻編程和串行通信編程,可以將采集到的圖像數(shù)據(jù)利用PC的RS232串行通信接口傳輸給單片機(jī)。單片機(jī)以中斷方式通過(guò)其RS232接口逐字節(jié)接收?qǐng)D像數(shù)據(jù)并存儲(chǔ)在其內(nèi)存xdata段。測(cè)控部分主要完成對(duì)外圍監(jiān)測(cè)信號(hào)的采集和上層控制命令的處理,如溫度測(cè)量、控制步進(jìn)電機(jī)轉(zhuǎn)動(dòng)和開(kāi)關(guān)閉合等。
上層監(jiān)控命令被封裝在網(wǎng)絡(luò)數(shù)據(jù)包中,按照以太網(wǎng)規(guī)范要求[4],從客戶(hù)端經(jīng)由局域網(wǎng)連接線送至服務(wù)器端的網(wǎng)絡(luò)芯片RTL8019AS,網(wǎng)絡(luò)芯片將數(shù)據(jù)接收并存儲(chǔ)在其內(nèi)部存儲(chǔ)器中。MCU以查詢(xún)(本實(shí)驗(yàn)采用)或中斷方式實(shí)現(xiàn)與網(wǎng)絡(luò)芯片的數(shù)據(jù)交換。這樣網(wǎng)絡(luò)數(shù)據(jù)包將被單片機(jī)接收并存放在后者內(nèi)存xdata段。按照TCP/IP逐層傳遞要求,單片機(jī)將數(shù)據(jù)包從下向上逐層上交,直到應(yīng)用層。應(yīng)用層識(shí)別監(jiān)控?cái)?shù)據(jù)類(lèi)型,并通過(guò)單片機(jī)外圍電路,實(shí)現(xiàn)監(jiān)控功能。當(dāng)需要向客戶(hù)端回傳測(cè)控信號(hào)時(shí),單片機(jī)將按照TCP/IP要求,對(duì)測(cè)控信號(hào)數(shù)據(jù)逐層向下打包傳遞。最后,按照以太網(wǎng)規(guī)范,通過(guò)網(wǎng)絡(luò)芯片RTL8019AS,傳送至客戶(hù)端。
與網(wǎng)絡(luò)監(jiān)控類(lèi)似,客戶(hù)端通過(guò)網(wǎng)絡(luò)發(fā)送圖像傳輸?shù)恼?qǐng)求。服務(wù)器端接收請(qǐng)求后,通知外圍電路開(kāi)始采集圖像。單片機(jī)通過(guò)其RS232串行通信接口接收外圍PC采集到的圖像數(shù)據(jù),并按照TCP/IP要求打包回傳給客戶(hù)端。
單片機(jī)外圍電路中的攝像頭和PC配合完成圖像采集工作。在PC正確安裝攝像頭驅(qū)動(dòng)程序后,利用VFW視頻編程,可以建立視頻捕獲窗口。攝像頭驅(qū)動(dòng)程序把每一幀圖像以位圖BMP格式寫(xiě)入視頻捕獲窗口提供的一個(gè)數(shù)據(jù)結(jié)構(gòu)中。每當(dāng)寫(xiě)完一幀圖像數(shù)據(jù)時(shí),視頻捕獲窗口自動(dòng)調(diào)用回調(diào)函數(shù)。在回調(diào)函數(shù)中,通過(guò)串行通信,可以把一幅圖像數(shù)據(jù)傳輸給單片機(jī)。由于單片機(jī)內(nèi)存容量的限制,傳輸可能是分批和分期進(jìn)行的。如果采用圖像壓縮,其壓縮工作也可以放在回調(diào)函數(shù)中完成,當(dāng)然,要先壓縮后傳輸。本實(shí)驗(yàn)未采用圖像壓縮技術(shù)。實(shí)際應(yīng)用中,圖像采集電路中的PC及攝像頭將被圖像傳感芯片和數(shù)字圖像處理芯片(DSP)代替。
每當(dāng)單片機(jī)接收到一定數(shù)量的圖像數(shù)據(jù)后,就開(kāi)始按照TCP/IP要求打包傳輸。一幅圖像可能要經(jīng)過(guò)多次打包和傳輸才能全部發(fā)送到網(wǎng)絡(luò)客戶(hù)端。采用TCP傳輸控制協(xié)議,保證了一幅圖像的每一個(gè)數(shù)據(jù)包均可以按序發(fā)送和接收。而且,當(dāng)發(fā)生網(wǎng)絡(luò)丟包時(shí),服務(wù)器端還可以重傳已丟失的數(shù)據(jù)包。
客戶(hù)端通過(guò)網(wǎng)絡(luò)向服務(wù)器端發(fā)送圖像傳輸?shù)恼?qǐng)求,來(lái)啟動(dòng)圖像傳輸?shù)娜^(guò)程。當(dāng)圖像數(shù)據(jù)以網(wǎng)絡(luò)數(shù)據(jù)包的形式順序逐幀(以太幀)由服務(wù)器端發(fā)送過(guò)來(lái)時(shí),客戶(hù)端僅需要把它們按照接收到的順序放在一個(gè)緩沖區(qū)中,并為此幅圖像配置BMP格式的圖像數(shù)據(jù)頭結(jié)構(gòu)。然后,利用Microsoft提供的圖像顯示函數(shù),就可以在客戶(hù)端顯示接收到的一幅圖像了。
由于圖像傳輸?shù)臄?shù)據(jù)量較大,使單片機(jī)在時(shí)間安排不合理時(shí),會(huì)無(wú)法承受重負(fù)而宕機(jī)。極端的表現(xiàn)是:連續(xù)長(zhǎng)時(shí)間的圖像數(shù)據(jù)接收和并傳輸,這時(shí)單片機(jī)無(wú)法及時(shí)響應(yīng)和處理實(shí)時(shí)網(wǎng)絡(luò)監(jiān)控信號(hào),使網(wǎng)絡(luò)監(jiān)控遲滯。因此,必須人為控制單片機(jī)圖像數(shù)據(jù)傳輸時(shí)間,以留出足夠時(shí)間響應(yīng)實(shí)時(shí)網(wǎng)絡(luò)監(jiān)控信號(hào)。
以實(shí)驗(yàn)實(shí)際情況分析,在未嵌入實(shí)時(shí)操作系統(tǒng)前,這種圖像數(shù)據(jù)傳輸可能要人為控制在50%機(jī)時(shí)以?xún)?nèi),甚至更少。實(shí)驗(yàn)中,串行通信速率為115 200 b/s,單片機(jī)串行接收1 KB的圖像數(shù)據(jù)用時(shí)近100 ms,打包并通過(guò)網(wǎng)絡(luò)傳輸1 KB的圖像數(shù)據(jù)用時(shí)近150 ms。當(dāng)測(cè)定的圖像數(shù)據(jù)傳輸率≤2 KB/s時(shí),機(jī)時(shí)占用近50%,并可保證實(shí)時(shí)網(wǎng)絡(luò)信號(hào)的正常處理。這時(shí),傳輸一幅160×120×12位的I420格式的彩色圖像,用時(shí)為15 s。
嵌入μC/OSII時(shí),要按照程序模塊的不同功能,建立不同的任務(wù)(TASK),并根據(jù)模塊功能的輕重緩急為每一任務(wù)設(shè)置不同的優(yōu)先級(jí)[5]。在實(shí)時(shí)監(jiān)控系統(tǒng)中,監(jiān)控信號(hào)的接收和響應(yīng)比圖像信號(hào)的傳輸具有更高的優(yōu)先級(jí)。在嵌入實(shí)時(shí)操作系統(tǒng)之前,必須人為控制單片機(jī)圖像傳輸?shù)臋C(jī)時(shí),以保證單片機(jī)對(duì)實(shí)時(shí)監(jiān)控信號(hào)的接收和響應(yīng)。在嵌入實(shí)時(shí)操作系統(tǒng)后,由操作系統(tǒng)來(lái)控制和分配圖像傳輸?shù)臋C(jī)時(shí),并可及時(shí)響應(yīng)實(shí)時(shí)監(jiān)控信號(hào)。經(jīng)實(shí)測(cè),在Tick設(shè)置為100 ms時(shí),圖像傳輸穩(wěn)定,實(shí)時(shí)信號(hào)延時(shí)在300 ms之內(nèi),滿(mǎn)足實(shí)際使用要求。
用單片機(jī)作為服務(wù)器,通過(guò)網(wǎng)絡(luò)實(shí)現(xiàn)遠(yuǎn)程實(shí)時(shí)監(jiān)控和大數(shù)據(jù)量圖像傳輸,可以極大地降低遠(yuǎn)程含圖像類(lèi)實(shí)時(shí)監(jiān)控的成本,同時(shí)減小服務(wù)器端設(shè)備體積,提高服務(wù)器端設(shè)備可靠性。研究結(jié)果已應(yīng)用于深圳某公司生產(chǎn)監(jiān)控系統(tǒng)中,并顯著降低了網(wǎng)絡(luò)通信成本。
[1] 劉歡,方華.基于指紋識(shí)別的實(shí)驗(yàn)室門(mén)禁管理系統(tǒng)設(shè)計(jì)[J].微型機(jī)與應(yīng)用,2016, 35(23):93-95, 99.
[2] 潘琢金,譯.C8051F020/1/2/3混合信號(hào)ISP FLASH微控制器數(shù)據(jù)手冊(cè)[EB/OL].[2017-03-26]http:∥wenku.baidu.com/view/0cef7393dd88d0d233d46a0e.
[3] 李子昌,李智,管四海.自動(dòng)裝載與視頻監(jiān)控遠(yuǎn)程控制系統(tǒng)[J].微型機(jī)與應(yīng)用,2017,36(1):1-3.
[4] BERKELEY L. TCP/IP詳解[M]. 北京:機(jī)械工業(yè)出版社, 2000.
[5] LABROSSE J J. 嵌入式實(shí)時(shí)操作系統(tǒng)μC/OSII[M]. 邵貝貝,譯.北京:北京航空航天大學(xué)出版社,2003.
Network application of high speed and high performance MCU
Jin Xiaowei
(School of Software, Shanxi Agriculture University, Jinzhong 030801, China)
In order to cut down the cost of equipments used in the network for real-time monitoring, high speed and high performance MCU is used as a Web server to transmit a large amount of data on image and control signal. Experimental environment is set up. Images are captured by program in the front end and relative data are transferred in the network under control. At the end, data are processed and original images are displayed. To improve transmission performance on images, an embedded operation system μC/OSII is used. Experimental results show that images are transmitted fluently and control signals are transmitted in real time.
MCU; image acquisition; real-time monitoring; network transmission
TP393.1
A
10.19358/j.issn.1674- 7720.2017.20.019
靳小巍.高速高性能單片機(jī)在網(wǎng)絡(luò)監(jiān)控中的應(yīng)用[J].微型機(jī)與應(yīng)用,2017,36(20):65-66,70.
2017-03-26)
靳小巍(1995-),女,本科在讀,主要研究方向:計(jì)算機(jī)嵌入式系統(tǒng)、網(wǎng)絡(luò)通信等。