油井数据地面传输仪的设计
2014-02-27陈家林
陈家林,贾 涛
武汉工程大学电气信息学院,湖北 武汉 430205
油田一般位于气候恶劣、位置偏远的地区,而且作业井口分布较为分散,不利于集中管理和监测.同时油田生产过程中经常会出现各种故障,如人为偷盗、油管泄漏等,若没有及时发现类似情况,不仅会降低油井产量及产油质量,还会引起安全事故.因此设计一套性能成熟、功能完善的油井监测系统对当前油井生产和管理的意义越来越重要.
油井监测系统通常由井下压力计、地面传输仪、数据远传单元与数据处理平台4个部分组成.地面传输仪作为整个系统的数据枢纽,起着关键作用.地面传输仪通过电缆接头和485总线接口将井下压力计采集的实时数据进行传输和接收,并将接收的数据进行本地存储的同时与远程数据传输单元(Data Transfer Unit,以下简称:DTU)进行数据交互,即将本地采集的数据信息上传至后台服务器内进行分析和处理.目前油田上使用的数据传输仪都是基于工业计算机或者工控集成设备而实现,在体积、功耗以及成本上都超出了预期.因此当前需要设计一种能够实现地面传输仪基本功能的同时在功耗、体积和成本上进行裁剪的新型地面传输仪.
1 地面传输仪的硬件平台与设计
地面传输仪的硬件组成如图1所示.
图1 传输仪硬件框架图Fig.1 Ground transmission device hardware framework
本设计选择STM32L152作为主控制器. STM32L152是意法半导体公司生产的STM32系列低功耗微控制器,控制器基于超低功耗、高数据安全性、高效能的ARM Cortex-M3内核,同时采用意法半导体独有的两大节能技术,使其具有多种低功耗模式选择,低功耗运行模式电流为10.4 μA.该控制器能够满足实际的工业应用中低功耗的需求.
传输仪的串行通信接口采用了晶体管-晶体管逻辑(Transistor-Transistor Logic,简称:TTL)电路转485电路进行设计.利用STM32L152提供的USART外设资源作为串行通信接口,还需要将其TTL电平信号转为RS485接口标准的电平信号.为了降低通信时的功耗大小,通信模块采用的是SP3072EEN接口芯片.SP3072EEN芯片工作电源电压为3.3 V,电流为800 μA.SP3072EEN采用半双工通讯方式,与单片机引脚连接简单,其连接如图2所示.
图2 485接口转换电路Fig.2 485 interface converter circuit diagram
为了满足地面传输仪较大数据容量存储、运行稳定性以及较低功耗等要求,设计时选择Windbond公司的W25Q64串行Flash芯片作为传输仪的数据存储单元.W25Q64提供了64 Mbytes的存储空间,存储空间由32 678页每页大小为256 bytes的空间组成,同一时刻最多可编写256 bytes,同时W25Q64提供了4KB、32KB、64KB以及全部擦出共4种灵活的擦出方式.W25Q64提供SPI总线作为通信接口,其接线电路如图3所示.
图3 存储器W25Q64连接电路Fig.3 Memory W25Q64 connection circuit
2 地面传输仪的软件平台
μC/OS-II[1]作为一款源码开发的嵌入式操作系统,是由Labrosse Jean J于1992年编写的一个嵌入式多任务操作系统,凭借其足够的稳定性和安全性在数十年间得到了许多机构的标准认证.
STM32L152是基于Cortex-M3架构的新型ARM内核,通过其提供的systick中断和PendSV中断可以更方便的实现μC/OS-Ⅱ的移植工作.移植工作主要完成与CPU相关的源文件的改写以及硬件的底层中断的封装处理,即os_cpu_c.c、os_cpu_a.asm和os_cpu.h源文件.os_cpu.h文件主要包含了与编译器相关的数据类型定义和函数说明,需要根据编译器环境进行修改.os_cpu_c.c文件主要是根据CPU的大小端存储模式以及堆栈增长方向等与硬件密切相关的处理器要求来实现任务堆栈的初始化函数.os_cpu_a.asm文件包括了底层汇编代码,需要根据具体的硬件汇编指令集以及系统中断实现临界区函数和任务上下文切换函数.
3 功能设计
3.1 传输实时性设计
地面传输仪作为井下至地面数据有线传输的核心设备,在数据传输过程中的稳定性、实时性、正确率以及传输速度等指标都要具备一定的要求.考虑到传输仪与井下仪器通过电缆和RS485总线相连,其传输速度和稳定性有着一定保证.但是数据传输以及处理过程中的实时性和数据报错率还需要进行软件设计,尽可能提高实时性并降低报错率.本设计基于μC/OS-II的平台,利用系统调用接口提供的消息邮箱以及消息队列共同实现数据传输的实时性.传输仪的通信系统逻辑结构如图4所示.
图4 系统逻辑结构图Fig.4 Structure diagram of system on Modbus protocol
与一般单片机系统的软件设计的不同在于本设计基于多任务多线程的方式[2].传输仪的功能由多个用户任务通过OS内核调度而实现,其中作为实现数据传输的功能,本设计使用了2个用户任务来实现:①从站轮询任务,主要负责Modbus从站的数据包接收、处理以及回复;②主站管理任务,负责将系统内主站请求进行封装、发送以及接收.同时底层串口和定时器(TIM)中断函数作为执行机构,实现具体的数据发送和接收以及数据帧识别,通过使用消息邮箱机制实时将数据接收和发送情况反映到OS内核和用户任务中,并通过实时操作系统内核调度和中断响应来提高系统的实时性能.
在主站工作过程中,为了提高数据的实时发送和处理,本设计采用了消息队列机制作为发送帧缓冲区.由各个主站请求的任务发送消息至队列中,任务本身则继续执行自身代码,而不是等待结果.消息最终通过队列传递到主站管理任务中进行集中处理和发送.有主站请求的任务就不必在死循环中等待结果,而可以执行自身剩下代码完成其他工作.
3.2 Modbus从站设计
与DTU和上位机服务器通信过程中,地面传输仪作为Modbus从站.地面传输仪需要实时响应来自总线上主站的数据请求信息,并将收集的数据通过DTU 传递给后台服务器.上电后首先需要初始化Modbus协议通信中使用到的串口和定时器驱动,同时还需要配置设备ID、端口以及启动从站功能,最后进入状态轮询阶段,等待来自主站的请求[3].
Modbus从站基于μC/OS-II的平台而设计,使用一个μC/OS-II的用户任务完成从站轮询和处理工作[4].通过使用μC/OS-II内的消息邮箱作为从站的事件机制,将从站中的事件消息EXECUTE、RECEIVED、SEND以及READY作为一个的邮箱信息,利用μC/OS-II提供的请求邮箱信号函数OSMboxPend和发送邮箱信号函数OSMboxPost实现,并最终通过内核的多任务管理调度对从站进行状态轮询以及通过底层中断进行实际的数据帧接收和发送操作共同实现从站功能.从站轮询处理的程序流程如图5所示.
3.3 Modbus主站设计
地面传输仪作为Modbus主站,需要与多个井下仪器进行数据传输并对其进行功能设置.在基于Modbus协议的通信过程中,主站每次发出的数据帧在请求时间周期、数据帧内容以及处理要求上都不太一致,每一请求的数据帧都需要根据具体从站设备的参数信息以及协议规定的寄存器地址和内容来制定[5].
主站设计时使用μC/OS-II平台上的一个用户任务完成Modbus主站功能.考虑到系统整体实时性和传输效率,利用μC/OS-II提供的消息队列作为任务间数据共享机制,将主站请求帧的缓冲区地址作为共享数据传递给主站任务中,从而实现主站请求的集中管理、实时发送和有序处理.主站任务流程如图6所示.
图5 从站轮询处理流程图Fig.5 Slave polling process flowchart
图6 主站任务流程图Fig.6 Task of master flowchart
主站请求流程如图7所示,首先调用OSMemGet()函数向系统内存管理申请一块用来放置Modbus请求帧的临时缓冲区,其次按照具体功能码和寄存器地址等信息填充和封装Modbus请求帧.最后通过消息队列机制将缓冲区地址传递给主站任务完成请求帧的发送与接收[6].
图7 主站请求流程图Fig.7 Request of master flowchart
3.4 数据存储设计
地面传输仪需要及时将接收到的井下数据进行本地存储,并通过按键和显示屏提供现场的数据访问.数据存储占用一个用户任务,通过建立一个临时内存缓冲块暂时存放实时接收的数据,待缓冲块被填满后则进行一次本地数据写入存储器的操作[7].利用μC/OS-II提供的消息邮箱以及资源互斥信号量功能实现本地存储器的读写互斥处理,本地数据存储流程如图8所示.
图8 本地数据存储流程图Fig.8 Local data storage flowchart
4 实验验证
为了验证地面传输仪的性能,以传输仪作为中间设备通过485总线与前端采集设备和后台处理平台连接,以PC机上Modbus slave软件作为数据传输的从设备,模拟井下仪器,同时以DTU远程模块和组态软件作为数据传输的主设备,分别作为远程单元和后台服务器进行测试.地面传输仪与slave的串行通信方式设置为:波特率9 600 bits/s,无校验,1位停止位.并按照Modbus协议的规定进行主站数据帧发送,具体按照表1参数设置.传输仪读取从设备的周期为8 s,按照Modbus协议中的0x03读写功能进行数据读取,其通信过程如图9所示.
表1 从设备实验参数Table 1 Measuring data
图9 传输仪与从站通信过程Fig.9 Communication process between master and slave
地面传输仪同时还与DTU数据远程传输单元进行数据传输,实现数据的服务器上传.在此通信过程中,地面传输仪作为Modbus从站, DTU与后台服务器作为Modbus主站,双方波特率为9 600 bits/s.主站通过发送读取命令进行实时数据交互,最终将传输仪上的本地数据存储至后台服务器内的数据库中,接收数据如图10所示.
图10 服务器实时接收数据显示Fig.10 Display of real-time data received
5 结 语
油井数据地面传输仪通过模拟油井自动监测系统的实验,很好地完成了井内数据参数(压力、温度)从井内到后台服务器的传输功能,实现了Modbus主从站同时工作,实时进行数据传输与存储.传输仪可以同时在总线中连接多个采集仪器,进行实时有序的数据传输且读取数据的速度和准确性都有保证,可以满足油井自动监控系统的要求,达到了设计的目的.
致 谢
感谢武汉益控科技有限公司对本研究提供的资金支持.
[1] [美]拉伯罗斯.嵌入式实时操作系统μC/OS-II[M].2版.邵贝贝,译.北京:北京航空航天大学出版社,2003.
LABROSSE Jean J.MicroC/OS-II the real time kernel[M].2nd Edition.SHAO Beibei.Beijing:Beijing University of Aeronautics and Astronautics Press,2003.(in Chinese)
[2] 方羽,梁广瑞,罗覃东.基于μC/OS-II的Modbus协议的实现[J].装备制造技术,2009(1):83-84,94.
FANG Yu, LIANG Guang-rui, LUO Qin-dong.The implementation of Modbus protocol based on μC/OS-II[J].Equipment Manufacturing Technology,2009(1):83-84,94.(in Chinese)
[3] 李振东.Modbus协议的工业PLC监控仪表设计[J].单片机与嵌入式系统应用, 2012,12(4):5-8.
LI Zhendong.Modbus protocol monitoring in strument for industrial PLC[J].Microcontroller and Embedded Systems,2012,12(4):5-8.(in Chinese)
[4] 罗湘,余臻.基于Modbus协议的单片机数据采集[J].工业控制计算机,2009,22(6):75-76.
LUO Xiang,YU Zhen.Microcomputer’s data acquisition based on Modbus protocol[J].Industrial Control Computer,2009,22(6):75-76.(in Chinese)
[5] 王家国,田芮.基于Modbus总线协议的工业锅炉监控系统设计[J].化工自动化及仪表,2013,40(1):70-71,93.
WANG Jia-guo, TIAN Rui.Design of boiler monitoring system based on Modbus protocol[J].Control and Instruments in Chemical Industry,2013,40(1):70-71,93.(in Chinese)
[6] 李祁,王凤芹,张燕红.嵌入式实时操作系统μC/OS-Ⅱ在STM32开发板上的应用[J].计算机与数字工程,2014,42(1):164-168.
LI Qi,WANG Fengqin,ZHANG Yanhong.Application of real-time embeddedμC/OS-II on STM32[J].Computer and Digital Engineering,2014,42(1):164-168.(in Chinese)
[7] 任哲.嵌入式实时操作系统μC/OS-II原理及应用[M].北京:北京航空航天大学出版社,2005.