江 彥 舒朝君 李 波 余 磊 劉永喜 胡玉慶 皮智敏
摘 要:針對(duì)目前采油廠油井的工作參數(shù)監(jiān)控缺乏遠(yuǎn)程手段的情況,論述了一種基于VxWorks的遠(yuǎn)程終端的設(shè)計(jì)。該遠(yuǎn)程終端采用CDMA通信信道,可以對(duì)油井的負(fù)荷、溫度、油管回壓、沖次、工作電流、工作電壓等參數(shù)進(jìn)行實(shí)時(shí)自動(dòng)在線抄收和處理,并將數(shù)據(jù)發(fā)送至監(jiān)控中心,由監(jiān)控中心集中監(jiān)控各油井的工作狀態(tài)。該終端采用MSP430F149單片機(jī)完成數(shù)據(jù)的采集,由S3C44B0X嵌入式處理器完成數(shù)據(jù)的處理與發(fā)送,并由VxWorks嵌入式實(shí)時(shí)操作系統(tǒng)來(lái)保證高效率的實(shí)時(shí)多任務(wù)處理。
關(guān)鍵詞:RTU;CDMA;S3C44B0X;MSP430;VxWorks;無(wú)線數(shù)據(jù)傳輸
中圖分類號(hào):TP216文獻(xiàn)標(biāo)識(shí)碼:B
文章編號(hào):1004-373X(2009)05-142-04
Design of Oil Well Remote Terminal Unit Based on VxWorks
JIANG Yan,SHU Zhaojun,LI Bo,YU Lei,LIU Yongxi,HU Yuqing,PI Zhimin
(School of Electrical Engineering and Information,Sichuan University,Chengdu,610065,China)
Abstract:At present,working parameters of well of oil production plant lack of remote monitoring means.The design of a VxWorks-based Remote Terminal Unit (RTU) is dissertated in this paper.The RTU can real-time on-line collect and process the data of load,temperature,tubing pressure,stroke time,current,voltage of the oil pumping,etc.It sends the data to monitoring centre by CDMA channel.The monitoring centre centralizedly monitors the state of pumping wells.The RTU complete the collection of data by MSP430F149 MCU.Data processing and transmitting is done by S3C44B0X embedded processor.The VxWorks embedded RTOS manages the high performance multi-task real-time processing.
Keywords:RTU;CDMA;S3C44B0X;MSP430;VxWorks;wireless data transmission
0 引 言
目前,采油廠多以抽油機(jī)采油生產(chǎn)為主要任務(wù),抽油機(jī)的分布點(diǎn)多面廣,工作在條件惡劣的環(huán)境中,容易損壞和遭外力破壞,需要經(jīng)常巡測(cè),人員工作強(qiáng)度大。目前油井工作狀態(tài)參數(shù)監(jiān)控由于缺乏遠(yuǎn)程手段,對(duì)油井的生產(chǎn)狀況均處于事后處理狀態(tài),油井出現(xiàn)異?;虮槐I破壞時(shí)不能及時(shí)處理,造成大量不明損失?;贑DMA通迅信道的遠(yuǎn)程終端(Remote Terminal Unit,RTU)充分利用現(xiàn)有的計(jì)算機(jī)網(wǎng)絡(luò),通過(guò)對(duì)現(xiàn)場(chǎng)的監(jiān)測(cè)和數(shù)據(jù)采集、傳輸,可以滿足油井遠(yuǎn)程監(jiān)控的需求。該遠(yuǎn)程終端可以對(duì)油井運(yùn)行時(shí)的負(fù)荷、位移、油管回壓、溫度、沖次、工作電流、電壓等參數(shù)進(jìn)行實(shí)時(shí)全自動(dòng)在線抄收;當(dāng)現(xiàn)場(chǎng)有異常情況發(fā)生時(shí),監(jiān)控中心能自動(dòng)發(fā)出相關(guān)報(bào)警信息,調(diào)度室可根據(jù)報(bào)警信息派相關(guān)人員去做現(xiàn)場(chǎng)處理。相關(guān)數(shù)據(jù)的采集,由傳統(tǒng)的人力操作模式轉(zhuǎn)變?yōu)橛?jì)算機(jī)自動(dòng)操作模式,無(wú)需人工干預(yù),從而節(jié)省人力、提高了
工作效率。
1 監(jiān)控系統(tǒng)架構(gòu)與遠(yuǎn)程終端的功能
監(jiān)控系統(tǒng)(如圖1)主要由監(jiān)控中心和遠(yuǎn)程終端構(gòu)成。遠(yuǎn)程終端負(fù)責(zé)對(duì)抽油機(jī)現(xiàn)場(chǎng)數(shù)據(jù)的采集與收發(fā)。監(jiān)控中心對(duì)來(lái)自各個(gè)遠(yuǎn)程終端的數(shù)據(jù)進(jìn)行集中監(jiān)控。遠(yuǎn)程終端通過(guò)CDMA信道接入Internet,從而與監(jiān)控中心服務(wù)器建立連接。監(jiān)控中心是該系統(tǒng)的指揮中心,它可以向現(xiàn)場(chǎng)的遠(yuǎn)程終端發(fā)送多種命令和信息、可以對(duì)接收的數(shù)據(jù)做進(jìn)一步處理,可以將必要的信息通過(guò)網(wǎng)絡(luò)發(fā)給各部門。
遠(yuǎn)程終端監(jiān)測(cè)抽油機(jī)三相電壓值、三相電流值、以及抽油機(jī)負(fù)荷、井口油管回壓、井口油管溫度等。
2 遠(yuǎn)程終端的整體結(jié)構(gòu)設(shè)計(jì)
如圖2為RTU系統(tǒng)架構(gòu)框圖。根據(jù)應(yīng)用需求,系統(tǒng)被設(shè)計(jì)為單片機(jī)加嵌入式處理器的構(gòu)架。MSP430F149單片機(jī)是德州儀器(TI)推出的超低功耗16 位 RISC 混合信號(hào)處理器(Mixed Signal Processor)。該處理器具有豐富的硬件資源,較高的處理速度以及低功耗的特點(diǎn),自帶8路12 b ADC和雙UART,使其非常適合作為該終端的數(shù)據(jù)采集處理器。S3C44B0X為三星公司推出的一款以ARM7為核心的32位嵌入式處理器。它具有豐富的資源以及低功耗低成本的特點(diǎn)能夠滿足該終端的應(yīng)用需要。
MSP430單片機(jī)在該系統(tǒng)中主要完成實(shí)時(shí)數(shù)據(jù)的采集。待采集的數(shù)據(jù)有:由電量傳感器搜集的抽油機(jī)三相電壓電流數(shù)據(jù),采油機(jī)臂負(fù)荷,溫度傳感器模擬信號(hào),壓力、紅外傳感器信號(hào)。單片機(jī)將采集的數(shù)據(jù)按照要求的數(shù)據(jù)格式通過(guò)UART發(fā)送到S3C44B0X。
在該系統(tǒng)中S3C44B0X作一定的數(shù)據(jù)處理并且通過(guò)控制CDMA模塊完成無(wú)線網(wǎng)絡(luò)連接和數(shù)據(jù)收發(fā)。在開機(jī)后S3C44B0X控制CDMA模塊首先與監(jiān)控中心建立數(shù)據(jù)鏈路,監(jiān)控中心收到鏈路信息后即可獲得油井的運(yùn)行信息,可隨時(shí)接收單片機(jī)采集的數(shù)據(jù)信息。當(dāng)S3C44B0X接收到單片機(jī)的信息后,通過(guò)CDMA網(wǎng)絡(luò)將數(shù)據(jù)發(fā)送給監(jiān)控中心,或?qū)⒈O(jiān)控中心發(fā)來(lái)的信息傳給單片機(jī)。在S3C44B0X上所實(shí)現(xiàn)的任務(wù)較多并且涉及到PPP(Point to Point,點(diǎn)對(duì)點(diǎn)協(xié)議)協(xié)議棧,為了滿足系統(tǒng)的實(shí)時(shí)性,本終端采用VxWorks嵌入式實(shí)時(shí)操作系統(tǒng)。S3C44B0X所要完成的任務(wù)有:
(1) 接收來(lái)自MSP430的數(shù)據(jù)幀;向MSP430發(fā)控制指令。
(2) 處理MSP430發(fā)送的數(shù)據(jù)并利用負(fù)荷傳感器數(shù)據(jù)計(jì)算出采油臂的轉(zhuǎn)動(dòng)周期,提取抽油機(jī)示功圖。
(3) 連接CDMA網(wǎng)絡(luò),S3C44B0X通過(guò)向CDMA模塊發(fā)送AT命令控制其進(jìn)行PPP撥號(hào)建立Internet連接。
(4) 建立了PPP連接后,遠(yuǎn)程終端和監(jiān)控中心作數(shù)據(jù)交換。
(5) 監(jiān)測(cè)系統(tǒng)的供電情況。若遠(yuǎn)程終端產(chǎn)生掉電事件,在系統(tǒng)完全關(guān)閉前(由大電容維持使系統(tǒng)不會(huì)立即關(guān)閉),系統(tǒng)向主站發(fā)出停電報(bào)警。
(6) 對(duì)系統(tǒng)看門狗的處理。包括軟件看門狗和硬件看門狗,保證系統(tǒng)的可靠性。
(7) 對(duì)網(wǎng)絡(luò)的支持。有了對(duì)局域網(wǎng)的支持,調(diào)試時(shí)下載VxWorks應(yīng)用程序鏡像到FLASH存儲(chǔ)器就變得方便和快速,方便了系統(tǒng)軟件的升級(jí)。
遠(yuǎn)程終端選用AnyDATA公司的DTGS-800作為無(wú)線通信模塊。該模塊的主要特性有:采用Qualcomm公司的6050芯片;頻段為800 MHz,支持CDMA2000 1X RTT標(biāo)準(zhǔn);內(nèi)建TCP/IP協(xié)議棧等。DTGS-800通過(guò)UART與S3C44B0X相連,S3C44B0X通過(guò)發(fā)送AT命令來(lái)實(shí)現(xiàn)對(duì)CDMA模塊的控制。
3 遠(yuǎn)程終端的軟件設(shè)計(jì)
遠(yuǎn)程終端的軟件分為MSP430單片機(jī)程序設(shè)計(jì)和S3C44B0X的程序設(shè)計(jì)。
3.1 MSP430單片機(jī)程序設(shè)計(jì)
MSP430單片機(jī)負(fù)責(zé)多種數(shù)據(jù)采集,并將數(shù)據(jù)打包發(fā)送。MSP430單片機(jī)具有雙UART。UART0用來(lái)向上位機(jī)ARM傳輸數(shù)據(jù)并接收ARM所給的指令;UART1通過(guò)RS 485協(xié)議與電量傳感器相連。兩個(gè)紅外傳感器的數(shù)字輸出端TELSIG1和TELSIG2分別連在MSP430的P5.0和P5.1通用I/O端口。溫度傳感器、壓力傳感器和負(fù)荷傳感器輸出的模擬信號(hào)量經(jīng)過(guò)各自的信號(hào)調(diào)理電路后分別連接于單片機(jī)的A0,A1和A4端口。通過(guò)MSP430F149單片機(jī)自帶的12 b ADC完成溫度、壓力和負(fù)荷信號(hào)的模數(shù)轉(zhuǎn)換,模數(shù)轉(zhuǎn)換以定時(shí)中斷的方式采樣[1,2],對(duì)原始數(shù)據(jù)的采樣頻率為50 kHz。
軟件的設(shè)計(jì)思路采用進(jìn)程快速循環(huán),以進(jìn)程標(biāo)志為判斷條件調(diào)用各個(gè)進(jìn)程,執(zhí)行相關(guān)控制。如圖3所示,用一個(gè)循環(huán)計(jì)數(shù)器的計(jì)數(shù)值來(lái)設(shè)置所有進(jìn)程的標(biāo)志。在以10 ms為周期的定時(shí)中斷服務(wù)程序中,該計(jì)數(shù)器值加1。每執(zhí)行一次TimeFlag(),都將計(jì)數(shù)器的值與每個(gè)進(jìn)程預(yù)定的執(zhí)行時(shí)間所對(duì)應(yīng)的計(jì)數(shù)值比較,得出進(jìn)程的標(biāo)志狀態(tài),從而使各進(jìn)程得以有序執(zhí)行。
3.2 S3C44B0X程序設(shè)計(jì)
對(duì)S3C44B0X的程序設(shè)計(jì)涉及到VxWorks操作系統(tǒng)BSP(Board Surpport Package,板級(jí)支持包)的修改、操作系統(tǒng)的裁剪和應(yīng)用程序的設(shè)計(jì)幾個(gè)方面。
BSP是介于嵌入式系統(tǒng)硬件和操作系統(tǒng)之間的一層,屬于操作系統(tǒng)的一部分,主要目的是為了支持操作系統(tǒng),使之能夠更好地運(yùn)行于硬件。BSP的編程過(guò)程大多數(shù)是在某一個(gè)成型的BSP模板上進(jìn)行修改[3,4]。根據(jù)本系統(tǒng)的硬件結(jié)構(gòu)和軟件應(yīng)用需求,BSP的修改需要實(shí)現(xiàn)以下目標(biāo):
(1) 實(shí)現(xiàn)操作系統(tǒng)對(duì)TFFS(True FLASH File System)文件系統(tǒng)的支持。TFFS是VxWorks兼容的一種文件系統(tǒng)。他為種類繁多的FLASH存儲(chǔ)設(shè)備提供了統(tǒng)一的塊設(shè)備接口。有了TFFS,應(yīng)用程序?qū)LASH存儲(chǔ)設(shè)備的讀寫就好像他們對(duì)擁有MS-DOS文件系統(tǒng)的磁盤設(shè)備的操作相同。建立好文件系統(tǒng)后,遠(yuǎn)程終端運(yùn)行的日志、系統(tǒng)配置參數(shù)、系統(tǒng)校準(zhǔn)參數(shù)、CDMA用戶名/密碼等便可以以文件的方式保存。
(2) 實(shí)現(xiàn)對(duì)RTL8019以太網(wǎng)控制芯片的支持;實(shí)現(xiàn)通過(guò)FTP訪問(wèn)遠(yuǎn)程終端的文件系統(tǒng),這樣可對(duì)系統(tǒng)應(yīng)用程序在線升級(jí),下載日志文件;實(shí)現(xiàn)Telnet,可通過(guò)Telnet修改遠(yuǎn)程終端的配置參數(shù),對(duì)遠(yuǎn)程終端進(jìn)行維護(hù)。
圖4為VxWorks應(yīng)用程序主程序流程。當(dāng)VxWorks完成啟動(dòng)后進(jìn)入應(yīng)用程序。應(yīng)用程序主程序完成各種初始化和各任務(wù)的創(chuàng)建,以及任務(wù)級(jí)看門狗的創(chuàng)建[4-8]。
系統(tǒng)初始化包括對(duì)系統(tǒng)參數(shù)初始化、用iosDrvInstall()函數(shù)將CDMA設(shè)備驅(qū)動(dòng)添加到設(shè)備驅(qū)動(dòng)列表[7,8]、用iosDevAdd()添加CDMA設(shè)備到I/O系統(tǒng)設(shè)備列表、硬件看門狗初始化。其中系統(tǒng)參數(shù)初始化中又包括日志文件檢查、系統(tǒng)配置參數(shù)加載、CDMA用戶名/密碼的檢驗(yàn)等。若文件系統(tǒng)上沒(méi)有相應(yīng)的參數(shù)文件則按照默認(rèn)參數(shù)創(chuàng)建文件。硬件看門狗芯片選用X5045。初始化設(shè)置看門狗的復(fù)位時(shí)間并啟動(dòng),由于X5045看門狗芯片的復(fù)位時(shí)間最長(zhǎng)只能達(dá)到1.4 s,而VxWorks系統(tǒng)啟動(dòng)時(shí)間超過(guò)了1.4 s,為了不讓X5045產(chǎn)生的復(fù)位信號(hào)中斷VxWorks的啟動(dòng),要在VxWorks啟動(dòng)前將X5045禁用,這就需要修改BSP。在bootInit.c文件的romStart()函數(shù)的開始處添加禁止X5045復(fù)位的代碼。
sysClkConnect()將函數(shù)tick10 ms()映射到VxWorks的系統(tǒng)時(shí)鐘中斷。系統(tǒng)定時(shí)中斷周期設(shè)定為10 ms。tick10ms()函數(shù)中判斷各任務(wù)軟件看門狗是否超時(shí)。若超時(shí)則程序進(jìn)入死循環(huán),并打印是哪個(gè)任務(wù)出錯(cuò)的信息,觸發(fā)硬件看門狗復(fù)位。
CDMAconnectTask()通過(guò)向CDMA模塊發(fā)送AT命令建立PPP連接。
timeTask()完成對(duì)CPU實(shí)時(shí)時(shí)鐘模塊的設(shè)置與讀取。
CDMATask()進(jìn)程建立與主站的socket連接。
commTask()進(jìn)程實(shí)現(xiàn)遠(yuǎn)程終端與監(jiān)控中心的數(shù)據(jù)包交換,將待發(fā)的數(shù)據(jù)幀打包發(fā)送至主站,將CDMA設(shè)備數(shù)據(jù)讀入緩沖區(qū),解析主站命令。
commTask430()進(jìn)程完成ARM與MSP430的數(shù)據(jù)交換。
dataTask()進(jìn)程對(duì)從MSP430上傳的數(shù)據(jù)進(jìn)行處理,包括計(jì)算采油機(jī)臂轉(zhuǎn)動(dòng)周期,通過(guò)負(fù)荷數(shù)據(jù)提取采油機(jī)的示功圖。
warnTask()實(shí)現(xiàn)系統(tǒng)實(shí)時(shí)告警,告警的類型有:負(fù)荷越界、壓力越界、溫度越界、三相電壓各相的越界、三相電流各相的越界以及紅外觸發(fā)。在檢測(cè)中若越界次數(shù)超過(guò)參數(shù)設(shè)定的數(shù)值則認(rèn)為產(chǎn)生一個(gè)告警。
pwrWarnTask()進(jìn)行掉電和來(lái)電的報(bào)警處理。
3.3 CDMA模塊的網(wǎng)絡(luò)連接建立
終端通過(guò)CDMA模塊建立PPP連接訪問(wèn)Internet,PPP為在點(diǎn)對(duì)點(diǎn)連接上傳輸多協(xié)議數(shù)據(jù)包提供了一個(gè)標(biāo)準(zhǔn)方法。PPP 最初設(shè)計(jì)是為兩個(gè)對(duì)等節(jié)點(diǎn)之間的 IP 流量傳輸提供一種封裝協(xié)議,在TCP-IP 協(xié)議集中它是一種用來(lái)同步調(diào)制連接的數(shù)據(jù)鏈路層協(xié)議(OSI 模式中的第二層),替代了原來(lái)非標(biāo)準(zhǔn)的第二層協(xié)議,即 SLIP。PPP攜帶了鏈路控制協(xié)議(LCP)、網(wǎng)絡(luò)控制協(xié)議(NCP)。為了使用VxWorks提供的PPP協(xié)議棧,在VxWorks中需加入PPP組件,如圖5所示。
VxWorks提供了一個(gè)類型為PPP_OPTIONS的結(jié)構(gòu)體來(lái)描述PPP參數(shù)。可通過(guò)填寫PPP_OPTIONS結(jié)構(gòu)體并將結(jié)構(gòu)體地址傳遞給pppInit()函數(shù)來(lái)實(shí)現(xiàn)對(duì)PPP參數(shù)的配置。初始化成功后PPP在鏈路層將自身連接到VxWorks的TCP/IP棧。PPP撥號(hào)連接建立成功后,所有的VxWorks IP 網(wǎng)絡(luò)設(shè)備就可用了。這時(shí)PPP連接對(duì)于用戶是透明的[8]。
S3C44B0X用AT命令控制DTGS-800 CDMA模塊。AT命令是由Hayes公司發(fā)明的控制調(diào)制解調(diào)器的一套命令集,現(xiàn)已成為事實(shí)上的標(biāo)準(zhǔn)并被所有調(diào)制解調(diào)器制造商采用。每條命令以字母“AT”開頭。不同型號(hào)的調(diào)制解調(diào)的AT命令有一定的差別。S3C44B0X發(fā)送AT命令來(lái)建立通行鏈路[9],撥號(hào)需要用到的AT命令有:
① 發(fā)起呼叫ATD<nb>
<nb>為目標(biāo)號(hào)碼,該指令在PPP建立之前進(jìn)行。若返回CONNECT則數(shù)據(jù)呼叫建立成功。
② 控制回顯ATEx
控制字符是否回顯,x=0則不回顯;x=1則回顯。
PPP連接建立步驟如圖6所示。CDMA_Init()函數(shù)填寫PPP_OPTIONS結(jié)構(gòu)體并初始化CDMA模塊使用的串口。撥號(hào)的號(hào)碼為“#777”用戶名密碼都為“CARD”。使用VxWorks提供的pppInit()函數(shù)完成PPP的初始化。pppInit()的返回值不能指示PPP連接的狀態(tài),它僅僅能返回連接是否被成功初始化。要確認(rèn)連接建立的成功需用pppInfoGet()。當(dāng)IPCP(Internet協(xié)議控制協(xié)議)的狀態(tài)為“OPENED”時(shí)表PPP連接建立成功。
4 結(jié) 語(yǔ)
從硬件和軟件等方面介紹了基于VxWorks的數(shù)據(jù)采集遠(yuǎn)程終端的設(shè)計(jì)和實(shí)現(xiàn)。該遠(yuǎn)程終端的核心架構(gòu)不僅適用于石油抽油井的遠(yuǎn)程數(shù)據(jù)傳輸與監(jiān)控,在其他領(lǐng)域也可以得到很好的應(yīng)用,例如電力監(jiān)控、遠(yuǎn)程抄表、工業(yè)控制、氣象數(shù)據(jù)采集、水紋監(jiān)控、水利監(jiān)控、地震檢測(cè)、交通信息發(fā)布等領(lǐng)域,具有很強(qiáng)的工程應(yīng)用價(jià)值,尤其適用于M2M(Machine to Machine)領(lǐng)域的應(yīng)用及應(yīng)用系統(tǒng)的開發(fā)。當(dāng)要作具體應(yīng)用時(shí),只需要根據(jù)具體情況選擇相應(yīng)的傳感器并對(duì)軟硬件做一定的修改即可完成,因此具有廣泛的應(yīng)用前景。
參考文獻(xiàn)
[1]秦龍.MSP430單片機(jī)應(yīng)用系統(tǒng)開發(fā)典型實(shí)例[M].北京:中國(guó)電力出版社,2005.
[2]Texas Instruments,Inc.MSP430x1xx Family User′s Guide[Z].
[3]周啟平,張楊.VxWorks下設(shè)備驅(qū)動(dòng)程序及BSP開發(fā)指南[M].北京:中國(guó)電力出版社,2004.
[4]王金剛,宮霄霖,楊錫勱,等.基于VxWorks的嵌入式實(shí)時(shí)系統(tǒng)設(shè)計(jì)[M].北京:清華大學(xué)出版社,2004.
[5]徐惠民.基于VxWorks的嵌入式系統(tǒng)及試驗(yàn)[M].北京:北京郵電大學(xué)出版社,2006.
[6]Wind River,Inc.VxWorks Programer′s Guide 5.4[Z].
[7]Wind River,Inc.VxWorks Driveers API Reference[Z].
[8]Wind River,Inc.Tornado2.2 Online Manuals[Z].
[9]AnyDATA,Inc.CDMA Data Terminal DTGS-800 Reference Manual[Z].
作者簡(jiǎn)介
江 彥 男,1982年出生,四川成都人,碩士研究生。研究方向?yàn)闄z測(cè)技術(shù)與自動(dòng)化裝置。
舒朝君 女,四川成都人,副教授。研究方向?yàn)闄z測(cè)技術(shù)與自動(dòng)化裝置,控制電器和PLC的研究及應(yīng)用。