玉管通地理,朱笔点天文
        欢迎光临文天软件之家
 
全站搜索
联系方式


网 址:文天软件之家

    www.jh-lzf.com

联系人:文天(刘中甫)

邮 箱:jh-lzf@21cn.com

地 址:湖北·武汉

    中国石化·江汉油田

    石油工程技术研究院

    信息中心

  

天气信息
新闻详情
程控油水浸试验装置的自动控制
来源:━━━━《江汉采油工艺》2003第6期,2005年江汉油田“计算机技术在勘探开发中的应用”二等奖作者:刘中甫网址:http://www.jh-lzf.com浏览数:10

程控油水浸试验装置的自动控制

摘  要:本文简述了JHK-1程控油水浸试验装置的软件设计流程图及软件的主要功能,并针对软件设计、调试及实际运用过程中出现的若干问题,提出了解决问题的方法,总结了软件设计的一些体会。

关键词:监控  采集  传感器  阀  I/O口

一、概述

JHK-1高温高压油浸、高压水浸试验装置(以下简称试验装置)是一套用于模拟井下工具的实际工作状况,对井下工具的质量进行检验的实时监控系统。它借助计算机软件控制各种机械执行装置和电动控制部分,实现油浸罐的温度测量与控制、油浸罐及水浸罐的压力测量与控制等功能。

该试验装置包括1个油浸试验罐、2个水浸试验罐、执行控制部分和高压管线。每个试验罐包括上腔、下腔和中心管三个部分,而每个部分又都有一个压力传感器、一个进液阀及进液阀位移传感器、一个出液阀及出液阀位移传感器。

二、软件设计原理

该试验装置程控软件的设计原理如图1所示。试验前,用户必须设置好试验参数(如选择试验罐、设置压力控制方式、设置阀门开关状态、给定试验压力值及试验温度值);试验时,机电控制接口卡控制油/水泵的启与停及阀门的开与关,信号采集接口卡检测阀门状态并采集压力数据,串行通讯口控制并采集温度数据,同时系统将采集的温度与压力数据进行A/D转换、显示与存贮;试验后,对试验数据进行曲线分析并打印。

三、软件主要功能

根据试验装置总体要求,控制软件按功能分为温度/压力的数据采集与控制、阀位移传感器检测、压力传感器电气参数校正、用户管理与用户权限设置、数据处理等五大模块。

1、温度、压力的数据采集与控制

此模块包括手动试验与自动试验两个子模块。

对于手动试验,用户必须根据试验要求选择试验罐、设置压力控制方式、设置阀门开关状态、设置试验压力值及试验温度值。设置完成后,打开高压泵进行压力试验,系统便自动执行加温、加压程序,实时监测并存储试验罐温度及试验罐上、中、下三个部位的压力值。若采集的温度大于用户设定的温度值,则系统自动关闭PID电源停止加温。若采集的压力值大于用户设定的压力值,则系统自动关闭高压泵,整个试验就此完成。若采集的温度或压力值超出了试验装置硬件设定的报警值,则系统自动关闭PID电源或关闭高压泵,并弹出温度或压力报警窗口,同时试验装置蜂鸣器发出报警声音。

自动试验除具有手动试验的所有功能外,还可按疲劳试验要求,反复进行打压、保压、补压或放压过程,直至用户设定的循环次数为止。

2、阀位移传感器检测

此功能用于检测所有阀门的运行状态。三个试验罐各对应一组阀门:中心管进液阀、中心管出液阀、上腔进液阀、上腔出液阀、下腔进液阀、下腔出液阀。检测每个阀门时,都要进行一次开阀与关阀的动作,均可能产生四种状态之一:开阀正常、关阀正常、阀未到位、阀位置传感器故障。

若测试时显示 “阀未到位!”或“阀位置传感器故障!”,此时应立即排除故障,并反复测试直至正常。

3、压力传感器电气参数校正

正常情况下,系统应用传感器出厂时标明的电气参数,测量误差小于0.1MPa。当压力测量误差超出精度范围时,可以由用户微量校正传感器标明的电气参数,从而校正测量误差。

JHK-1试验装置共有9支压力传感器,即每个试验罐的上、中、下打压腔各有一支压力传感器。对这些传感器进行校正时,必须关闭高压泵(禁止打压),并随时观察手动试验中“数据监测”窗口显示的压力测试值是否接近于0,如此反复,直到满意为止。

4、用户管理与用户权限设置

鉴于JHK-1试验装置为高温高压系统,若软件设计存在问题,极易造成管线爆裂而导致人员伤亡或设备损坏,因此,在试验全程、在程序的每一部分都进行了严格的安全性检查,如检测阀门状态及高压泵状态,一旦发现它们的运行状态与实验要求不符合时便立即停止试验,并提示用户排除故障。

此外,为了增加系统的安全性,本系统还设置了多道安全门。用户身份验证(即系统的第一道安全门)就是通过“用户管理”来实现的,只有经过系统管理员定义过的用户才能使用本系统。而用户使用本系统的权限(即系统的第二道安全门)就是通过用户“权限设置”来实现的。

若一个用户对压力标定、手动试验、自动试验、用户管理四项权限都不具备,则此用户只能进行数据处理、查看联机帮助、切换用户身份等。

任一用户,一旦进入系统后,主系统便开始记录用户的所有操作过程(历史记录),直至其退出系统。中途切换用户时,系统便开始记录新用户的所有操作过程,直到此用户退出系统或再次切换其它用户。只有系统管理员,才能查看历史记录。

5、数据处理

“数据处理”模块用于显示、打印在“手动试验”及“自动试验”子模块中采集的温度、压力结果数据或曲线。

四、软件设计方法

1、软件开发及使用环境

本系统在WIN98+(VB6+Spk3)环境下开发,适用于在WIN9X及其以上操作平台上运行。

2、软件结构流程

软件系统流程如图2所示。其中,“手动试验”及“自动试验”为本软件的两大主要功能模块。

3、软件设计要点

⑴ I/O端口的读写问题

在计算机系统中,每个硬件设备都分配有相应的I/O地址或IRQ,读取某个I/O地址的内容,就可获取某个硬件设备的状态,而向某个I/O地址写入约定的内容便可控制某个硬件设备的动作。

在VB中控制串行通讯口的读写操作是件相当容易的事,这是因为VB提供了MSComm串口通讯控件(本程序利用该控件采集温度信息);然而,VB却未提供对I/O端口直接进行读写的方法(控件、函数等),这是因为在Windows保护模式下,很多低端操作会被操作系统阻隔在外(如I/O、IRQ、DMA等),以保证系统稳定。因此,要想在VB中直接控制I/O端口的读写操作(即通过读写信号采集控制卡的I/O端口,达到控制阀与泵等设备的目的),就必须借助其他语言(如VC)编写底层的各种操作,并编译生成DLL(动态链接库),然后在VB中调用。

例如,实现数值输出功能时,在VC中的函数申明为:

int  _outp(unsigned  short  port , int  databyte);  / port参数为I/O地址,databyte参数为输出值/

同样,实现数值输入功能时,在VC中的函数申明为:

int  _inp(unsigned  short  port);  / port参数为I/O地址/

将上述的两个函数集合起来,并一起编译成DLL(文件名:dio.dll)后,便可被VB调用了。在VB中调用dio.dll时,还必须在模块中应用DECLARE语句声明DLL函数:

Declare Sub DIO_OutputByte Lib "dio.dll" (ByVal Address As Integer, ByVal DataOut As Integer)

Declare Function DIO_InputByte Lib "dio.dll" (ByVal Address As Integer) As Integer

一旦对dio.dll进行申明后,便可使用由dio.dll提供的DIO_InputByte及DIO_OutputByte函数在VB下读写IO接口数据了。如:

DIO_OutputByte &H220, 0   '向端口&H220写0

DIO_InputByte &H220       '读端口&H220内容

⑵ 合理设置开阀延迟时间

各试验罐压力控制阀的开阀延迟时间是阀门开启到位的时间,必须经过这段时间的延迟后,软件才开始读取阀的状态信息。

如果此参数设置过小(如300ms),阀门正处于动作过程(即不确定状态),此时软件采集到的阀状态信息是不准确的,从而引起错误判断:当阀门故障或未到位时,系统本应提示用户“阀故障或阀未到位!”,并且中断试验,但由于延时不足,而采集到的阀状态信息却为阀动作前的状态信息(如开阀正常或关阀正常),此时系统认为阀门处于正常工作状态而继续试验,从而导致管线爆裂、设备损坏及人员伤亡的严重后果;相反,当阀门被正常打开或关闭时,因延时不足,而采集到的阀状态信息却为阀动作前的状态信息(如阀故障或阀未到位),此时系统认为阀门处于故障状态而中止试验。

如果此参数设置过大(如1500ms),虽然软件采集到的阀状态信息是准确的,但因延时太长,而增加了不必要的试验时间。经多次测试,认为开阀延迟时间为600ms~800ms最为合理。

⑶ 泵的状态控制(开泵与关泵)

JHK-1试验装置有低压油泵(简称低压泵)、高压油泵及高压水泵(二者简称高压泵)三个试验泵。

低压泵是监控阀门开关状态及高压泵运行的基本动力。在进入“手动试验”、“自动试验”、“系统自检”等子系统时,程序必须自动打开低压泵电源,为“试验罐选择”、“压力控制方式”、“阀控制” 及“泵控制”等功能提供必要的操作动力。为此,可在公用模块中定义子程序OpenCloseLowPump:

Public Sub OpenCloseLowPump(ByVal OpenClose As Boolean) '开/关低压泵

'&H158为信号采集控制卡对应低压泵的I/O地址,数字“16”为打开低压泵电源的控制位。

   If OpenClose = True Then

     DIO_OutputByte &H158, 16    '开泵

   Else

     DIO_OutputByte &H158, 0     '关泵

   End If

End Sub

然后,在各子系统运行窗体的Form_Load事件中加入代码:

OpenCloseLowPump True    '打开低压泵

出于安全考虑,在调整阀门状态时,必须保证中心管进液阀、上腔进液阀及下腔进液阀三个进液阀不能同时处于关闭或故障状态,一旦发现三个进液阀同时处于关闭或故障状态,则提示错误信息,并使“高压油泵开关”及“高压水泵开关”键均不起作用。若选择了油浸试验罐,则“高压油泵开关”键有效,“高压水泵开关”键无效;反之,若选择了水浸试验罐,则“高压水泵开关”键有效,“高压油泵开关”键无效。

另外,在进行压力试验时,若采集压力值大于设定压力值,则系统自动关闭高压泵停止打压。

⑷ 阀的状态检测与控制(开阀与关阀)

获取试验罐压力控制阀的状态信息(打开状态、关闭状态、阀未到位、阀位置传感器故障)并控制其开关状态(开阀与关阀)是本软件的基本单元模块,它应用于“手动试验”、“自动试验”、“系统自检”等子系统。同样,出于安全考虑,只要执行过开阀与关阀动作,都要检测阀状态,一旦获取的阀状态信息不符合试验要求,将立即停止试验并提示用户排除故障。

⑸ 用户信息编辑

由于VB提供的MSFlexGrid控件对表格单元的编辑功能有限,在设计MSFlexGrid表格单元的编辑功能时,一般都是通过在单元格上适时显示或隐藏Text文本框或Combo下拉列表框,并编辑框内的内容来实现的。如果直接在MSFlexGrid表格单元中进行用户信息及用户权限编辑,当然是最直观最方便的方法,但是由于在滑动垂直滚动条时,较难控制编辑框的显示与消隐(即在被编辑的单元格移出显示区时应消隐编辑框,在被编辑的单元格移入显示区时应显示编辑框)。因此,为克服这些问题,本软件应用“用户信息编辑区”固定所有编辑控件解决了这个问题。

五、应用分析

本软件使用一年多来,对油田各类井下工具进行了试验和检测。以下对两个应用实例进行分析:

1、用手动试验子程序对某套Y341-114注水封隔器进行试验。试验过程是:对封隔器打中心管压30MPa,坐封后保持中心管压力,接着打下压和上压。试验曲线如图3所示。

从图中可以看出,打上、下压时不能起压,说明封隔器未完全坐封,封隔器上下窜通。于是取下封隔器调整压缩距,重新组装后,再次试验正常坐封起压。

2、用自动试验子程序对某套Y341-114堵水封隔器进行试验。试验过程是:对封隔器打中心管压至30MPa,保压5分钟后放掉中心管压力;打下压至30MPa,保压5分钟后放掉下压;打上压至30MPa,保压5分钟后放掉上压,完成一个循环过程。试验曲线如图4所示。

从图中可以看出,封隔器能够正常坐封,可承受上、下压力30MPa,密封良好。

通过以上两个试验分析可以看出,本软件能准确地控制和记录试验过程,从而帮助工作人员正确分析井下工具的性能。

六、结论

1、本软件为JHK-1试验装置实现人机对话的接口系统,操作方便,安全可靠。

2、本软件功能完善,不仅具有数据采集、数据处理等功能,而且还具有完善的在线帮助功能及错误捕获功能,对超温、超压及压力泄露等现象还有报警与停机保护功能。

3、应用此软件对井下工具进行检验,避免了上井现场试验,不仅节省了大量的试验经费,而且极大地缩短了试验周期。