0 引 言
目前,采油厂多以抽油机采油生产为主要任务,抽油机的分布点多面广,工作在条件恶劣的环境中,容易损坏和遭外力破坏,需要经常巡测,人员工作强度大。目前油井工作状态参数监控由于缺乏远程手段,对油井的生产状况均处于事后处理状态,油井出现异常或被盗破坏时不能及时处理,造成大量不明损失。基于CD-MA通迅信道的远程终端(Remote Terminal Unit,RTU)充分利用现有的计算机网络,通过对现场的监测和数据采集、传输,可以满足油井远程监控的需求。该远程终端可以对油井运行时的负荷、位移、油管回压、温度、冲次、工作电流、电压等参数进行实时全自动在线抄收;当现场有异常情况发生时,监控中心能自动发出相关报警信息,调度室可根据报警信息派相关人员去做现场处理。相关数据的采集,由传统的人力操作模式转变为计算机自动操作模式,无需人工干预,从而节省人力、提高了工作效率。
1 监控系统架构与远程终端的功能
监控系统(如图1)主要由监控中心和远程终端构成。远程终端负责对抽油机现场数据的采集与收发。监控中心对来自各个远程终端的数据进行集中监控。远程终端通过CDMA信道接入Internet,从而与监控中心服务器建立连接。监控中心是该系统的指挥中心,它可以向现场的远程终端发送多种命令和信息、可以对接收的数据做进一步处理,可以将必要的信息通过网络发给各部门。
远程终端监测抽油机三相电压值、三相电流值、以及抽油机负荷、井口油管回压、井口油管温度等。
2 远程终端的整体结构设计
如图2为RTU系统架构框图。根据应用需求,系统被设计为单片机加嵌入式处理器的构架。MSP430F149单片机是德州仪器(TI)推出的超低功耗16位RISC混合信号处理器(Mixed Signal Proces—sor)。该处理器具有丰富的硬件资源,较高的处理速度以及低功耗的特点,自带8路12 b ADC和双UART,使其非常适合作为该终端的数据采集处理器。$3C44.BOX为三星公司推出的一款以ARM7为核心的32位嵌入式处理器。它具有丰富的资源以及低功耗低成本的特点能够满足该终端的应用需要。
MSP430单片机在该系统中主要完成实时数据的采集。待采集的数据有:由电量传感器搜集的抽油机三相电压电流数据,采油机臂负荷,温度传感器模拟信号,压力、红外传感器信号。单片机将采集的数据按照要求的数据格式通过UART发送到S3C44BOX。
在该系统中S3c44BOX作一定的数据处理并且通过控制CDMA模块完成无线网络连接和数据收发。在开机后S3c44BOX控制CDMA模块首先与监控中心建立数据链路,监控中心收到链路信息后即可获得油井的运行信息,可随时接收单片机采集的数据信息。当S3C44BOX接收到单片机的信息后,通过CDMA网络将数据发送给监控中心,或将监控中心发来的信息传给单片机。在S3C44BOX上所实现的任务较多并且涉及到PPP(Point to Point,点对点协议)协议栈,为了满足系统的实时性,本终端采用vlxWorks嵌入式实时操作系统。S3C44BOX所要完成的任务有:
(1)接收来自MSP430的数据帧;向MSP430发控制指令。
(2)处理MSP430发送的数据并利用负荷传感器数据计算出采油臂的转动周期,提取抽油机示功图。
(3)连接CDMA网络,S3C44BOX通过向CDMA模块发送AT命令控制其进行PPP拨号建立Internet连接。
(4)建立了PPP连接后,远程终端和监控中心作数据交换。
(5)监测系统的供电情况。若远程终端产生掉电事件,在系统完全关闭前(由大电容维持使系统不会立即关闭),系统向主站发出停电报警。
(6)对系统看门狗的处理。包括软件看门狗和硬件看门狗,保证系统的可靠性。
(7)对网络的支持。有了对局域网的支持,调试时下载VxWorks应用程序镜像到FLASH存储器就变得方便和快速,方便了系统软件的升级。
远程终端选用AnyDATA公司的DTGS-800作为无线通信模块。该模块的主要特性有:采用Qualcomm公司的6050芯片;频段为800 MHz,支持CDMA2000 1XRTT标准;内建TCP/IP协议栈等。DTGS-800通过U_ART与S3C44BOX相连,S3C44BOX通过发送AT命令来实现对CDMA模块的控制。
3 远程终端的软件设计
远程终端的软件分为MSP430单片机程序设计和S3C44BOX的程序设计。
3.1 MSP430单片机程序设计
MSP430单片机负责多种数据采集,并将数据打包发送。MSP430单片机具有双UART。uART0用来向上位机ARM传输数据并接收ARM所给的指令;UARTl通过RS 485协议与电量传感器相连。两个红外传感器的数字输出端TELSIG1和TELSIG2分别连在MSP430的P5.0和P5.1通用I/O端口。温度传感器、压力传感器和负荷传感器输出的模拟信号量经过各自的信号调理电路后分别连接于单片机的A0,A1和A4端口。通过MSP430F149单片机自带的12 b ADC完成温度、压力和负荷信号的模数转换,模数转换以定时中断的方式采样,对原始数据的采样频率为50 kHz。
软件的设计思路采用进程快速循环,以进程标志为判断条件调用各个进程,执行相关控制。如图3所示,用一个循环计数器的计数值来设置所有进程的标志。在以10 ms为周期的定时中断服务程序中,该计数器值加1。每执行一次TimeFlag(),都将计数器的值与每个进程预定的执行时间所对应的计数值比较,得出进程的标志状态,从而使各进程得以有序执行。
3.2 S3C44BOX程序设计
对S3C4480x的程序设计涉及到VxWorks操作系统:BSP(Board Surpport Package,板级支持包)的修改、操作系统的裁剪和应用程序的设计几个方面。
BSP是介于嵌人式系统硬件和操作系统之间的一层,属于操作系统的一部分,主要目的是为了支持操作系统,使之能够更好地运行于硬件。BSP的编程过程大多数是在某一个成型的BSP模板上进行修改。根据本系统的硬件结构和软件应用需求,BSP的修改需要实现以下目标:
(1)实现操作系统对TFFS(True FLASHFile System)文件系统的支持。TFFS是Vx-works兼容的一种文件系统。他为种类繁多的FLASH存储设备提供了统一的块设备接口。有了TFFS,应用程序对FLASH存储设备的读写就好像他们对拥有MS-DOS文件系统的磁盘设备的操作相同。建立好文件系统后,远程终端运行的日志、系统配置参数、系统校准参数、CDMA用户名/密码等便可以以文件的方式保存。
(2)实现对RTL8019以太网控制芯片的支持;实现通过FTP访问远程终端的文件系统,这样可对系统应用程序在线升级,下载日志文件;实现Telnet,可通过Telnet修改远程终端的配置参数,对远程终端进行维护。
图4为VxWorks应用程序主程序流程。当Vx-Works完成启动后进人应用程序。应用程序主程序完成各种初始化和各任务的创建,以及任务级看门狗的创建。
系统初始化包括对系统参数初始化、用iosDrvIn-stall()函数将CDMA设备驱动添加到设备驱动列表、用iosDevAdd()添加CDMA设备到I/O系统设备列表、硬件看门狗初始化。其中系统参数初始化中又包括日志文件检查、系统配置参数加载、CDMA用户名/密码的检验等。若文件系统上没有相应的参数文件则按照默认参数创建文件。硬件看门狗芯片选用X5045。初始化设置看门狗的复位时间并启动,由于X5045看门狗芯片的复位时间最长只能达到1.4 s,而VxWorks系统启动时间超过了1.4 s,为了不让X5045产生的复位信号中断VxWorks的启动,要在VxWorks启动前将X5045禁用,这就需要修改BSP。在bootIn-it.c文件的romStart()函数的开始处添加禁止X5045复位的代码。
sysclkC20nnect()将函数ticklO ms()映射到Vx-Works的系统时钟中断。系统定时中断周期设定为10 ms。tickloms()函数中判断各任务软件看门狗是否超时。若超时则程序进入死循环,并打印是哪个任务出错的信息,触发硬件看门狗复位。
CDMAconnectTask()通过向CDMA模块发送AT命令建立PPP连接。
timeTask()完成对CPU实时时钟模块的设置与读取。
CDMATask()进程建立与主站的socket连接。
commTask()进程实现远程终端与监控中心的数据包交换,将待发的数据帧打包发送至主站,将CDMA设备数据读人缓冲区,解析主站命令。
commTask430()进程完成ARM与MSP430的数据交换。
dataTask()进程对从MSP430上传的数据进行处理,包括计算采油机臂转动周期,通过负荷数据提取采油机的示功图。
warnTask()实现系统实时告警,告警的类型有:负荷越界、压力越界、温度越界、三相电压各相的越界、三相电流各相的越界以及红外触发。在检测中若越界次数超过参数设定的数值则认为产生一个告警。
pwrWarnTask()进行掉电和来电的报警处理。
3.3 CDMA模块的网络连接建立
终端通过CDMA模块建立PPP连接访问Inter-net,PPP为在点对点连接上传输多协议数据包提供了一个标准方法。PPP最初设计是为两个对等节点之间的IP流量传输提供一种封装协议,在TCP-IP协议集中它是一种用来同步调制连接的数据链路层协议(OSI模式中的第二层),替代了原来非标准的第二层协议,即SLIP。PPP携带了链路控制协议(LCP)、网络控制协议(NCP)。为了使用VxWorks提供的PPP协议栈,在VxWorks中需加入PPP组件,如图5所示。
VxWorks提供了一个类型为PPP_OPTI*的结构体来描述PPP参数。可通过填写PPP_OP-TI*结构体并将结构体地址传递给pppInit()函数来实现对PPP参数的配置。初始化成功后PPP在链路层将自身连接到Vxworks的TCP/IP栈。PPP拨号连接建立成功后,所有的VxWorks IP网络设备就可用了。这时:PPP连接对于用户是透明的。
S3C44BOX用AT命令控制DTGS-800 CDMA模块。AT命令是由Hayes公司发明的控制调制解调器的一套命令集,现已成为事实上的标准并被所有调制解调器制造商采用。每条命令以字母“AT”开头。不同型号的调制解调的AT命令有一定的差别。S3C44BOX发送AT命令来建立通行链路,拨号需要用到的AT命令有:
①发起呼叫ATD<nb>
<nb>为目标号码,该指令在PPP建立之前进行。若返回CONNECT则数据呼叫建立成功。
②控制回显ATEx
控制字符是否回显,x=O则不回显;x=1则回显。
PPP连接建立步骤如图6所示。CDMA_Init()函数填写PPP_0PTI*结构体并初始化CDMA模块使用的串口。拨号的号码为“#777”用户名密码都为“CARD”。使用VxWorks提供的pppInit()函数完成PPP的初始化。pppInit()的返回值不能指示PPP连接的状态,它仅仅能返回连接是否被成功初始化。要确认连接建立的成功需用pppInfoGet()。当IPCP(Internet协议控制协议)的状态为“OPENED”时表PPP连接建立成功。
4 结 语
从硬件和软件等方面介绍了基于VxWorks的数据采集远程终端的设计和实现。该远程终端的核心架构不仅适用于石油抽油井的远程数据传输与监控,在其他领域也可以得到很好的应用,例如电力监控、远程抄表、工业控制、气象数据采集、水纹监控、水利监控、地震检测、交通信息发布等领域,具有很强的工程应用价值,尤其适用于M2M(Machine to Machine)领域的应用及应用系统的开发。当要作具体应用时,只需要根据具体情况选择相应的传感器并对软硬件做一定的修改即可完成,因此具有广泛的应用前景。