魏學(xué)良,李卓然,于聰智
(中國石油大學(xué)(北京)地球物理與信息工程學(xué)院 北京 102249)
智慧油田中嵌入式RTU應(yīng)用設(shè)計(jì)
魏學(xué)良,李卓然,于聰智
(中國石油大學(xué)(北京)地球物理與信息工程學(xué)院 北京102249)
在現(xiàn)今油田進(jìn)行智能化、數(shù)字化技術(shù)改造的背景下,本文通過運(yùn)用嵌入式技術(shù)和網(wǎng)絡(luò)通信技術(shù)并通過在實(shí)驗(yàn)室及油田現(xiàn)場進(jìn)行實(shí)物實(shí)驗(yàn),提出了嵌入式技術(shù)的RTU系統(tǒng)總體設(shè)計(jì)方案,包含硬件支撐平臺(tái)設(shè)計(jì)和軟件設(shè)計(jì)。硬件支撐平臺(tái)以三星公司的S3C2440的arm為核心處理器并外接功能接口芯片;嵌入式Linux多任務(wù)操作系統(tǒng)作為系統(tǒng)軟件平臺(tái)并在此系統(tǒng)平臺(tái)上開發(fā)應(yīng)用程序,實(shí)現(xiàn)嵌入式RTU的設(shè)計(jì)。目前該系統(tǒng)原型機(jī)已經(jīng)實(shí)現(xiàn),通過現(xiàn)場實(shí)驗(yàn)表明,本系統(tǒng)性能穩(wěn)定,各項(xiàng)指標(biāo)均達(dá)到要求。
RTU;ZigBee;物聯(lián)網(wǎng);嵌入式
智慧油田建設(shè)是依托物聯(lián)網(wǎng)應(yīng)用系統(tǒng)、結(jié)合智能巡檢和自動(dòng)感知、數(shù)據(jù)融合技術(shù)基礎(chǔ)上,探索建立組織運(yùn)維、層級(jí)簡化的現(xiàn)代油田管理新模式,以實(shí)現(xiàn)油田管理系統(tǒng)可靠、優(yōu)質(zhì)、高效運(yùn)行。系統(tǒng)包含3個(gè)層次的內(nèi)容:感知層、傳輸層、應(yīng)用層。
其中:感知層:主要包括油田現(xiàn)場應(yīng)用的各類傳感器和攝像探頭等,例如溫度、壓力、載荷、流量傳感器等儀表設(shè)備,通過這些設(shè)備采集油田現(xiàn)場數(shù)據(jù),通過攝像探頭捕捉現(xiàn)場視頻信息,通過傳輸層的RTU將數(shù)據(jù)直接傳到控制中心;
應(yīng)用層主要是油田專業(yè)軟件平臺(tái),它主要是根據(jù)采集數(shù)據(jù)和數(shù)據(jù)庫歷史數(shù)據(jù)對(duì)油水井工況進(jìn)行綜合分析優(yōu)化。
數(shù)據(jù)傳輸層:是連接應(yīng)用層和感知層的關(guān)鍵環(huán)節(jié)。由傳輸網(wǎng)絡(luò)和支持網(wǎng)絡(luò)的數(shù)據(jù)采集傳輸終端(RTU)構(gòu)成。
根據(jù)油田現(xiàn)場工作需求,傳輸層中的RTU(數(shù)據(jù)傳輸終端)主要具備如下功能:
1)支持多接口傳感器接入功能:
①ZIGBEE無線儀表接入,溫度、壓力、電量、功圖采集等儀表通過ZIGBEE無線方式接入網(wǎng)關(guān)與網(wǎng)關(guān)通訊。
②RS485有線儀表,RS485作為備用有線儀表接入口,用于車間內(nèi)有線儀表與網(wǎng)關(guān)通訊。
③USB攝像頭接入,視頻監(jiān)控采用了中微星星光攝像頭,該攝像頭以USB方式接入網(wǎng)關(guān)。
2)協(xié)議轉(zhuǎn)換與數(shù)據(jù)管理
傳感器數(shù)據(jù)以ZIGBEE協(xié)議、RS485協(xié)議、USB協(xié)議接入RTU,把底層的數(shù)據(jù)進(jìn)行標(biāo)準(zhǔn)化統(tǒng)一封裝、確保不同的傳感器網(wǎng)絡(luò)協(xié)議可以轉(zhuǎn)換成統(tǒng)一的命令或數(shù)據(jù);并把頂層向下發(fā)送的數(shù)據(jù)壓縮包解碼為傳感器子網(wǎng)協(xié)議可辨識(shí)的命令[1]。
3)RTU具有儀表數(shù)據(jù)進(jìn)行備份功能。
設(shè)計(jì)中的基于嵌入式RTU主要實(shí)現(xiàn)包括高速的數(shù)據(jù)通訊、油井現(xiàn)場視頻監(jiān)控、現(xiàn)場無線儀表信息采集(溫度、壓力、電量、功圖等數(shù)據(jù))和抽油機(jī)控制等功能。
考慮到物聯(lián)網(wǎng)網(wǎng)關(guān)的復(fù)雜功能和對(duì)硬件平臺(tái)處理速度需求,硬件平臺(tái)的核心處理器選用了三星的 S3C2440 (ARM920T)32位處理器[2]??紤]到網(wǎng)關(guān)系統(tǒng)的后期可擴(kuò)展和升級(jí)維護(hù)成本,硬件設(shè)計(jì)上根據(jù)功能進(jìn)行了模塊劃分,分成以下幾個(gè)功能模塊分別實(shí)現(xiàn),如圖1所示。
圖1 RTU系統(tǒng)硬件結(jié)構(gòu)框架Fig.1 The hardware architecture of RTU system
1)核心處理器模塊,負(fù)責(zé)對(duì)整個(gè)系統(tǒng)的資源進(jìn)行調(diào)度,對(duì)網(wǎng)關(guān)上行、下行的數(shù)據(jù)進(jìn)行解析處理并對(duì)上下兩層的協(xié)議進(jìn)行轉(zhuǎn)換。本設(shè)計(jì)采用三星的S3C2440(ARM920T核)處理器,核心處理器上運(yùn)行物聯(lián)網(wǎng)網(wǎng)關(guān)嵌入式Linux系統(tǒng)和網(wǎng)關(guān)應(yīng)用服務(wù)程序,完成網(wǎng)關(guān)的各項(xiàng)服務(wù)和管理功能,例如,包括數(shù)據(jù)接收、協(xié)議查詢、協(xié)議部署和協(xié)議轉(zhuǎn)換等功能。
2)傳感器接入模塊可以允許接入多種類型的傳感器,目的在于保證網(wǎng)關(guān)接入節(jié)點(diǎn)的兼容性??山尤肽K類型,如ZIGBEE模塊、RS485模塊和USB攝像頭等。
3)TCP/IP網(wǎng)絡(luò)模塊和3G網(wǎng)絡(luò)模塊的功能是實(shí)現(xiàn)網(wǎng)關(guān)與互聯(lián)網(wǎng)公共網(wǎng)絡(luò)Internet的網(wǎng)絡(luò)通信。網(wǎng)關(guān)通過網(wǎng)絡(luò)模塊將傳感器子網(wǎng)數(shù)據(jù)(包括無線儀表數(shù)據(jù)和USB攝像頭視頻數(shù)據(jù))通過Ethernet或者3G網(wǎng)絡(luò)發(fā)送到井場中心控制室,便于油田監(jiān)控人員實(shí)時(shí)了解油井現(xiàn)場各個(gè)儀表的數(shù)據(jù)和現(xiàn)場周圍環(huán)境狀況。
4)存儲(chǔ)模塊主要包括非易失介質(zhì)NANDFLASH和易失介質(zhì)SDRAM兩種存儲(chǔ)設(shè)備。NANDFLASH作為非易失性設(shè)備,掉電信息不丟,主要用來存儲(chǔ)操作系統(tǒng)引導(dǎo)程Bootloader、Linux內(nèi)核和根文件系統(tǒng)。SDRAM作為高速隨機(jī)訪問存儲(chǔ)(RAM)單元,提供給網(wǎng)關(guān)嵌入式Linux操作系統(tǒng)和網(wǎng)關(guān)服務(wù)程序運(yùn)行所需的內(nèi)存空間[3]。
RTU硬件平臺(tái)搭好之后,必須通過移植操作系統(tǒng)內(nèi)核和根文件系統(tǒng)給網(wǎng)關(guān)系統(tǒng)注入了靈魂。根據(jù)油田現(xiàn)場對(duì)RTU系統(tǒng)處理速度、實(shí)時(shí)性、可靠性都有很高的要求,嵌入式操作系統(tǒng)選定嵌入式Linux2.6.32作為物聯(lián)網(wǎng)網(wǎng)關(guān)軟件平臺(tái)操作系統(tǒng)。本設(shè)計(jì)的物聯(lián)網(wǎng)網(wǎng)關(guān)軟件平臺(tái)架構(gòu)設(shè)計(jì)如圖2所示。
在RTU硬件平臺(tái)上搭建基于嵌入式Linux的軟件平臺(tái)及在平臺(tái)上設(shè)計(jì)應(yīng)用程序。具體包括啟動(dòng)程序和內(nèi)核的分析與移植、設(shè)計(jì)根文件系統(tǒng)和驅(qū)動(dòng)程序開發(fā)環(huán)節(jié)。
在啟動(dòng)階段,從文件結(jié)構(gòu)歸納出Linux與處理器相關(guān)的一套接口文件,實(shí)現(xiàn)嵌入式內(nèi)核初始化,保證Linux在不同平臺(tái)上的移植;根文件是Linux系統(tǒng)不可缺少的組件,是系統(tǒng)內(nèi)核與應(yīng)用程序之間的橋梁。在Linux內(nèi)核初始化完成后,完成根文件系統(tǒng)的掛載,系統(tǒng)通過根文件系統(tǒng)中的啟動(dòng)腳本和其他配置腳本文件完成應(yīng)用程序的初始化。
圖2 嵌入式物聯(lián)網(wǎng)網(wǎng)關(guān)軟件架構(gòu)Fig.2 Embedded IOT gateway software structure
在設(shè)備驅(qū)動(dòng)階段,開發(fā)兼容IPV6/IPV4的網(wǎng)絡(luò)硬件設(shè)備驅(qū)動(dòng)程序、開發(fā)CAN總線、RS485總線驅(qū)動(dòng)程序、基于FLASH ROM及SD卡等存儲(chǔ)設(shè)備的應(yīng)用程序設(shè)計(jì)?;谇度胧郊夹g(shù)RTU設(shè)計(jì)中,根據(jù)實(shí)際功能,系統(tǒng)所需要的硬件設(shè)備驅(qū)動(dòng)如下:EM770W模塊的USB驅(qū)動(dòng)、ZigBee模塊的串口驅(qū)動(dòng)、USB攝像頭驅(qū)動(dòng)和網(wǎng)卡DM9000驅(qū)動(dòng)等。如下以3G模塊USB驅(qū)動(dòng)程序?yàn)槔?/p>
1)實(shí)際的Linux內(nèi)核下USB相關(guān)配置:
配置完畢后,選擇EXIT并保存配置信息。然后在宿主Ubuntu下輸入make zImage命令對(duì)內(nèi)核進(jìn)行編譯并等待內(nèi)核編譯完成。編譯生成的zImage文件在內(nèi)核源代碼目錄arch/ arm/boot目錄下。
2)USB接口的3G模塊EM770W是通過USB轉(zhuǎn)串口方式驅(qū)動(dòng)的。在前面Linux內(nèi)核選項(xiàng)配置USB設(shè)備驅(qū)動(dòng)的時(shí)候,已經(jīng)選擇了對(duì)USB轉(zhuǎn)串口支持(USB Serial Convertersupport)。
3)網(wǎng)關(guān)系統(tǒng)啟動(dòng)后,將USB 3G網(wǎng)卡插入網(wǎng)關(guān)USB主機(jī)接口,調(diào)試終端打印信息如下所示:
可以看出,3G網(wǎng)卡設(shè)備驅(qū)動(dòng)已成功加載,設(shè)備廠商號(hào)是0x12d1,產(chǎn)品號(hào)是 0x1404,設(shè)備名稱是 HUAWEI MOBILE WCDMA EM770W。另外,設(shè)備驅(qū)動(dòng)將該3G網(wǎng)卡映射為ttyUSB0-ttyUSB5共6個(gè)ttyUSB類型的設(shè)備,其中ttyUSB0是3G網(wǎng)卡控制所用到的主要設(shè)備。
通過移植操作系統(tǒng)內(nèi)核和根文件系統(tǒng)給網(wǎng)關(guān)系統(tǒng)注入了靈魂。但僅此而已。要想實(shí)現(xiàn)物聯(lián)網(wǎng)網(wǎng)關(guān)各種復(fù)雜的功能需求,最終離不開系統(tǒng)應(yīng)用程序。
考慮到軟件系統(tǒng)結(jié)構(gòu)和層次,本系統(tǒng)設(shè)計(jì)根據(jù)RTU功能劃分為以下4個(gè)部分:主線程、網(wǎng)絡(luò)通信線程、視頻采集通信線程、ZigBee通信線程。
4.1Main線程設(shè)計(jì)流程
主線程main負(fù)責(zé)系統(tǒng)初始化,創(chuàng)建進(jìn)程任務(wù)線程,獲取視頻采集數(shù)據(jù)、檢測(cè)儀表狀態(tài),更新壓力、溫度、功圖和電量儀表數(shù)據(jù)到Modbus寄存器內(nèi),供modbus_tcp_task線程讀取,反饋給上位機(jī)客戶端。Main線程流程如圖3所示。
4.2網(wǎng)絡(luò)通信線程
網(wǎng)絡(luò)通信線程主要是針對(duì)儀表數(shù)據(jù)和攝像頭視頻數(shù)據(jù)的傳輸而創(chuàng)建的。因?yàn)橐曨l數(shù)據(jù)量大,對(duì)數(shù)據(jù)實(shí)時(shí)性要求高,可對(duì)靠性要求低;而傳感器節(jié)點(diǎn)數(shù)據(jù)量小,對(duì)傳輸實(shí)時(shí)性要求高,可對(duì)靠性要求高?;谶@3點(diǎn)不同,將這兩種不通的數(shù)據(jù)通信用兩個(gè)獨(dú)立的線程video_tcp_task和modbus_tcp_task來實(shí)現(xiàn)數(shù)據(jù)傳輸。視頻數(shù)據(jù)通過普通tcp協(xié)議傳輸,zigbee傳感器數(shù)通過modbus tcp協(xié)議傳輸。modbus_tcp_task線程
圖3 主線程流程圖Fig.3 Flow chart of main thread
該線程負(fù)責(zé)上位機(jī)modbus命令解析和應(yīng)答。解析和應(yīng)答通過調(diào)用make_modbus_ack函數(shù)實(shí)現(xiàn):
tx_num=make_modbus_ack(rx_buf,tx_buf,rx_num);make_modbus_ack調(diào)用modbus_data函數(shù)讀取相應(yīng)寄存器的值(即壓力和溫度值),并形成應(yīng)答幀。
u_shortmodbus_data(u_char*command_buf,u_char *ack_buf)
應(yīng)答幀指針為*ack_buf,數(shù)據(jù)長度為tx_num。最后調(diào)用send(events[i].data.fd,tx_buf,tx_num,0)完成應(yīng)答。
4.3視頻監(jiān)控線程
視頻監(jiān)控線程主要完成攝像頭設(shè)備初始化,創(chuàng)建socket傳輸,解析網(wǎng)絡(luò)命令,完成視頻采集和傳輸。其中視頻采集是整個(gè)過程最主要的部分,在Linux下進(jìn)行視頻采集,都是通過調(diào)用Video4Linux(簡稱V4L)的API函數(shù)實(shí)現(xiàn)采集攝像頭視頻數(shù)據(jù)的。
V4L(Video4Linux)是Linux內(nèi)核中視頻設(shè)備的驅(qū)動(dòng)模型,它為視頻設(shè)備的應(yīng)用程序開發(fā)提供了一套應(yīng)用接口函數(shù)[4]。對(duì)于USB攝像頭設(shè)備,驅(qū)動(dòng)程序提供基本的設(shè)備操作函數(shù)open()、read()、write()、close(),內(nèi)存映射函數(shù)mmap()及I/O通道的控制接口函數(shù)ioct1(),內(nèi)核驅(qū)動(dòng)將這些接口指針定義在結(jié)構(gòu)體structfile_perations{}中。當(dāng)應(yīng)用程序?qū)υO(shè)備文件進(jìn)行open()等系統(tǒng)調(diào)用操作時(shí),Linux系統(tǒng)將通過file_operations結(jié)構(gòu)調(diào)用內(nèi)核驅(qū)動(dòng)程序中相應(yīng)的函數(shù)。
Linux V4L視頻應(yīng)用程序開發(fā)常用的數(shù)據(jù)結(jié)構(gòu)有以下幾個(gè)[5]:
1)video_capability:視頻設(shè)備基本信息,如設(shè)備名稱、最大最小分辨率、信號(hào)源信息等。
2)video_picture:視頻設(shè)備采集的圖象屬性:如灰度、對(duì)比度、亮度等。
3)videochannel:信號(hào)源屬性:如信號(hào)源編號(hào)、名字、制式等。
4)video_window:結(jié)構(gòu)體capturearea的信息,如x,y的坐標(biāo)等。
5)video_mbuf:mmap()函數(shù)映射的幀信息。如圖像幀大小,支持幀數(shù)和每一幀相對(duì)基址的偏移。
6)video_mmap:圖像內(nèi)存映射函數(shù)。
另外,利用V4L對(duì)USB攝像頭的編程需要用到Linux下兩個(gè)系統(tǒng)調(diào)用,分別是ioctl()調(diào)用和mmap()調(diào)用。
ioctl(input/outputcontrol)是設(shè)備驅(qū)動(dòng)程序中對(duì)設(shè)備的I/O通道進(jìn)行管理的函數(shù),所謂對(duì)I/O通道進(jìn)行管理,就是對(duì)設(shè)備的一些特性進(jìn)行控制,例如串口的傳輸波特率、圖像的設(shè)置屬性等等。它的形式是:int ioctl(intfd,indemd,…);其中fd就是用戶程序打開設(shè)備時(shí)使用open函數(shù)返回的文件描述符,cmd就是用戶程序?qū)υO(shè)備的控制命令,至于后面的省略號(hào),那是一些補(bǔ)充參數(shù),一般最多一個(gè),有或沒有是和cmd的意義相關(guān)的。由此可見ioclt系統(tǒng)調(diào)用的功能是通過打開的文件描述符對(duì)各種文件尤其是字符設(shè)備文件進(jìn)行控制,完成特定的I/O操作。V4L支持的ioctl命令大概有二十幾個(gè),在應(yīng)用中主要用的命令如下所示:
Ioctl(fd,VIDIOCGCAP,&capability):獲取設(shè)備基本信息
Ioctl(fd,VIDIOCSPIC,&picture):設(shè)置采集圖像屬性
Ioctl(fd,VIDIOCGPICT,&picture):獲取采集圖像屬性
Ioctl(fd,VIDIOCGMBUT,&mbuf):獲取緩沖區(qū)信息
Ioctl(fd,VIDIOCMCAPTURE,&mmap):捕捉圖像,獲取圖像信息
Ioctl(fd,VIDIOCSYNC,&frame):等待采集一幀圖像完成
圖4 V4L視頻信號(hào)采集流程圖Fig.4 Flow chart of video acquisition
操作系統(tǒng)一般把系統(tǒng)使用的內(nèi)存劃分成用戶空間和內(nèi)核空間,分別由應(yīng)用程序管理和操作系統(tǒng)管理[6]。應(yīng)用程序可以直接訪問內(nèi)存的地址,而內(nèi)核空間存放的是供內(nèi)核訪問的代碼和數(shù)據(jù),用戶不能直接訪問。V4L捕獲的數(shù)據(jù),最初是存放在內(nèi)核空間的,這意味著用戶不能直接訪問該段內(nèi)存,必須通過某些手段來轉(zhuǎn)換地址。
V4L提供兩種視頻采集方式:使用 read、write方式和內(nèi)存映射方式。read、write方式,在用戶空間和內(nèi)核空間不斷拷貝數(shù)據(jù),占用了大量用戶內(nèi)存空間,效率不高。內(nèi)存映射方式:把設(shè)備里的內(nèi)存映射到應(yīng)用程序中的內(nèi)存空間,直接處理設(shè)備內(nèi)存,這是一種有效的方式。上面的mmap()函數(shù)就是使用這種方式[7]。
本文首先結(jié)合實(shí)際應(yīng)用分析了RTU的功能并給出設(shè)計(jì)方案,依照提出的方案,完成了基于嵌入式技術(shù)的RTU系統(tǒng)的設(shè)計(jì),在硬件設(shè)計(jì)方面,選取三星S3C2440的arm為核心處理器,并根據(jù)功能添加了外圍功能芯片,設(shè)計(jì)了原理圖并完成制板工作,搭建起硬件平臺(tái);在軟件設(shè)計(jì)方面,選用嵌入式Linux作為平臺(tái)操作系統(tǒng),在此操作系統(tǒng)上開發(fā)應(yīng)用服務(wù)程序以實(shí)現(xiàn)RTU復(fù)雜的功能需求。并且在實(shí)際應(yīng)用中對(duì)此RTU的性能做了測(cè)試以達(dá)到實(shí)際應(yīng)用水平。
[1]田澤.嵌入式系統(tǒng)開發(fā)與應(yīng)用教程[M].北京:北京航空航天大學(xué)出版社,2005.
[2]許海燕,付炎.嵌入式系統(tǒng)技術(shù)與應(yīng)用[M].北京:機(jī)械工業(yè)出版社,2002.
[3]何加銘.嵌入式32位微處理器系統(tǒng)設(shè)計(jì)與應(yīng)用[M].北京:電子工業(yè)出版社,2006.
[4]趙昌永.基于嵌入式LINUX的視頻采集系統(tǒng)設(shè)計(jì)[D].杭州:浙江大學(xué),2006.
[5]曾桂根,吳霜.基于嵌入式Linux的3G接入方案的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)技術(shù)與發(fā)展,2010,20(9):193-196.
[6]LIU Jun-liang,PAN Gang,LI Ping.Embedded linux graphic terminal design based on ARM[C]//Proceedings of the 25th Chinese Control Conference,2006:1921-1925.
[7]Jasmin Blanchette,Mark Summerfield.C++GUI programming with Qt 4[M].PrenticeHall,2006.
Smart oilfield embedded RTU application design
WEI Xue-liang,LI Zhuo-ran,YU Cong-zhi
(China University of Petroleum,the earth physics and information engineering institute,Beijing 102249,China)
Under the background of current oilfields in its intelligent and digital transformation,by using embedded technology and network communication technology and through the physical experiments in laboratory and samples from oilfield,this paper proposed a design scheme based on embedded RTU system and the communication technology,including hardware design and software design.The hardware design is based on a hardware platform with a Samsung S3C2440 core processor and it can attach an external function internal chip;Embedded Linux as a multitasking operating system software platform developped applications on the system platform to implement the RTU design.At present the system prototype is implemented.The field experiment shows that this system has stable performance and the indicators are up to par.
RTU;ZigBee;IOT;embedded
TN87
A
1674-6236(2016)03-0184-04
2015-03-16稿件編號(hào):201503204
魏學(xué)良(1972—),男,山東壽光人,博士,講師。研究方向:應(yīng)用嵌入式處理器、DSP、SOPC硬件系統(tǒng),智慧油田、電力電子系統(tǒng)設(shè)計(jì)應(yīng)用。