- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
基于嵌入式云技术的油井液位远程测试系统
摘要:针时油井液位远程测试系统中现场嵌入式设备计算资源不足和不能满足远程实时监控的问题,本文基于云计算技术,设计和实现了一套嵌入式云测试系统。基于亚马逊公司的Eucalyptus(桉树)云平台实现了云测试监控中心的功能。测控现场端采用STM32F103微处理器和S3C 2440A微处理器实现了测控节点和嵌入式测控服务器的硬件开发,嵌入式测控服务器在嵌入式Linux操作系统的支撑下,通过KVM、QEMU实现了测试设备的虚拟化,测控节点和测控服务器之间采用Modbus通信协议。系统实现了实时测试和远程实时测控的功能,测试结果表明,能满足实际应用的需求。
在油井开采过程中,为了解油井的产油能力,掌握生产动态,测量油井的液位是一项经常性的工作。因此,对此测量液位的实时监控以及能快速的测取、分析数据和存储数据就显得尤为重要。
然而针对油井的动态液位测量必须进行人工手持发生装置、传感器和测距仪等到油井现场去测试,并且对于测距仪的计算能力,以及存储资源的不足,选用现在越来越成熟的云计算技术来解决。云计算通过网络访问非本地的计算服务(包括数据处理、存储、和信息服务等)的技术,其计算设施不在本地而在网络中,用户不需要关心他们所处的具体位置。嵌入式云计算具备通用化构件、虚拟化管理特征,也可以更加有效地降低构件成本,提高资源利用率,同时显著提高了系统的整体可靠性。传统的本地油井测量测试存在很多问题,如测试工具费用昂贵;并且由于本地测试环境的限制,难以获得超大规模的计算能力;测试环境难以部署,测试资源准备繁琐、测试积累比较匮乏等一系列问题,这些都制约了测试工作的进展。而云测试是基于云计算的一种新型测试方案。
为此,文中设计开发出一种基于开放式控制标准、具备完善通讯联网能力的嵌入式云测试系统,应用于油井动态液面测量中。云计算平台采用亚马逊公司的开源项目Eucalyptus(桉树)云,实现了云测试监控中心的功能。现场嵌入式测控服务器的终端节点作为云测试平台中的NC节点。现场测控服务器的网络接口采用无线WiFi技术或TCP/IP技术可与Internet/Intranet无缝集成,达到了“任何时间、任何地点”的测试系统。
其在嵌入式Linux系统的支撑下,通过移植KVM、QEMU虚拟机,实现了测试设备的虚拟化,测控节点和测控服务器之间采用Modbus通信协议。系统实现了实时测试和远程实时测控的功能,能有效地提高采油井的测试效率,节省人力物力财力,更节省了宝贵的时间。
1 系统体系结构
本文设计的嵌入式云测试系统是由云测试监控中心和现场测控两部分构成,现场测控设备由嵌入式测控节点与嵌入式云服务器构成。测控的总体结构如图1所示。
本文基于亚马逊公司的Eucalyptus(桉树)云平台实现了云测试监控中心的功能。Eucalyptus是用于完成对各种虚拟设备、虚拟机实例的全局性监控,对整个集群的计算资源、存储资源、网络资源进行动态配置。在云测试监控中心,当有远程客户端的请求命令时,其可以为应用对象提供访问服务,实现有效的远程控制与管理。网络化测控服务器作为云测试平台中重要的NC节点。其中,现场嵌入式测控节点完成数据采集和控制开关等工作;对于现场嵌入式测控服务器,实现设备的虚拟化,为远程使用现场设备提供条件。
2 嵌入式测控服务器和测控节点硬件结构
现场嵌入式测控服务器和测控节点的系统硬件按功能主要分为:核心控制模块、网络通信模块、数据分析及处理模块和数据采集、继电器控制模块等。硬件结构分别如图2、图3所示。
1)核心控制部分。以三星公司生产的S3C244OA作为主控芯片,其采用ARM920T内核。以ARM Cortex—M3内核的STM32增强型系列芯片STM 32F103VET6微处理器。
2)信号调理电路。主要是对微音器采集到的声音信号进行调理,而设计的调理电路。其目的就是将声音信号模拟量经过简单的信号调理送入到16位高分辨率的4路模拟量串行输入A/D转换器件ADS8341,将转换之后的数字量送入主控制器。
3)网络部分。包括以太网接口及WIFI网络模块。外接的以太网模块采用的是DM9000E 100M网络传输模块;WIFI网络模块采用的是基于SPI接口marvell 88w8686 wifi网络传输模块;通过其中任何一个模块都可以建立嵌入式测控服务器与该云测试系统网络之间的数据通信。
4)外围接口电路。包括:电源电路、时钟电路、复位电路、JTAG接口电路、NandFlash/NorFlash选择电路、串口电路、以太网接口。
现场测控完成了对声音和压力信号的数据采集、信号调理和继电器等控制工作。声音信号、压力信号采集模块与继电器驱动模块是实现测控的基本模块。串口RS485模块是测控节点与嵌入式测控服务器实现交互的主要通信接口。
3 软件设计
本文采用的是嵌入式Linux操作系统。Bootloader移植的是U-boot-1.1.6.tar.gz,Linux内核版本为2.6.25.8.。
3.1 虚拟化技术
3.1.1 KVM虚拟机技术
KVM(Kernel-based Virtual Machine)是一种基于Linux内核的虚拟机,它是一种全新的开源的虚拟机技术。在KVM模型中,每一个虚拟机都是一个由Linux调度程序管理的标准进程。一个普通的Linux进程有两种运行模式:内核和用户。而KVM增加了第3种模式:客户模式(有自己的内核和用户模式。)KVM由2个部分组成:一个是管理虚拟硬件的设备驱动,该驱动使用字符串设备/dev/kvm做为管理接口;另一个是模拟硬件的用户空间组件,这是一个需要做修改的qemu进程。
3.1.2 移植KVM到ARM架构平台
本文采用KVM虚拟化方案,来实现在ARM处理器硬件架构平台上的虚拟化,即设备的虚拟化,为远程使用现场设备提供条件。在KVM中,通过打开设备节点“/dev/kvm”就可以创建一个虚拟机。这里需要对载有KVM模块的Linux内核进行修改,使之能够支持ARM架构。尽管KVM提供了可以被所有用户空间仿真器使用的通用接口,然而QEMU是唯一的可以执行这些数据的工具。
3.1.3 编译QEMU
QEMU拥有支持ARM主机与客户环境的仿真技术,在QEMU仿真环境下忽略了试图使KVM有效的操作,因此需要对QEMU进行修改以使KVM能够运行。QEMU是一个用户级与系统级的仿真器,它在KVM上下文环境中被当作用户空间的应用程序运行,它与用户操作系统相互配合,向内核模块发送消息并对I/O和其它设备进行仿真,通过编辑QEMU的配置和运行时的参数可以使QEMU能够支持KVM。在交叉编译时,除了需要关注交叉编译的设置外,还需要修改内核和设置KVM参数。
3.1.4 创建并运行虚拟机
Eucalyptus实现基本的简单的虚拟机管理功能,它的主要目标是将基本的虚拟化管理API化。简单易用,扩展方便。用户可以通过euca 200ls工具制作镜像,上传之后可以通过命令行运行实例。查看实例运行情况,停止,重启自己的实例。也可以通过web界面查看已上传镜像,并禁止自己上传的镜像,修改自己的资料。也可以作为用户存储文件和数据的地方。创建的镜像和运行的虚拟机,如图4所示。
图4中的方框部分显示出,虚拟机的内核编号、镜像编号、IP地址和运行实例,并且成功运行登入进虚拟机实例。
3.2 数据采集与测深计算
数据采集是测控系统的基础,是由以STM32F103微处理器为核心的现场测控节点完成,将采集到的声音信号发送给现场嵌入式测控服务器,其采用ModBus协议进行通信。云测试监控中心将声音信号数据通过去野值、接箍波提取、液面回波提取、FFT变换等一系列程序处理后,最终得到油井液位的深度。
3.3 ModBus通讯协议和协议栈移植
本文选用完全符合工业标准的Modbus通讯协议。Mod bus通讯协议,读保持寄存器(0x03)、读输入寄存器(0x04)等15个常用功能码,完全能满足工业应用要求。
Modbus协议支持Modbus RTU/ASCII/TCP 3种传输方式,其移植可以基于串口或网口来完成,从而实现MobusRTU/ASCII或Mobus TCP帧的处理,这点与协议栈具体应用场景、使用的处理器平台、硬件接口密切相关。本文采用ModBus RTU传输方式进行现场嵌入式测控设备之间的通讯。ModBus主机协议中Commun层和从机协议中Port层,都是将Modbus的物理层链路与具体平台的硬件驱动联系起来,该层本质上完成不同链路上数据帧的接收工作。Modbus中的各个功能码操作函数都是平台无关的,应用程序通过解析数据帧中的功能码查找函数指针,并最终执行功能码函数。Mbm.c和mb.c文件为用户应用程序提供了调用接口,对Modbus不同的传输方式(RTU、ASCII、TCP)进行了统一的管理。
Modbus RTU属于Modbus数据帧在串行链路上的传输模式。基于RTU的Modbus主要移植步骤如下:
1)232/485接口驱动。在主机协议的Commun层和从机协议port层portserial.c中完成串口相关函数的编写,包括串口初始化、数据发送、数据接收、中断处理等。
2)定时器功能。在主机协议的mbm.c中,采用线程进行定时器;在从机协议的port层porttimer.c中完成定时器相关函数的编写,包括定时器的初始化、定时器的使能与禁止、超时中断函数等。
现场测控系统采用Modbus RTU数据帧进行传输,设计中利用操作系统提供的多任务环境,创建Modbus RTU服务任务来管理和响应数据帧。
根据实际需要,用户可以删减不必要的功能码或增加自定义功能码,协议的可裁剪性与扩展性非常好。本设计中使用到的功能码与Modbus地址间的对应关系如表1所示。在程序中可以根据表1所对应的功能码来读写数据。
4 系统测试
采用本文提出的方法,设计出的这套云测试系统。在华北油田进行了30多口井次试验,其中包括多种井况,得到声速、时间和深度,声速的范围335~343 m/s,深度的误差范围1.0~3.0 m,通过浏览器远程访问本节点,启动数据采集,得到的结果如表2所示。
现场试验结果表明,通过得到的声音信号波形与油井动态液面的深度测量值,其误差较小,满足实际应用需求。
5 结束语
文中基于云测试技术,设计实现了一套网络化嵌入式云测控系统,在开源Linux系统的支撑下,通过网络化传感器和虚拟化等技术实现了远程数据的采集、实时测试和远程实时监控;对采集到的声音信号进行滤波、测深算法很好的消除了由现场恶劣环境带来的噪声并得到了相应的接箍波和液面回波的波形曲线,在华北油田试验结果得到的波形也比较理想。在现场网络化嵌入式测控系统中,系统提供了多接口,实现了智能测控节点的远程维护。以S3C2440A为核心的主控制器,作为现场嵌入式测控服务器,通过RS485硬件接口,采用ModBus通讯协议,分别监控多个以STM32F103为核心主控制器的现场嵌入式测控节点;在Linux操作系统的支撑下,通过KVM,QEMU完成了设备的虚拟化,为远程使用现场设备提供条件;在Linux和μC/OS-II操作系统上,分别移植符合工业标准的Modbus主机协议栈和从机协议栈,并基于多线程、多任务环境实现了对Modbus RTU数据帧的响应和处理,实现系统终端设备的多通道、智能化、网络化控制。
实际运行结果表明,该智能云测控节点稳定可靠,性价比高,通用性与适应性强。该嵌入式云测试系统及相关技术还可适用于其他网络化测控系统,在云测试发展的各个热点领域有着广泛的应用前景。