钻井工况数据实时采集系统
2021-10-27刘胜娃曹湘华
刘胜娃,曹湘华,代 勇
(1.中国石油川庆钻探公司长庆钻井总公司,陕西 西安 710018;2.西北工业大学 计算机学院,陕西 西安 710129)
0 引 言
目前,钻井施工的管理效率、决策准确性和响应速度一直受传统方式的制约,钻井施工管理、决策的信息化[1]乃大势所趋。如何实现远端监测钻井各项参数,还原钻井现场,使前沿信息技术与钻井施工管理以及决策完美结合,真正促进钻井效率的提升是当前需要解决的问题。
川庆钻探长庆钻井总公司需通过卫星查看全公司上百支钻井队的生产数据,若直接进行视频流传输需占用较大带宽,因此,为进一步提高钻井效率,需要建设钻井工况数据实时采集系统,建立钻井数据采集、传输、数据展示等架构,形成完整的物联网技术体系[2]。通过对钻井现场的视频流进行图像识别,转化为易于传输的、对应的指针数据以及其他信息,在总公司使用特制的显示端接口即可访问还原后的钻井现场数据。
1 系统概述
钻井参数采集系统采用B/S架构,支持桌面端和移动端,主要具有如下几方面特点:
(1)在桌面端完美还原仪表盘,实现钻压表盘仿真,支持实时读数、查询历史数据、异常数据报警等功能。
(2)关键模块仪表识别算法采用Yolact残差神经网络模型[3],能够高速准确地读出仪表指针,经过大量数据训练,准确率高达95%,可以在视频流中动态识别表盘指针。
(3)系统前后端采用WebSocket传输方式[4],通过建立双向链接传输数据,摒弃传统不断轮询访问获取数据的方式。
(4)由于指针识别模块消耗资源较大,故仅在用户访问时开启指针识别,及时返回指针数据。
(5)前端技术主要为HTML5的Canvas绘图技术[5],设备支持率高,可绘制多种不同的图案,包含模拟仿真的钻压表盘。
2 系统总体结构
2.1 系统设计原则
(1)先进性原则
系统开发建设时,在满足所需功能的前提下,结合当前流行的物联网技术、图像识别技术,在相当长的时间内保证系统具备先进性。
(2)易用性原则
系统采用通用的B/S操作界面,操作界面友好、操作简单易上手。此外,该系统还允许不同设备访问,易用性好。
(3)实用性原则
系统提供清晰、简洁、友好的中文人机交互界面,操作简便、灵活、易学易用,便于管理和维护,切合实际工作需求。系统能够24 h连续不间断工作,在无用户访问的情况下,自动停止耗费资源。
(4)易扩展性原则
系统可为各种增值业务提供接口。由于计算机领域技术发展迅速,面对不断变化的用户需求以及数据要求,在开发系统时,充分考虑了系统的可扩展性,适应调整、扩充和删减需求,满足日后发展的需要。
(5)安全性和完整性原则
采用最成熟和应用最广泛的技术平台,分不同的角色控制信息数据,采用横向和纵向结合的矩阵权限控制模式保证数据安全。系统支持对关键设备、关键数据、关键程序模块采取备份、冗余措施,有较强的容错和系统恢复能力,可确保系统长期正常运行。
2.2 系统架构
系统采用三层架构,如图1所示。第一层为数据采集模块,第二层为数据处理存储模块,第三层为数据显示模块。通过Canvas绘制出WebSocket实时传输的数据,以满足不同的使用场景。
图1 系统架构
2.2.1 数据采集模块
数据采集模块采用海康威视摄像头提供的API进行处理,其中RTSP协议(实时流传输协议)[6]可直接将获取的视频流传输到井场服务器。为保护外置设备的耐久性,监控仪表的摄像头存储在定做的防爆盒内,采用RJ 45接口的网线或高倍率进口锂电池组供电。
2.2.2 数据处理模块
数据处理模块对摄像头采集的视频流进行处理,在实现过程中,先后使用了OpenCV及深度学习神经网络。实验效果证明,对单指针的处理使用OpenCV效果尚可,双指针仪表的处理采用卷积神经网络YOLACT模型处理效果较好。同时井场服务器使用Django框架建立起Web后端[7],与Python对接良好,可在进行视频流处理的同时提供总公司访问的接口。处理模块还包含对数据的存储,由于井场每天产生的数据量极大,因此必须提供合理的数据存储方式。
2.2.3 数据显示模块
为达到仿真效果,采用HTML5的新特性—Canvas元素,通过JavaScript绘制表盘。对长庆公司提供的大钩悬重指示仪进行在线还原,绘制出显示模块。2个指针指示数据,最外层表盘根据实际情况转动,表盘均为动态渲染。前端显示的数据通过与后端建立WebSocket进行实时传输。后端采用Django 3.0框架开发,与Python对接良好。Django 3.0以上唯一支持的WebSocket组件为Channels,提供与前端的WebSocket服务。
3 系统实现
3.1 仪表图像识别应用实现
Yolact神经网络模型对双指针识别率较为精准[8],其识别结果如图2所示。图2中将识别结果的角度在后端重新进行了刻画,但对读数误差基本无影响。
图2 图像采集效果
3.2 集成系统设计实现
系统运行流程如图3所示。项目前端包含2部分,即表盘展示模块与RTSP地址上传。
图3 系统运行流程
用户打开前端页面,系统渲染出默认状态的表盘展示给用户,同时提供RTSP地址上传输入栏,用户想要获得表盘的实时转动状态,需要输入相应的RTSP地址,点击上传后,与后台建立起WebSocket连接。后台获取RTSP地址后,经过相应的处理,将实时指针数据以及外表盘数据通过WebSocket传回前端,前端获取相应的指针角度数据以及外表盘数据之后即可实时渲染出对应的表盘[9]。
前端表盘是用户进行数据读取的直接介质,因此必须能够对后端传来的数据进行准确还原。Canvas提供了多个不同的API接口,用于实现直线、圆形的绘制。这是静态显示的绘制,对于动态显示的绘制只需间隔足够短的时间进行不间断绘制,即可实现动画效果。指针的动态显示需通过后台不断传输的指针数据进行绘制。为提高显示效果以及性能,将内两层以及圆心等进行静态初始绘制,而对指针以及外两层及其刻度进行动态绘制。表盘上的圆环只需调用Canvas提供的context.arc()函数即可绘制,而表盘上的刻度则需要进行相应的计算,通过每个刻度的角度得到其倾斜角,然后由刻度长度进行对应的三角函数计算。表盘实现效果如图4所示。
图4 表盘实现效果
表盘最外两层可以实时旋转,还原了现实中钻压表盘的转动,达到了精确测量的目的。项目后端采用Django实现,系统在接收到前端发送的WebSocket数据时会自动触发channels组件的websocket_receive()函数,加载训练模型,识别提交的RTSP视频流,经截取视频流识别,将识别数据经过一定间隔传给前端处理,从而实现核心功能。
4 结 语
采集系统作为钻井大数据体系的重要组成部分,可以替代人工实现井场钻井数据的实时高频采集,记录不同时间段的钻压、悬重等重要数据,以时间为轴结合当时钻井液、井深、地层等数据,构建钻井全生命周期内的完整数据体系,为以后的钻井方案制定提供丰富详实的数据。本项目采用最新的机器学习方法[10],为机器学习等高新技术在科学钻井中的应用进行了深入有效的尝试,并拓展了途径,日后势必会有越来越多的智能方法被应用到科学钻井中。