魏学良,李卓然,于聪智
(中国石油大学(北京)地球物理与信息工程学院 北京 102249)
智慧油田中嵌入式RTU应用设计
魏学良,李卓然,于聪智
(中国石油大学(北京)地球物理与信息工程学院 北京102249)
在现今油田进行智能化、数字化技术改造的背景下,本文通过运用嵌入式技术和网络通信技术并通过在实验室及油田现场进行实物实验,提出了嵌入式技术的RTU系统总体设计方案,包含硬件支撑平台设计和软件设计。硬件支撑平台以三星公司的S3C2440的arm为核心处理器并外接功能接口芯片;嵌入式Linux多任务操作系统作为系统软件平台并在此系统平台上开发应用程序,实现嵌入式RTU的设计。目前该系统原型机已经实现,通过现场实验表明,本系统性能稳定,各项指标均达到要求。
RTU;ZigBee;物联网;嵌入式
智慧油田建设是依托物联网应用系统、结合智能巡检和自动感知、数据融合技术基础上,探索建立组织运维、层级简化的现代油田管理新模式,以实现油田管理系统可靠、优质、高效运行。系统包含3个层次的内容:感知层、传输层、应用层。
其中:感知层:主要包括油田现场应用的各类传感器和摄像探头等,例如温度、压力、载荷、流量传感器等仪表设备,通过这些设备采集油田现场数据,通过摄像探头捕捉现场视频信息,通过传输层的RTU将数据直接传到控制中心;
应用层主要是油田专业软件平台,它主要是根据采集数据和数据库历史数据对油水井工况进行综合分析优化。
数据传输层:是连接应用层和感知层的关键环节。由传输网络和支持网络的数据采集传输终端(RTU)构成。
根据油田现场工作需求,传输层中的RTU(数据传输终端)主要具备如下功能:
1)支持多接口传感器接入功能:
①ZIGBEE无线仪表接入,温度、压力、电量、功图采集等仪表通过ZIGBEE无线方式接入网关与网关通讯。
②RS485有线仪表,RS485作为备用有线仪表接入口,用于车间内有线仪表与网关通讯。
③USB摄像头接入,视频监控采用了中微星星光摄像头,该摄像头以USB方式接入网关。
2)协议转换与数据管理
传感器数据以ZIGBEE协议、RS485协议、USB协议接入RTU,把底层的数据进行标准化统一封装、确保不同的传感器网络协议可以转换成统一的命令或数据;并把顶层向下发送的数据压缩包解码为传感器子网协议可辨识的命令[1]。
3)RTU具有仪表数据进行备份功能。
设计中的基于嵌入式RTU主要实现包括高速的数据通讯、油井现场视频监控、现场无线仪表信息采集(温度、压力、电量、功图等数据)和抽油机控制等功能。
考虑到物联网网关的复杂功能和对硬件平台处理速度需求,硬件平台的核心处理器选用了三星的 S3C2440 (ARM920T)32位处理器[2]。考虑到网关系统的后期可扩展和升级维护成本,硬件设计上根据功能进行了模块划分,分成以下几个功能模块分别实现,如图1所示。
图1 RTU系统硬件结构框架Fig.1 The hardware architecture of RTU system
1)核心处理器模块,负责对整个系统的资源进行调度,对网关上行、下行的数据进行解析处理并对上下两层的协议进行转换。本设计采用三星的S3C2440(ARM920T核)处理器,核心处理器上运行物联网网关嵌入式Linux系统和网关应用服务程序,完成网关的各项服务和管理功能,例如,包括数据接收、协议查询、协议部署和协议转换等功能。
2)传感器接入模块可以允许接入多种类型的传感器,目的在于保证网关接入节点的兼容性。可接入模块类型,如ZIGBEE模块、RS485模块和USB摄像头等。
3)TCP/IP网络模块和3G网络模块的功能是实现网关与互联网公共网络Internet的网络通信。网关通过网络模块将传感器子网数据(包括无线仪表数据和USB摄像头视频数据)通过Ethernet或者3G网络发送到井场中心控制室,便于油田监控人员实时了解油井现场各个仪表的数据和现场周围环境状况。
4)存储模块主要包括非易失介质NANDFLASH和易失介质SDRAM两种存储设备。NANDFLASH作为非易失性设备,掉电信息不丢,主要用来存储操作系统引导程Bootloader、Linux内核和根文件系统。SDRAM作为高速随机访问存储(RAM)单元,提供给网关嵌入式Linux操作系统和网关服务程序运行所需的内存空间[3]。
RTU硬件平台搭好之后,必须通过移植操作系统内核和根文件系统给网关系统注入了灵魂。根据油田现场对RTU系统处理速度、实时性、可靠性都有很高的要求,嵌入式操作系统选定嵌入式Linux2.6.32作为物联网网关软件平台操作系统。本设计的物联网网关软件平台架构设计如图2所示。
在RTU硬件平台上搭建基于嵌入式Linux的软件平台及在平台上设计应用程序。具体包括启动程序和内核的分析与移植、设计根文件系统和驱动程序开发环节。
在启动阶段,从文件结构归纳出Linux与处理器相关的一套接口文件,实现嵌入式内核初始化,保证Linux在不同平台上的移植;根文件是Linux系统不可缺少的组件,是系统内核与应用程序之间的桥梁。在Linux内核初始化完成后,完成根文件系统的挂载,系统通过根文件系统中的启动脚本和其他配置脚本文件完成应用程序的初始化。
图2 嵌入式物联网网关软件架构Fig.2 Embedded IOT gateway software structure
在设备驱动阶段,开发兼容IPV6/IPV4的网络硬件设备驱动程序、开发CAN总线、RS485总线驱动程序、基于FLASH ROM及SD卡等存储设备的应用程序设计。基于嵌入式技术RTU设计中,根据实际功能,系统所需要的硬件设备驱动如下:EM770W模块的USB驱动、ZigBee模块的串口驱动、USB摄像头驱动和网卡DM9000驱动等。如下以3G模块USB驱动程序为例。
1)实际的Linux内核下USB相关配置:
配置完毕后,选择EXIT并保存配置信息。然后在宿主Ubuntu下输入make zImage命令对内核进行编译并等待内核编译完成。编译生成的zImage文件在内核源代码目录arch/ arm/boot目录下。
2)USB接口的3G模块EM770W是通过USB转串口方式驱动的。在前面Linux内核选项配置USB设备驱动的时候,已经选择了对USB转串口支持(USB Serial Convertersupport)。
3)网关系统启动后,将USB 3G网卡插入网关USB主机接口,调试终端打印信息如下所示:
可以看出,3G网卡设备驱动已成功加载,设备厂商号是0x12d1,产品号是 0x1404,设备名称是 HUAWEI MOBILE WCDMA EM770W。另外,设备驱动将该3G网卡映射为ttyUSB0-ttyUSB5共6个ttyUSB类型的设备,其中ttyUSB0是3G网卡控制所用到的主要设备。
通过移植操作系统内核和根文件系统给网关系统注入了灵魂。但仅此而已。要想实现物联网网关各种复杂的功能需求,最终离不开系统应用程序。
考虑到软件系统结构和层次,本系统设计根据RTU功能划分为以下4个部分:主线程、网络通信线程、视频采集通信线程、ZigBee通信线程。
4.1Main线程设计流程
主线程main负责系统初始化,创建进程任务线程,获取视频采集数据、检测仪表状态,更新压力、温度、功图和电量仪表数据到Modbus寄存器内,供modbus_tcp_task线程读取,反馈给上位机客户端。Main线程流程如图3所示。
4.2网络通信线程
网络通信线程主要是针对仪表数据和摄像头视频数据的传输而创建的。因为视频数据量大,对数据实时性要求高,可对靠性要求低;而传感器节点数据量小,对传输实时性要求高,可对靠性要求高。基于这3点不同,将这两种不通的数据通信用两个独立的线程video_tcp_task和modbus_tcp_task来实现数据传输。视频数据通过普通tcp协议传输,zigbee传感器数通过modbus tcp协议传输。modbus_tcp_task线程
图3 主线程流程图Fig.3 Flow chart of main thread
该线程负责上位机modbus命令解析和应答。解析和应答通过调用make_modbus_ack函数实现:
tx_num=make_modbus_ack(rx_buf,tx_buf,rx_num);make_modbus_ack调用modbus_data函数读取相应寄存器的值(即压力和温度值),并形成应答帧。
u_shortmodbus_data(u_char*command_buf,u_char *ack_buf)
应答帧指针为*ack_buf,数据长度为tx_num。最后调用send(events[i].data.fd,tx_buf,tx_num,0)完成应答。
4.3视频监控线程
视频监控线程主要完成摄像头设备初始化,创建socket传输,解析网络命令,完成视频采集和传输。其中视频采集是整个过程最主要的部分,在Linux下进行视频采集,都是通过调用Video4Linux(简称V4L)的API函数实现采集摄像头视频数据的。
V4L(Video4Linux)是Linux内核中视频设备的驱动模型,它为视频设备的应用程序开发提供了一套应用接口函数[4]。对于USB摄像头设备,驱动程序提供基本的设备操作函数open()、read()、write()、close(),内存映射函数mmap()及I/O通道的控制接口函数ioct1(),内核驱动将这些接口指针定义在结构体structfile_perations{}中。当应用程序对设备文件进行open()等系统调用操作时,Linux系统将通过file_operations结构调用内核驱动程序中相应的函数。
Linux V4L视频应用程序开发常用的数据结构有以下几个[5]:
1)video_capability:视频设备基本信息,如设备名称、最大最小分辨率、信号源信息等。
2)video_picture:视频设备采集的图象属性:如灰度、对比度、亮度等。
3)videochannel:信号源属性:如信号源编号、名字、制式等。
4)video_window:结构体capturearea的信息,如x,y的坐标等。
5)video_mbuf:mmap()函数映射的帧信息。如图像帧大小,支持帧数和每一帧相对基址的偏移。
6)video_mmap:图像内存映射函数。
另外,利用V4L对USB摄像头的编程需要用到Linux下两个系统调用,分别是ioctl()调用和mmap()调用。
ioctl(input/outputcontrol)是设备驱动程序中对设备的I/O通道进行管理的函数,所谓对I/O通道进行管理,就是对设备的一些特性进行控制,例如串口的传输波特率、图像的设置属性等等。它的形式是:int ioctl(intfd,indemd,…);其中fd就是用户程序打开设备时使用open函数返回的文件描述符,cmd就是用户程序对设备的控制命令,至于后面的省略号,那是一些补充参数,一般最多一个,有或没有是和cmd的意义相关的。由此可见ioclt系统调用的功能是通过打开的文件描述符对各种文件尤其是字符设备文件进行控制,完成特定的I/O操作。V4L支持的ioctl命令大概有二十几个,在应用中主要用的命令如下所示:
Ioctl(fd,VIDIOCGCAP,&capability):获取设备基本信息
Ioctl(fd,VIDIOCSPIC,&picture):设置采集图像属性
Ioctl(fd,VIDIOCGPICT,&picture):获取采集图像属性
Ioctl(fd,VIDIOCGMBUT,&mbuf):获取缓冲区信息
Ioctl(fd,VIDIOCMCAPTURE,&mmap):捕捉图像,获取图像信息
Ioctl(fd,VIDIOCSYNC,&frame):等待采集一帧图像完成
图4 V4L视频信号采集流程图Fig.4 Flow chart of video acquisition
操作系统一般把系统使用的内存划分成用户空间和内核空间,分别由应用程序管理和操作系统管理[6]。应用程序可以直接访问内存的地址,而内核空间存放的是供内核访问的代码和数据,用户不能直接访问。V4L捕获的数据,最初是存放在内核空间的,这意味着用户不能直接访问该段内存,必须通过某些手段来转换地址。
V4L提供两种视频采集方式:使用 read、write方式和内存映射方式。read、write方式,在用户空间和内核空间不断拷贝数据,占用了大量用户内存空间,效率不高。内存映射方式:把设备里的内存映射到应用程序中的内存空间,直接处理设备内存,这是一种有效的方式。上面的mmap()函数就是使用这种方式[7]。
本文首先结合实际应用分析了RTU的功能并给出设计方案,依照提出的方案,完成了基于嵌入式技术的RTU系统的设计,在硬件设计方面,选取三星S3C2440的arm为核心处理器,并根据功能添加了外围功能芯片,设计了原理图并完成制板工作,搭建起硬件平台;在软件设计方面,选用嵌入式Linux作为平台操作系统,在此操作系统上开发应用服务程序以实现RTU复杂的功能需求。并且在实际应用中对此RTU的性能做了测试以达到实际应用水平。
[1]田泽.嵌入式系统开发与应用教程[M].北京:北京航空航天大学出版社,2005.
[2]许海燕,付炎.嵌入式系统技术与应用[M].北京:机械工业出版社,2002.
[3]何加铭.嵌入式32位微处理器系统设计与应用[M].北京:电子工业出版社,2006.
[4]赵昌永.基于嵌入式LINUX的视频采集系统设计[D].杭州:浙江大学,2006.
[5]曾桂根,吴霜.基于嵌入式Linux的3G接入方案的设计与实现[J].计算机技术与发展,2010,20(9):193-196.
[6]LIU Jun-liang,PAN Gang,LI Ping.Embedded linux graphic terminal design based on ARM[C]//Proceedings of the 25th Chinese Control Conference,2006:1921-1925.
[7]Jasmin Blanchette,Mark Summerfield.C++GUI programming with Qt 4[M].PrenticeHall,2006.
Smart oilfield embedded RTU application design
WEI Xue-liang,LI Zhuo-ran,YU Cong-zhi
(China University of Petroleum,the earth physics and information engineering institute,Beijing 102249,China)
Under the background of current oilfields in its intelligent and digital transformation,by using embedded technology and network communication technology and through the physical experiments in laboratory and samples from oilfield,this paper proposed a design scheme based on embedded RTU system and the communication technology,including hardware design and software design.The hardware design is based on a hardware platform with a Samsung S3C2440 core processor and it can attach an external function internal chip;Embedded Linux as a multitasking operating system software platform developped applications on the system platform to implement the RTU design.At present the system prototype is implemented.The field experiment shows that this system has stable performance and the indicators are up to par.
RTU;ZigBee;IOT;embedded
TN87
A
1674-6236(2016)03-0184-04
2015-03-16稿件编号:201503204
魏学良(1972—),男,山东寿光人,博士,讲师。研究方向:应用嵌入式处理器、DSP、SOPC硬件系统,智慧油田、电力电子系统设计应用。