王 仪,居锦武,朱文忠,蒋华龙,贾 程
(四川轻化工大学计算机科学与工程学院,四川 自贡 643000)
气井生产过程中到中后期时,由于产气量下降、地层压力降低,自身携带液体能力会减弱,需要考虑排水采气工艺[1-2]。从文献[1-3]中对各种排水采气工艺对比分析可知,间歇气举排水采气是气井开发中后期最主要的排水采气方式之一。常规的间歇气举排水采气由人工进行工作制度调整、人工录取生产工艺参数,难以实现数字化、智能化、精细化管理。随着传感器技术、智能自动控制技术、RTU技术、物联网技术的发展,许多研究者对气井生产现场如何应用相关技术做了许多研究[4-7],但这些研究主要集中于通用的气井生产管理需求而言,对于间歇气举排水采气没有提出具体的解决方案。
在排水采气中,柱塞气举由于自动化控制要求较高,其智能化、物联网技术研究较多[8-11],也较为成熟。其研究主要集中于如何通过检测柱塞井口到达时间、油压与套压来分析柱塞气举工况并实现智能自动控制。间歇气举与柱塞气举有某种相似之处,可以借鉴其有益经验。通过文献[12-15]可知,间歇气举排水采气的核心在于通过井筒积液特征的分析确定合适的间歇气举时机。Moffett 在文献[16]中提到了可基于气举举串的油压变化特征来优化间歇气举时间,但并未提出自喷时间优化问题。文献[17]提出了一种间歇气举排液采气控制方法及系统,该技术主要基于监测井口油压、套压来分析井筒积液情况,进而智能优化调整其工作参数。以此专利为基础,开发相应的井口监控系统,实现间歇气举排水采气工艺参数的全面监控、远传以及4种工作状态(气举、自喷、注气、停井)智能自动切换,同时提供远程人工切换接口。为了进一步完善间歇气举排水采气物联网系统,对远程监控分析软件系统进行设计开发。在设计中,一方面满足实时生产监控需要,另一方面还兼顾了工况诊断与生产动态分析需求。在开发实现技术上,通过对比分析,优选MQTT传输协议与井场控制器进行通讯[18-19],后台选用MySQL数据库,开发语言选用Python。
间歇气举排水采气井的物联网远程监控软件系统功能架构如图1 所示,间歇气举排水采气井场智能终端通过4G 模块,采用MQTT 协议与物联网平台服务器相联,平台服务器建有后台数据库,可以实时获取井场生产数据,并能实时向井场发送4 种工作状态切换指令;同时平台服务器还可以直联气田生产数据库,存取气田生产相关数据。间歇气举排水采气远程监控分析软件系统基于平台服务器,一方面可以对气井实时及日生产动态变化进行监测分析;另一方面,可以根据分析结果,远程手动切换气井工作状态(气举、自喷、注气、停井)。
图1 间歇气举排水采气井的物联网远程监控软件系统功能架构
间歇气举排水采气远程监控分析软件系统主要设计了4 个功能模块:注册登录、系统管理、实时监控、日生产动态。
(1)注册登录模块,主要确保合法用户使用。新用户首先需要注册,然后通过管理员审核后才能变为合法用户。
(2)系统管理模块,主要对用户及井的基本信息进行管理。可以修改完善个人注册信息;可以新增或修改监控井信息,包括远程物联网连接信息、所属开发区块、井的生产简史等。
(3)实时监控分析模块,是整个软件系统最为核心的模块。通过多种可视化手段展示实时检测生产状态,同时还提供多种特征值提取算法进行工况诊断,以便让用户全面了解间歇气举排液采气实时生产状况,发现问题后可通过软件发送人工干预生产控制指令来调整优化生产制度。
(4)日生产动态分析模块,以日为时间尺度,分析气井的生产动态参数及变化规律。软件设计中,提供了由实时监测参数自动生成日报生产参数功能,设计了列表及多种曲线模板分析功能。
间歇气举排水采气远程监控系统最为关键的设计是如何专业、正确、简洁展现监控内容,并确保人机交互操作方便、友好。下面对几个主要核心功能模块设计做简单介绍。
通过一张实时动态表即可全面了解气田各气井的实时生产动态,同时可以横向对比分析各井的工况。
在设计动态监控表中,不仅可展示原始实时检测参数指标(井号、检测时间、当前举升状态、状态持续时间、瞬时注气量、瞬时产气量、干线注气压力、套压、油压、回压),而且还可展示基于原始检测指标,以间歇气举排水采气的4 个生产阶段(气举、自喷、注气、停井)为单位进行特征参数指标统计计算,具体特征指标及算法见表1。
表1 生产状态持续阶段特征指标计算方法
根据气举、自喷中油管压力与套管压力的变化特征诊断间歇气举的工况,其判断方法及应对措施见表2,软件设计中提供了特征参数提取算法,并能自动诊断工况、自动提示应对措施。
表2 间歇气举排水采气常见工况诊断方法及应对措施
功能实现逻辑如图2 所示。首先,基于设定的时钟频率,读取井场监控器上传实时采集数据,提取阶段生产特征值,诊断气井工况,把结果保存到监控数据库;然后,基于设定的时钟频率与列表显示模板,从监控数据库中读取数据并显示到界面上。
图2 多井实时监控列表可视化功能实现逻辑图
生产状态持续阶段特征指标计算实现步骤及关键计算如下:
(1)从智能监控器读取监测其采集数据的当前时间t、当前生产状态代码Cps(枚举型:0-关井,1-气举,2-自喷,3-注气)、当前瞬时注气量Qig(m3/min)、当前瞬时产气量Qpg(m3/min)、当前注气干线压力Pp/MPa、当前套压Pc/MPa、、当前油压Pt/MPa、当前回压Pr/MPa。
(2)监测指标阈值报警计算。从系统读取监测参数的正常取值范围,判定当前监测值是否处于正常取值范围。若超出正常值范围则输出异常参数Param及异常代码Cabnor(注气流量异常代码:1-注气关闭时大于0、2-小于正常值、3-大于正常值;产气量异常代码:1-生产关闭时大于0、2-小于正常值、3-大于正常值;注气干线压力异常代码:1-小于正常值、2-大于正常值;套压异常代码:1-小于正常值、2-大于正常值;油压异常代码:1-小于正常值、2-大于正常值;回压异常代码:1-小于正常值、2-大于正常值),不再做后续计算分析;若处于正常范围,则进行后续计算分析。
(3)计算当前生产油套压差PDct/MPa。
(4)计算当前生产状态监测点数N、持续时间tD/min。从系统读取上次监测点序N、时间t(N)、生产状态代码Cps(N)、上次生产状态持续时间tD(N)。若当前监测生产状态代码与上次监测生产状态代码相同,则初始化:N= 1,tD= 1;若当前监测生产状态代码与上次监测生产状态代码不相同,则:
(5)计算当前生产状态油压最小值Pt,min/MPa、油压最大值Pt,max/MPa、套压最小值Pc,min/MPa、套压最大值Pc,max/MPa、油套压差最小值PDct,min/MPa、油套压差最大值PDct,max/MPa。
若当前生产状态检测点序N= 1,则初始化:
若当前生产状态检测点序N> 1,则从系统取出上次监测时相关参数的最大值与最小值,与当前监测值进行比较,然后逐一更新。
(6)计算当前生产状态油压、套压、油套压差的波动参数。3 个参数的计算方法类似,以油压波动参数计算为例进行说明。油压波动计算参数有:油压波动段序号NPtAM、波动类型代码CPtAM(枚举型:0-无波动,1-持续上升,2-持续下降,3-先升后降,4-先降后升)、波动持续时长tD(PtAM)/min、波动上升幅度Pt(AMUp)/MPa、波动下降幅度Pt(AMDown)/MPa。
若当前生产状态检测点序N=1,则初始化:NPtAM=0,CPtAM=0,tD(PtAM)=0,Pt(AMUp)=0,Pt(AMDown)=0。
若当前生产状态检测点序N> 1,则从系统取出上次相关参数并进行比较:
①首先,计算当前监测油压与上次监测油压Pt(N)的变化值PtAM/MPa。
②然后,根据当前油压变化值及上次波动类型代码CPtAM(N)计算新的波动参数。
当PtAM= 0 时,只需要保持目前波动状态并更新波动持续时间。
当Pt(AM)> 0时:
I.若上次波动类型为0-无波动、3-先升后降则为新的波动周期开始。且改变相应参数:
II.若上次波动类型为2-持续下降,则波动类型改为4-先降后升,对应参数改变为:
III.若上次波动类型为4-先降后升,则保持目前波动类型,对应参数改变为:
当Pt(AM)< 0时:
I.若上次波动类型为0-无波动、4-先降后升则为新的波动周期开始。且改变相应参数:
II.若上次波动类型为1-持续生升,则波动类型改为3-先升后降,对应参数改变为:
III.若上次波动类型为3-先升后降,则保持目前波动类型,对应参数改变为:
(7)计算当前生产状态下的阶段注气量QA,ig/m3、阶段产气量QA,pg/m3。
若当前生产状态检测点序N= 1,则初始化:QA,ig= 0,QA,pg= 0。
若当前生产状态检测点序N> 1,则更新相应参数:
工况诊断仅针对与生产优化紧密相关的气举举串与自喷积液两大类特定工况,具体实现步骤及计算如下:
I.当前生产状态代码Cps为1-气举时,判断不同监测特征值,输出气举举窜工况代码CWorkAF(枚举型:0-正常,1-气窜-油压波动大,2-气窜-气举超时)。气举时长超时比较好判定,下面就油压波动大的判定条件进行说明:
①油压波动类型代码为CPtAM= 3-先升后降。
II.当前生产状态代码Cps为2-自喷时,判断不同监测特征值,输出自喷积液工况代码CWorkAF(枚举型:0-正常,1-积液-油套压差大,2-积液-油压波动大,3-积液-油压低,4-积液-自喷超时)。根据系统设置的界限值进行判定,超过某条件则输出对应工况代码,说明如下:
①CWorkAF= 1判定条件:油套压差大于设定值。
②CWorkAF= 2 判定条件:油压波动幅度大于设定值。
③CWorkAF= 3,判定条件:油压低于设定值。
④CWorkAF= 4,判定条件:自喷时长大于设定值。
气井井位反映了气井所处气藏位置,面向井位图,通过柱状图等可示化方式展示间歇气举排水采气的实时生产工艺参数,一方面可以直观地了解气井的生产状态;另一方面,还可以结合气藏特点来分析气井的生产状况。
本研究借鉴股票走势图,创新性地通过简单的6 个柱状图,可以非常直观地展示气井的当前生产状态在井位图上的分布情况,如图3 所示。从图3中可以看出,6 个柱状图可视化内容有:气井的当前状态、持续时间(与预设时间对比)、当前套压(与当前状态的起始套压、最高套压、最低套压对比)、当前油压(与当前状态的起始油压、最高油压、最低油压对比)、瞬时注气量、瞬时产气量。
图3 面向井位图实时监控可视化界面设计
功能实现逻辑如图4 所示:①基于设定的时钟频率,读取各井井位图数据,然后确定井位所在位置、各指标柱状图起始点坐标以及高度、宽度;②确定各指标的柱状图的高度比例尺;③按各指标真实值,基于比例尺与样式模板,绘制各指标柱状图。
图4 面向井位图实时监控分析功能实现逻辑图
单井监控实时动态分析是整个软件系统最为核心的功能,在设计中,井的基本信息、当前监控状态、历史变化特征、人工远程操控融为一体,在一个界面内展现,体现其专业性、简洁性、易操作性,如图5~6所示。
图5 单井监控实时动态界面设计
图6 单井实时检测参数变化曲线样式
(1)井的基本信息,可以展示井的基本情况,包括所属区块、投产日期、转气举日期。
(2)井实时检测状态及历史变化,可以实时展示当前举升状态及持续时间;注气干线压力、套压、油压、回压变化曲线可以分析其相互影响关系;瞬时注气量、采气量变化关系曲线,可以分析注采效率及产量;通过历史变化关系趋势及相互影响分析,有利于用户优化间歇气举工作制度。
(3)自动工况诊断信息,通过前述特征值自动提取及工况诊断方法,自动得到工况诊断结果并提出应对措施。
(4)在分析间歇气举特征的基础上,可以操控气举的工作制度:可手动直接输出控制指令(气举、自喷、注气、停井);也可修改自动控制的基本参数。针对时钟控制法,可修改自喷时间、气举时间、注气时间、停井时间;针对压控法,可修改自喷转气举条件:油套压差、油压波动幅度与频率等;气举转自喷条件:油套压差、油压波动幅度与频率等。
功能实现逻辑如图7 所示:①基于设定的时钟频率及筛选条件(井号、历史时长),从监控数据库中读取静态参数、监控参数、工况诊断结果、自控设置参数;②将相关参数按列表样式模板填写到界面对应表格单元中;③将历史时长内的监控参数变化记录按曲线样式模板,绘制曲线;④技术人员可以根据监测分析结果调整气井生产状态及优化自控设置参数,通过MQTT 将设置参数发送给井场智能监控设备执行。
图7 单井监控实时动态分析功能实现逻辑
本软件设计了以实时检测数据为基础,自动统计获取气井日生产报表功能,并以表格的形式进行界面展示。统计指标符合气田日常生产管理需求,一般以早上8 点作为起点,统计24 h 内的日生产指标,主要有:日期、气举次数、气举时长、自喷次数、自喷时长、日注气量、日产气量、日平均注气干线压力、日平均套压、日平均油压、日平均回压、日气举平均套压、日气举平均最高套压、日气举平均最低套压、日气举平均油压、日气举平均最高油压、日气举平均最低油压,日自喷平均套压、日自喷平均最高套压、日自喷平均最低套压、日自喷平均油压、日自喷平均最高油压、日自喷平均最低油压。由于指标较多,在软件设计中,可以根据用户分析问题需要,自由选取关注的指标及显示顺序进行列表展示。
功能实现逻辑如图8 所示:①基于每日时钟定时触发,一般为早上8点,从监控数据库中前一日实时生产监测数据,统计得到日生产报表数据并保存回数据库中;②基于界面输入的查询条件(起止日期)及列表显示模板,界面展示日报数据内容。
图8 日报统计报表及查询列表功能实现逻辑
气井日生产指标变化曲线分析是气井生产动态分析非常重要方式之一。由于间歇气举排水采气日生产指标较多,需要对指标进行分组绘制。为了便于分析管理,在本软件设计中,将指标进行分类,分别定制相应曲线模板,既体现指标的关联性,又不影响界面的简洁、美观。如图9所示,用户可自由选取需绘制模板的曲线。本设计预设了5类曲线模板,分别是:(1)生产制度类指标,如气举次数、气举时长等;(2)产量类指标,如日注气量、日产气量、日产水量等;(3)日均压力类指标,如日均干线注气压力、回压、套压、油压;(4)日均气举阶段压力类指标,如日气举平均油压、套压;(5)日均自喷阶段类指标,如日自喷平均油压、套压。同时软件还可提供新的模板曲线定制功能,根据用户需要定制新的指标曲线组合。
图9 单井日生产指标变化曲线分析样式
功能实现逻辑为:①基于界面输入的筛选条件(井号、起止日期),从数据库中读取该井生产日报数据;②按界面选择的曲线模板,绘制生产变化曲线。
经过对比分析,与井场控制器连接采用MQTT协议,MQTT 代理服务器选用阿里云,优选MySQL5.8 数据库作为本地局域网服务器的数据管理软件,主体开发语言选用Python3.8[18-19]。
(1)后台数据库表设计,遵循第二范式,确保数据库表中的每一列都和主键相关,而不能只与主键的某一部分相关。设计后台主要库表12 张,100 多个字段,见表3。对于物理量的计量单位信息,在表字段的备注中填写上。
表3 后台主要数据库表设计
续表
(2)物联网实时数据传送实现,采用MQTT3.0协议,通过阿里云物联网平台进行中转。井场智能控制器自带4G 物联网传输模块,只需要对采集数据、接收指令与代理服务器做好配置即可。本系统开发采用了支持Python 的插件paho-mqtt,实现了井场采集实时数据入库并展示在相应功能界面中,同时将界面中人工指令与自控参数直接传输到井场执行。数据采集频率可以在10 s ∼10 min 之间任意设置;操控指令发送后立即执行。
(3)采用PyMySQL 插件库联接操控数据库。PyMySQL 是在Python3.x 版本中用于连接MySQL 服务器的一个库,遵循Python 数据库API v2.0 规范,并包含了pure-Python MySQL客户端库。
(4)远程监控软件界面实现,采用PyQt5 插件库。PyQt5作为Python 的一个模块,它有620多个类和6000个函数和方法。
这是一个跨平台的工具包,它可以运行在所有主要的操作系统,包括UNIX、Windows、Mac OS。
(5)曲线绘制的实现,采用Matplotlib 插件库。Matplotlib 是Python 的绘图库,它可与NumPy 一起使用,提供了一种有效的MatLab 开源替代方案。它也可以和图形工具包一起使用,如PyQt和wxPython。
首先由开发人员对照设计文档规范要求,每实现一个功能则进行一次代码检查,并对关键节点进行动态运行测试。软件系统完成后,组织相关人员编写测试用例进行黑盒测试,测试用例功能覆盖率100%。测试结果表明:系统功能完备,功能界面输入/输出表现简洁清晰,结果正确,容错处理考虑全面,运行稳定。
为了验证软件对矿产实际生产的适应性,进行了现场数据收集与处理。在西部某气田的支持下,获取了2 口井柱塞辅助间歇气举实验数据,由于其直接采用柱塞排水采气智能监控系统,只对油压、套压进行了实时监测,而未对注气量、采气量、注气干线压力、回压进行实时监测;只对采气生产进行了智能自动控制,注气闸门的开启与关闭采用人工操作。其中1口井的日生产报表数据见表4,实时油压、套压监控变化曲线如图10所示。
表4 井1的实际生产日报部分数据
图10 井1的部分实时监控油、套压变化曲线
为了全面验证本设计软件功能的正确有效性,以取得的2口实际矿场间歇气举生产井日报数据及实时监控数据为基础,结合气井的生产特性,完全按照新的气井物联网监控设计方案要求,模拟生成了3 天实时监控数据记录,用电脑将模拟的实时监控数据直接发送给智能控制器终端,然后通过本软件远程监控分析。应用测试结果表明:①本系统实现了对间歇气举排水采气的关键核心参数的全面正确感知获取,包括生产状态、阶段持续时长、瞬时注气量、瞬时采气量、注气干线压力、套压、油压、回压等,核心参数感知检测覆盖率达到100%;②本系统可以灵活定制感知参数的采样频率,从10 s 到10 min,完全可以满足矿场管理需求;③通过3 d 内12 个间歇气举周期工况自动诊断,与专家经验判断的结果基本符合;④智能控制器能够根据自动诊断结果进行智能自动调整控制,同时还提供了远程人工调整接口,4 种工作状态切换命令(气举、自喷、停井、注气)能自动正确执行。
针对间歇气举排水采气目前缺乏智能生产监控技术产品现状,结合新研发的井场物联网智能终端研发成果,设计开发了物联网远程监控软件系统。
(1)采用MQTT 协议,通过阿里物联网平台MQTT 服务代理,实现了软件远程实时获取井场生产数据,同时可远程优化调制间歇气举工作制度并自动执行。
(2)系统功能完备,可满足间歇气举排水采气远程监控管理需要。创新性地设计了实时生产特征参数提取与工况自动诊断功能,工况诊断结果与矿场工程师的经验判定基本相符。
(3)设计了列表展示、面向井位图的参数柱状图展示、参数列表与变化曲线融合的综合展示3 种可视化方法,便于用户全面分析间歇气举实时生产现状,发现问题后可立即通过软件远程优化操控气井生产。
(4)考虑到气井日常生产动态分析需要,以日为时间尺度的分析功能,设计了基于实时检测数据自动生成日报数据算法与多种模板展示功能,便于用户选择。
(5)选用了现在比较流行好用的MySQL 数据库、Python 语言来进行开发实现,整体软件功能正确、容错处理考虑周全、运行可靠、人机交互良好、专业性强、操作简便,具有较好的推广应用价值。