掌桥专利:专业的专利平台
掌桥专利
首页

一种油田高架罐液位监测方法

文献发布时间:2024-04-18 19:52:40



技术领域

本发明属于油井生产过程中的高架罐液位计量技术领域,具体涉及一种油田高架罐液位监测方法。

背景技术

在油田生产过程中,有很多边远井距离输油站很远,铺设输油管道将油井内产出的原油输送到输油站,成本高,维护困难。所以边远井都采用在油井周围架设高架罐,井内产出的原油直接输送至高架罐进行储存,当原油达到一定的液位高度,使用油罐车直接拉走。单井高架罐运行在油田生产过程中是必不可少的一个重要环节,单井高架罐计量是采油工人每日必做的工作,通过测量液位高度与上次测量时间差,可以换算出单井日产量,从而可以更好的判断油井生产状况。单井高架罐的计量目前我们采用计量的方法是,测得两次液位空高和记录两次空高的间隔时间,再利用高架灌计算表格查找相对数值再乘以密度得到单井产量,但由于高架罐计算表长期使用表格产生模糊,或者由于员工看错行都可能导致计量错误。

发明内容

为了解决上述存在的问题,本发明提出:一种油田高架罐液位监测方法,技术方案如下:包括如下步骤:

S1、设计前端交互页面;

S2、自动查表,实现调取和查询;

S3、计算产油量;

进一步地,步骤S1中,根据数据表的情况,确定前端页面动态录入数据为三个,分别为第一次检尺高度A、第二次检尺高度B和量油时间C。

进一步地,选择性数据二选一为原油密度D。

进一步地,前端录入内容后通过JavaScript Object Notation的数据交换格式来存储和表示数据。

进一步地,步骤S2中,查表时将对应的excel表格内容封装。

进一步地,按照50方罐量油换算表编写,以数组形式存储在程序源码中。

进一步地,步骤S3中,采用交互模式,前台交互的数据通过Json数组Json{A,B,C,D}传入后台,数据分别对应前端录入的{第一次检尺高度,第二次检尺高度,量油时间,原油密度},使用if语句查表得到最终的计算数值。

进一步地,需要查询的表格为多行多列表格,使用多条件查询,则使用的if语句为多分支的if…else if语句。

进一步地,if…else if语句实现查表数据,使用MATLAB编写计算公式:

进一步地,公式为:产量=(第一次检尺高度-第二次检尺高度)÷量油时间×24×原油密度,产量的单位是吨,第一次检尺高度和第二次检尺高度的单位是米,原油密度的单位是吨每立方米,量油时间的单位是小时。

进一步地,原油密度为0.85吨每立方米。

进一步地,输入第一次测量液位的高度,再输入第二次测量液位的高度,两次测量间隔时间。

进一步地,两次测量间隔时间不超过24小时。

进一步地,选择所测量的高架罐内液体的类型,根据原油密度不同输入不同的原油类型。

进一步地,原油类型包括稠油和稀油。

进一步地,点击计算,经过内部运算,将油井日产量运算结果显示在屏幕上。

本发明的有益效果为:

一是解决油田生产过程中单井高架罐计量不准确的问题,

二是减少生产班组的纸质版资料,降低工人的劳动强度。随着科技的不断发展,手机基本已经成为每个人的必须品,手机APP给人们的吃、住、玩、购、游等带来了很多的方便,因此设计一款手机APP高架灌计量软件,能让员工对单井高架罐液位计量计算起来更方便、更快捷、更简单。

本发明的优点是打开手机高架罐液位计量APP软件,输入第一次检尺高度与第二次检尺高度及量油时间三个数据,就可以快速换算出油井日产量。

附图说明

图1为本发明的油量计算APP页面;

图2为本发明的油量计算输入数据的APP页面;

图3为本发明的油量计算输出数据的APP页面。

具体实施方式

为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图对本发明的具体实施方式做详细的说明。

在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是本发明还可以采用其他不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本发明内涵的情况下做类似推广,因此本发明不受下面公开的具体实施方式的限制。

其次,本发明结合示意图进行详细描述,在详述本发明实施方式时,为便于说明,表示器件结构的剖面图会不依一般比例作局部放大,而且所述示意图只是示例,其在此不应限制本发明保护的范围。此外,在实际制作中应包含长度、宽度及深度的三维空间尺寸。

为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明的实施方式作进一步地详细描述。

下面结合附图对本发明的结构作详细的描述。

实施例1

本发明专利设计了一种油田高架罐液位监测方法,如图1-3所示,技术方案如下:包括如下步骤:

S1、设计前端交互页面;

S2、自动查表,实现调取和查询;

S3、计算产油量;

其中,步骤S1中,根据数据表的情况,确定前端页面动态录入数据为三个,分别为第一次检尺高度A、第二次检尺高度B和量油时间C。

其中,选择性数据二选一为原油密度D。

其中,前端录入内容后通过JavaScript Object Notation的数据交换格式来存储和表示数据。

其中,步骤S2中,查表时将对应的excel表格内容封装。

其中,按照50方罐量油换算表编写,以数组形式存储在程序源码中.

其中,步骤S3中,采用交互模式,前台交互的数据通过Json数组Json{A,B,C,D}传入后台,数据分别对应前端录入的{第一次检尺高度,第二次检尺高度,量油时间,原油密度},使用if语句查表得到最终的计算数值。

其中,进一步地,需要查询的表格为多行多列表格,使用多条件查询,则使用的if语句为多分支的if…else if语句。

其中,if…else if语句实现查表数据,使用MATLAB编写计算公式:

其中,公式为:产量=(第一次检尺高度-第二次检尺高度)÷量油时间×24×原油密度,产量的单位是吨,第一次检尺高度和第二次检尺高度的单位是米,原油密度的单位是吨每立方米,量油时间的单位是小时。

其中,原油密度为0.85吨每立方米。

其中,输入第一次测量液位的高度,再输入第二次测量液位的高度,两次测量间隔时间。

其中,两次测量间隔时间不超过24小时。

其中,选择所测量的高架罐内液体的类型,根据原油密度不同输入不同的原油类型。

其中,原油类型包括稠油和稀油。

其中,点击计算,经过内部运算,将油井日产量运算结果显示在屏幕上。

比如选择稠油时显示结果为20.46吨,代表此油井日产量20.46吨;如果选择是稀油,结果为18.7吨,代表此油井日产量为18.7吨。

本发明应用到油田生产现场,一是使单井高架罐液位计量得到了极大的便利,二是实现了单井高架罐液位精准计量,三是降低了工人的劳动强度。本发明计算产油量的方法简单,减少重复劳动、查表和计算工作,占用手机空间小。且本发明的功能交单一,使用简便,页面简洁

首先从我们的需求出发,根据使用要求和数据情况,确定做一款操作简便,界面清晰,占用空间不大的手机app。

第一步设计前端交互页面和编程:根据数据表的情况,确定前端页面动态录入数据为3个分别为A第一次检尺高度、B第二次检尺高度和C量油时间,选择性数据二选一为D原油密度。前端录入内容后通过JavaScript Object Notation这种轻量级的数据交换格式来存储和表示数据。

JavaScript Object Notation是一个标记符的序列(一下简称JSON)。这套标记符包含六个构造字符、字符串、数字和三个字面名。

JSON是一个序列化的对象或数组。

六个构造字符:

begin-array=ws%x5B ws;[左方括号

begin-object=ws%x7B ws;{左大括号

end-array=ws%x5D ws;]右方括号

end-object=ws%x7D ws;}右大括号

name-separator=ws%x3A ws;:冒号

value-separator=ws%x2C ws;,逗号

在这六个构造字符的前或后允许存在无意义的空白符(ws):

ws=*(%x20/;空间

%x09/;水平标签

%x0A/;换行或换行

%x0D);回程

JSON的值:

JSON的构成:ws值ws[1]

值可以是对象、数组、数字、字符串或者三个字面值(false、null、true)中的一个。值中的字面值中的英文必须使用小写。

对象由花括号括起来的逗号分割的成员构成,成员是字符串键和上文所述的值由逗号分割的键值对组成,如:

{"name":"John Doe","age":18,"address":{"country":

"china","zip-code":"10000"}}

数组是由方括号括起来的一组值构成,如:[3,1,4,1,5,9,2,6]

字符串与C或者Java的字符串非常相似。字符串是由双引号包围的任意数量Unicode字符的集合,使用反斜线转义。一个字符(character)即一个单独的字符串(character string)。

数字也与C或者Java的数值非常相似。除去未曾使用的八进制与十六进制格式。除去一些编码细节。[2]

一些合法的JSON的实例:

{"a":1,"b":[1,2,3]}

[1,2,"3",{"a":4}]

3.14

"plain_text"等等

JSON与JS对象的关系

很多人搞不清楚JSON和JS对象的关系,甚至连谁是谁都不清楚。其实,可以这么理解:

JSON是JS对象的字符串表示法,它使用文本表示一个JS对象的信息,本质是一个字符串。

如:

var obj={a:'Hello',b:'World'};//这是一个对象,注意键名也是可以使用引号包裹的

var json='{"a":"Hello","b":"World"}';//这是一个JSON字符串,本质是一个字符串

JSON和JS对象互转

要实现从JSON字符串转换为JS对象,使用JSON.parse()方法:

var obj=JSON.parse('{"a":"Hello","b":"World"}');//结果是{a:'Hello',b:'World'}

要实现从JS对象转换为JSON字符串,使用JSON.stringify()方法:

var json=JSON.stringify({a:'Hello',b:'World'});//结果是'{"a":"Hello","b":"World"}'

常用类型

任何支持的类型都可以通过JSON来表示,例如字符串、数字、对象、数组等。但是对象和数组是比较特殊且常用的两种类型。

对象:对象在JS中是使用花括号包裹{}起来的内容,数据结构为{key1:value1,key2:value2,...}的键值对结构。在面向对象的语言中,key为对象的属性,value为对应的值。键名可以使用整数和字符串来表示。值的类型可以是任意类型。

数组:数组在JS中是方括号[]包裹起来的内容,数据结构为["java","javascript","vb",...]的索引结构。在JS中,数组是一种比较特殊的数据类型,它也可以像对象那样使用键值对,但还是索引使用得多。同样,值的类型可以是任意类型。

基础示例

简单地说,JSON可以将JavaScript对象中表示的一组数据转换为字符串,然后就可以在网络或者程序之间轻松地传递这个字符串,并在需要的时候将它还原为各编程语言所支持的数据格式,例如在PHP中,可以将JSON还原为数组或者一个基本对象。在用到AJAX时,如果需要用到数组传值,这时就需要用JSON将数组转化为字符串。[3]

表示对象

对象是一个无序的“‘名称/值’对”集合。一个对象以{左括号开始,}右括号结束。每个“名称”后跟一个:冒号;“‘名称/值’对”之间使用,逗号分隔。

{"firstName":"Brett","lastName":"McLaughlin"}

表示数组

和普通的JS数组一样,JSON表示数组的方式也是使用方括号[]。

{

"people":[

{

"firstName":"Brett",

"lastName":"McLaughlin"

},

{

"firstName":"Jason",

"lastName":"Hunter"

}

]

}

这不难理解。在这个示例中,只有一个名为people的变量,值是包含两个条目的数组,每个条目是一个人的记录,其中包含名和姓。上面的示例演示如何用括号将记录组合成一个值。当然,可以使用相同的语法表示更过多的值(每个值包含多个记录)。在处理JSON格式的数据时,没有需要遵守的预定义的约束。所以,在同样的数据结构中,可以改变表示数据的方式,也可以使用不同方式表示同一事物。如前面所说,除了对象和数组,你也可以简单地使用字符串或者数字等来存储简单的数据,但这样并没有多大意义。此次的APP前台数据{"第一次检尺高度":"A","第二次检尺高度":"B","量油时间":"C","原油密度":"D"}以数组收集页面录入的数据Json{A,B,C,D},传到后台用于计算产油量。

接下来是后台程序编写:根据工作原理可知,程序需要实现自动查表和计算产油量,查表就需要把对应的excel表格内容封装到程序中,通过数组实现表格编写,内容严格按照“50方罐量油换算表”编写,以数组形式存储在程序源码中,可以方便实现调取和查询。然后编写交互程序,现已有前台交互的数据通过Json数组Json{A,B,C,D}传入后台,数据分别对应前端录入的{第一次检尺高度,第二次检尺高度,量油时间,原油密度},使用if语句查表得到最终的计算数值。if选择结构是根据条件判断之后再做处理的一种语法结构。默认情况下,if语句控制着下方紧跟的一条语句的执行。不过,通过语句块,if语句可以控制多个语句。if语句的最简语法格式如下,表示“如果满足某种条件,就进行某种处理”。

例如假设有num1和num2两个变量,它们的值分别是50和34。下面编写程序,要求使用if语句判断num1和num2的大小关系,并输出比较结果。其实现代码如下:

public static void main(String[]args)

{

int num1=50;

int num2=34;

if(num1>num2)

System.out.println("num1大于num2");

if(num1==num2)

System.out.println("num2等于num2");

if(num1

System.out.println("num1小于num2");

}

该段选择语句判断了num1值和num2值的大于、等于和小于关系。此处num1为50,num2为34,所以执行后会输出“num1大于num2”。

由于需要查询的表格为多行多列表格,需要使用多条件查询,if语句的主要功能是给程序提供一个分支。然而,有时候程序中仅仅多一个分支是远远不够的,甚至有时候程序的分支会很复杂,这就需要使用多分支的if…else if语句。通常表现为“如果满足某种条件,就进行某种处理,否则如果满足另一种条件才执行另一种处理……,这些条件都不满足则执行最后一种条件”。if…else if多分支语句的语法格式如下所示:

使用该语句实现查表数据最红使用MATLAB编写计算公式:

产量(吨)=(空高对应的数值-空高对应的数值)÷量油时间×24×0.85,再将计算结果返回到前台页面,这样就完成整个APP的功能流程。

以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明披露的技术范围内,根据本发明的技术方案及其构思加以等同替换或改变,都应涵盖在本发明的保护范围之内。

相关技术
  • 一种精馏塔顶温与回流罐液位解耦控制方法
  • 一种带液位监测的螺旋钻具及其施工方法
  • 高架罐液位显示与自动供油装置
  • 高架罐液位监控系统
技术分类

06120116334272