基于嵌入式云技术的油井液位远程测试系统
测控的基本模块。串口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所示。在
嵌入式 云测试 Linux操作系统 KVM QEMU Modbus 相关文章:
- 在嵌入式多核集群中利用OCP处理高速缓冲器一致流量(07-20)
- 嵌入式智能设备的测试方法研究(11-29)
- 基于ARM的信号发生器人机交互系统设计(01-23)
- 采用C8051F020设计的嵌入式测试仪(01-17)
- 关于嵌入式智能设备的测试方法的研究(01-28)
- 基于μC/OS-II的电力参数监测仪设计(02-23)