楊 京,梁華慶,曹旭東,艾毅然,孫云龍
(中國石油大學(xué)(北京)地球物理與信息工程學(xué)院,北京102249)
抽油機(jī)井大多都分布在地理位置偏遠(yuǎn)、環(huán)境惡劣的地區(qū),給工作人員對(duì)抽油機(jī)井的管理與維護(hù)工作造成困難。隨著信息技術(shù)在石油工業(yè)領(lǐng)域的大量應(yīng)用,抽油機(jī)井的實(shí)時(shí)監(jiān)控系統(tǒng)大大改善了這一現(xiàn)狀。采用低成本、高性能、低功耗的微控制器以及無線傳感技術(shù)來研制抽油機(jī)井實(shí)時(shí)監(jiān)控系統(tǒng),可以使系統(tǒng)具有更佳的性能。該系統(tǒng)能夠讓原油的開采更加便捷安全和穩(wěn)定高效。本系統(tǒng)能夠?qū)崟r(shí)地反應(yīng)抽油機(jī)井的工作狀況,及時(shí)發(fā)現(xiàn)并解決抽油機(jī)井在工作中出現(xiàn)的故障。采用該系統(tǒng),可以有效提高設(shè)備的可靠性、減輕工作人員的工作量、降低采油成本,極大地提高了生產(chǎn)效率。
系統(tǒng)總體結(jié)構(gòu)如圖1所示,由6部分組成:現(xiàn)場傳感器(壓力傳感器、溫度傳感器等)、傳感器信號(hào)采集板、互感器模塊、電量參數(shù)采集板、示功圖采集模塊、ZigBee通信模塊和上位機(jī)。
圖1 系統(tǒng)總體結(jié)構(gòu)圖Fig.1 The overall block diagram of the system
油壓、油溫、示功圖以及電機(jī)的電力參數(shù)是抽油機(jī)井工作的重要參數(shù),是抽油機(jī)井工況判斷的依據(jù)?,F(xiàn)場傳感器將油溫、油壓等物理量轉(zhuǎn)換成4~20 mA的電流信號(hào)后,輸出給傳感器信號(hào)采集板。示功圖采集模塊內(nèi)部有加速度傳感器和負(fù)荷傳感器,采集的數(shù)據(jù)通過ZigBee無線方式,發(fā)送到傳感器信號(hào)采集板。信號(hào)采集板通過繼電器來控制抽油機(jī)啟停。三相電壓電流經(jīng)過電壓互感器模塊后,由電量采集模塊來采集。上位機(jī)使用Modbus通信協(xié)議,采用RS485總線與電量采集板和傳感器信號(hào)采集板進(jìn)行通信,以獲取采集的數(shù)據(jù)和發(fā)送控制命令。Modbus是工業(yè)控制系統(tǒng)通信中最普遍的協(xié)議,它具有兼容性好,可靠性高等優(yōu)勢[1]。上位機(jī)軟件能夠顯示電量參數(shù)、各個(gè)傳感器的數(shù)據(jù)以及示功圖;更改采集參數(shù)和控制抽油機(jī)的啟停。
主控芯片選擇嵌入式處理器STM32F103RC,這是一款Cortex M3內(nèi)核的 32位單片機(jī),有 48KB SRAM、256KB FLASH,片上集成 6個(gè)定時(shí)器、3個(gè) 12位 ADC、3個(gè) SPI、2個(gè)IIC、5個(gè)串口等豐富的外設(shè),主頻最快可以達(dá)到72 MHz。相比于其他的單片機(jī),STM32系列具有更強(qiáng)大的運(yùn)算處理能力,更快的速度,使用起來更加靈活方便[2]。
圖2為傳感器信號(hào)采集板框圖,由電源電路、信號(hào)調(diào)理電路、STM32及其外圍電路、繼電器及其驅(qū)動(dòng)電路、RS485以及RS232通信接口電路組成。
圖2 傳感器信號(hào)采集板框圖Fig.2 Block diagram of the sensor signal acquisition board
由于現(xiàn)場的環(huán)境惡劣,在傳感器調(diào)理電路前端增加了起限流保護(hù)作用的保險(xiǎn)絲,以及起靜電保護(hù)作用的TVS管。采樣電阻將傳感器輸出的4~20 mA的標(biāo)準(zhǔn)電流信號(hào)轉(zhuǎn)換成STM32內(nèi)部AD可以采集的電壓信號(hào)。
開關(guān)信號(hào)的調(diào)理電路與電流信號(hào)調(diào)理電路相似,采用光耦隔離進(jìn)行電壓隔離保護(hù),同時(shí)將外部開關(guān)信號(hào)的電壓轉(zhuǎn)換為芯片內(nèi)部可以測量的電壓。
圖3為STM32電路原理圖,包括:復(fù)位電路、供電電路、啟動(dòng)模式選擇電路、濾波電容等。 PA4(20)、PA5(21)為引腳為內(nèi)部 ADC 的輸入通道。 PC10(51)、PC11(52)引腳為內(nèi)部USART4的輸入輸出通道,用來實(shí)現(xiàn)RS485通信。PC12(53)、PD2(54)引腳為內(nèi)部USART5的輸入輸出通道,用來實(shí)現(xiàn)與ZigBee通信模塊之間的RS232通信。PC14(3)、PC15(4)引腳用來輸出開關(guān)信號(hào)。
圖3 STM32F103RC電路原理圖Fig.3 STM32F103RCcircuit schematics
采用繼電器來控制抽油機(jī)啟停,其驅(qū)動(dòng)電路如圖4所示。STM32的IO引腳與PNP型三極管的集電極相連。以增加STM32的電流驅(qū)動(dòng)能力。
電壓電流轉(zhuǎn)換板由電壓互感器與電流采樣電路組成。電流采樣電路通過一個(gè)采樣電阻將電流信號(hào)轉(zhuǎn)換為電壓信號(hào)。互感器能夠起到降壓以及隔離保護(hù)的作用。電機(jī)的交流電信號(hào)通過它的初級(jí)輸入,進(jìn)行電壓變換后,由次級(jí)輸出芯片能夠測量的電壓。電流則通過采樣電阻轉(zhuǎn)換成電壓信號(hào)。
電量采集板同樣采用STM32作為主控芯片,使用CS5463專用電量測量芯片分別測量三相的電量參數(shù),使用RS485通信接口與上位機(jī)通信。其結(jié)構(gòu)框圖如圖5所示。
CS5463是美國CirrusLogic公司新近推出的單相雙向功率/電能計(jì)量集成電路芯片。可以測量瞬時(shí)的電壓、電流、有功功率、無功功率、視在功率和功率因數(shù)等[3]。其電路原理圖如圖6所示。
圖4 繼電器及其驅(qū)動(dòng)電路原理圖Fig.4 Relay and its drive circuit schematics
圖5 電量采集板方框圖Fig.5 Block diagram of power parameter acquisition board
圖6 CS5463及其外圍電路原理圖Fig.6 CS5463 and its peripheral circuit schematics
電量參數(shù)采集板上配備了三塊CS5463,分別來采集三相電壓電流。通過SPI方式與STM32通信,一個(gè)CS5463內(nèi)部包含有兩個(gè)ADC,分別采集電壓與電流。
ZigBee通信模塊由CC2430及其外圍電路、RS232通信接口電路、收發(fā)天線組成。該模塊由兩節(jié)5 V電池供電。具有小巧靈活等特點(diǎn)。CC2430是一款TI公司生產(chǎn)的SOC芯片,CC2430芯片內(nèi)部包含了一個(gè)DSSS無線射頻前端,用于發(fā)送和接收無線射頻信號(hào)[4]。為了更加方便的實(shí)現(xiàn)Z-Stack協(xié)議棧[5],在片內(nèi)集成了一個(gè)8位的8051內(nèi)核。
圖7 ZigBee通信模塊Fig.7 Block diagram of ZigBee communication module
示功圖采集模塊采用電池供電,安裝在抽油機(jī)連接桿上。內(nèi)部包含一個(gè)加速度傳感器和一個(gè)負(fù)荷傳感器,將加速度信號(hào)進(jìn)行二次積分得到位移,負(fù)荷傳感器的信號(hào)即為載荷,定時(shí)將測得的數(shù)據(jù)通過ZigBee方式發(fā)送出去。
傳感器信號(hào)采集板上STM32內(nèi)部的程序分為初始化、信號(hào)的采集、ZigBee模塊的數(shù)據(jù)接收、Modbus數(shù)據(jù)幀的接收與發(fā)送等步驟。程序流程圖如圖8所示。
圖8 主程序流程圖Fig.8 The main program flow chart
在系統(tǒng)上電后,首先執(zhí)行系統(tǒng)的初始化,包括系統(tǒng)時(shí)鐘的配置;中斷向量配置;ADC、USART、TIMER、GPIO 等外設(shè)的工作模式選擇,工作參數(shù)配置;外設(shè)的使能。
主程序是一個(gè)循環(huán)體,在循環(huán)體中,首先通過判斷串口4接收標(biāo)志位是否置位,如果置位了說明接收到ZigBee模塊發(fā)送來的數(shù)據(jù);然后將這些數(shù)據(jù)存儲(chǔ)在特定的寄存器中;之后判斷定時(shí)器中斷標(biāo)志位是否到達(dá),一旦到達(dá),則啟動(dòng)ADC,進(jìn)行數(shù)據(jù)采集,數(shù)據(jù)處理,數(shù)據(jù)存儲(chǔ)等操作;最后判斷串口5的接收標(biāo)志位是否置位,如果置位說明接收到了Modbus的協(xié)議幀,需要解包數(shù)據(jù)幀,響應(yīng)操作,進(jìn)行數(shù)據(jù)讀取,參數(shù)更改,啟??刂频炔僮鳌?/p>
類似的,電量參數(shù)采集板程序的系統(tǒng)初始化包括系統(tǒng)時(shí)鐘的配置; 中斷向量配置;TIMER、SPI、USART、GPIO 等外設(shè)的工作模式選擇;以及外設(shè)的使能。
首先通過SPI接口分別向3個(gè)CS5463發(fā)送初始化以及配置的命令字;其次啟動(dòng)定時(shí)器、SPI、USART等外設(shè);之后不斷查詢定時(shí)器標(biāo)志位是否置位,如果定時(shí)到達(dá),則通過SPI接口從CS5463中讀取電壓、電流、功率、功率因數(shù)等數(shù)據(jù);最后判斷串口接收標(biāo)志位是否置位,如果置位說明接收到了Modbus的協(xié)議幀,需要將數(shù)據(jù)打包成Modbus數(shù)據(jù)幀,將數(shù)據(jù)幀發(fā)送給上位機(jī)。
ZigBee通信模塊的程序在TI的Z-Stack協(xié)議棧的程序框架下開發(fā)。Z-Stack協(xié)議棧是在OSAL操作系統(tǒng)下的一組函數(shù)包,通過Z-Stack可以很方便的進(jìn)行ZigBee通信有關(guān)的程序編寫。
1)發(fā)送數(shù)據(jù)
在ZigBee協(xié)議棧中進(jìn)行數(shù)據(jù)發(fā)送可以調(diào)用AF_DataRequest函數(shù)實(shí)現(xiàn),該函數(shù)會(huì)調(diào)用協(xié)議棧里面的底層函數(shù)來打開發(fā)射機(jī),調(diào)整發(fā)射機(jī)的發(fā)送功率等函數(shù)。最終將數(shù)據(jù)通過天線發(fā)送出去。
2)接收數(shù)據(jù)
當(dāng)ZigBee模塊接收到ZigBee的數(shù)據(jù)幀后,OSAL將該數(shù)據(jù)幀中的數(shù)據(jù)封裝,然后放入操作系統(tǒng)的消息隊(duì)列中,每個(gè)消息都有自己的編號(hào),即消息ID號(hào),有新數(shù)據(jù)被接收到的消息ID號(hào)為AF_INCOMING_MSG_CMD(0x1A)。
首先使用osal_msg_receive()函數(shù)從消息隊(duì)列中接收一個(gè)消息,然后通過switch-case語句進(jìn)行選擇(判斷消息ID),如果消息ID是AF_INCOMING_MSG_CMD,則進(jìn)行相應(yīng)的數(shù)據(jù)處理。
3)串口發(fā)送函數(shù)
CC2430的串口收發(fā)需要用到以下3個(gè)函數(shù),這3個(gè)函數(shù)也是Z-Stack所提供的。
uint8 HalUARTOpen(uint8 port,halUARTCfg_t*config);//串口打開初始化
uint16 HalUARTRead(uint8 port,uint8*buf,uint16 len);//讀串口
uint16 HalUARTWrite(uint8 port,uint8*buf,uint16 len);//寫串口
使用HalUARTOpen()函數(shù)對(duì)串口進(jìn)行初始化,該函數(shù)使用halUARTCfg_t結(jié)構(gòu)體指針作為參數(shù),在使用CC2430的串口時(shí),需要定義一個(gè)halUARTCfg_t結(jié)構(gòu)體來初始化CC2430的串口。
uartConfig.Configured = TRUE;
uartConfig.baudRate = HAL_UART_BR_115200;
uartConfig.callBackFunc= Mgr_ProcessZAppData;
在CC2430接收到數(shù)據(jù)之后,調(diào)用HalUARTWrite()函數(shù)發(fā)送數(shù)據(jù),通過串口發(fā)送給STM32。
在VC++2010環(huán)境下,使用微軟的功能庫MFC編寫上位機(jī)軟件。由于PC機(jī)沒有RS485的接口,需要通過一個(gè)RS485到RS232的轉(zhuǎn)接模塊將RS485的信號(hào)轉(zhuǎn)換成RS232的信號(hào)。利用MFC中的MSComm控件進(jìn)行RS232串口的通信[6]。
在主窗口類CWorkDlg定義CString成員對(duì)象,用于顯示實(shí)時(shí)的壓力、溫度、三相電流電壓;定義繼承于CWnd類的子類,display類,用于顯示示功圖。在其OnPaint函數(shù)中添加坐標(biāo)以及曲線的繪制代碼。
圖9 上位機(jī)界面Fig.9 Data display of PC
圖9為上位機(jī)界面。點(diǎn)擊菜單欄上的參數(shù)設(shè)置菜單,會(huì)彈出參數(shù)設(shè)置對(duì)話框。用戶可以在參數(shù)設(shè)置對(duì)話框上更改監(jiān)控參數(shù)。監(jiān)控的參數(shù)包括報(bào)警上限、報(bào)警下限以及采集間隔。當(dāng)抽油機(jī)井的任意一項(xiàng)參數(shù)超出正常范圍后,都可以彈出報(bào)警提示,提示操作員對(duì)此進(jìn)行處理。同時(shí),操作員可以點(diǎn)擊停止按鈕,讓抽油機(jī)井急停。
本文設(shè)計(jì)的監(jiān)控系統(tǒng)采用低功耗、高性能、低成本的嵌入式處理器STM32作為主控芯片。可以實(shí)時(shí)準(zhǔn)確地反映抽油機(jī)井的生產(chǎn)狀況,在出現(xiàn)故障時(shí)能夠及時(shí)進(jìn)行抽油機(jī)井的啟停控制。與傳統(tǒng)的人工巡視監(jiān)控相比,采用基于微控制器的油井實(shí)時(shí)監(jiān)控系統(tǒng),可降低工人勞動(dòng)強(qiáng)度,減少用工總量,提高總體勞動(dòng)效率;且可靠性高,可保證油氣生產(chǎn)安全、提高油田科學(xué)化管理水平和整體開發(fā)效益。
[1]朱小襄.Modbus通信協(xié)議及編程[J].電子工程師,2005(7):42-45.ZHU Xiao-xiang.Modbus communication protocol and programming[J].Electronics Engineer,2005(7):42-45.
[2]孫書鷹,陳志佳,寇超,等.新一代嵌入式微處理器STM32F103開發(fā)與應(yīng)用[J].微計(jì)算機(jī)應(yīng)用,2010(12):59.SUN Shu-ying,CHEN Zhi-jia,KOU Chao,et al.New generation of embedded microprocessor STM32F103 development and application[J].Microcomputer Applications,2010(12):59.
[3]周怡頲,凌志浩,吳勤勤.新型單相雙向功率/電能集成電路CS5463的原理與應(yīng)用[J].儀器儀表用戶,2006(3):66-68.ZHOUYi-ting,LINZhi-hao,WUQin-qin.Principle and application of new single-phase two-way power/energy of the integrated circuit CS5463[J].Instrument Users,2006(3):66-68.
[4]尹應(yīng)鵬,李平舟,郭志華.基于CC2430的ZigBee無線數(shù)傳模塊的設(shè)計(jì)和研究[J].電子元器件應(yīng)用,2008,10(4):18-21.YIN Ying-peng,LI Ping-Zhou,GUO Zhi-hua.Design and research of CC2430 ZigBee wireless data transmission module[J].Electronic Component Applications,2008,10(4):18-21.
[5]韓旭東,張春業(yè),李鵬.傳感器無線互聯(lián)標(biāo)準(zhǔn)及實(shí)現(xiàn)[J].電子技術(shù)應(yīng)用,2004(4):44-46.HAN Xu-dong,ZHANG Chun-ye,LI Peng.Sensors wireless internet standards and achieve[J].Application of Electronic Technique,2004(4):44-46.
[6]侯俊杰.深入淺出MFC[M].武漢:華中科技大學(xué)出版社,2001.