摘要:针时油井液位远程测试系统中现场嵌入式设备计算资源不足和不 能满足远程实时监控的问题,本文基于云计算技术,设计和实现了一套嵌入式云测试系统。基于亚马逊公司的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是唯一的可以执行这些数据的工 具。