《电子技术应用》
您所在的位置:首页 > 测试测量 > 业界动态 > 储油罐实时监测与管理系统的设计与实现

储油罐实时监测与管理系统的设计与实现

2009-08-10
作者:杜英坤, 林开颜

    摘 要: 国内多数加油站依靠手工或液位仪对储油罐油品进行管理,其测量准确性、实时性、快捷性均难以满足加油站信息化需求。在深入研究液位仪通信技术的基础上,将液位仪和计算机信息技术结合起来,设计出一种新的储油罐监测系统,实现了实时测量并自动记录油罐内的各类参数以及自动进销存管理、自动油罐校准技术、远程监测等功能。实践证明,系统的测量准确性、高效性及实时性在加油站管理中发挥了重大的作用,具有广阔的应用前景。
    关键词:储油罐;测量;液位仪;信息技术

 

    加油站是油料收、发、储藏等作业的基层单元,加油站信息化建设对于方便生产生活、加快石油产业建设步伐都有重要意义。在我国,由于受经济水平、技术条件等诸多因素的制约,加油站对储油罐的监测手段中靠手工检尺、人工计量、人工巡检还占有相当大的比例[1]。人工计量不仅测量精度、效率、可靠性以及可维护性难以满足油库信息化建设的需求,而且对罐内是否进水更无从检查。有些规模大、效益较好的加油站虽然采用了现代化液位仪器具,但仅靠液位仪同样难以满足加油站信息化管理的要求。其不足之处主要体现在以下:
    (1)功能单一,管理和操作液位仪数据不便。普通液位仪提供了储油罐各类数据的监测功能,但往往需要人工在液位仪面板上多次按下对应按键才能完成,而且有些品牌的液位仪控制器不具备液晶显示、键盘等人机接口,这给管理和维护带来不便;
    (2)无法自动获取加油机的销售数据,进而自动形成油罐的进销存数据;
    (3)数据不能远程传输和共享,管理部门难以掌握库存数据,油品配送不方便。
    鉴于此,本文设计了一种储油罐监测与管理系统。该管理系统将信息技术与液位仪测量技术结合起来,不仅可以自动采集、存储及管理油库收、发、存信息及报警信息,而且还可以自动生成库存记录和自动进油记录,减少操作人员的数量,提高操作效率和油库安全管理水平等,并可将各类存储数据进行远程传输,方便油品配送。
1 储油罐监测系统总体方案设计
1.1 系统结构和配置
    加油站管理系统的拓扑结构如图1所示。其中,计算机、加油机通信控制器和液位仪控制器放置于营业房内(如图1中虚线框所示)。同时,计算机与加油机通信控制器通过RS232通信方式相连,采集加油机的销售数据,而液位仪控制器与油罐内的各个探棒相连接,实时测量油罐的库存、进油、温度、液位等信息。采集到有效数据后将这些信息以RS232通信方式传输到计算机中。计算机既可以通过液位仪控制器获取库存、进油数据,又可以通过加油机通信控制器获取加油机销售数据,进而可形成进销存数据。

 


    本系统中,现场探测设备选用美国维德路特公司的TLS系列数字式磁致伸缩液位仪和探棒,计算机采用普通工控机。
1.2 系统主要功能
    系统的主要功能如表1所示。

 


2 系统通信技术及实现方法
2.1系统通信的硬件连接

    通信方式采用RS-232标准串行通信,硬件连接可采用标准9针或25针接口。以9针为例:第2针为液位仪发送数据,第3针为液位仪接收数据,第5针为公共接地。液位仪通信接口可以直接连在计算机上,也可通过Modem连在计算机上。
2.2 通信命令格式
    (1)通信数据字节传输格式
    液位仪接收和发送数据都是以ASCII码的形式进行的,字节数据格式为:

   

    主机和液位仪的通信数据格式必须一致,否则通信不能进行。液位仪通信数据格式选择可以通过面板上的键盘进行设置。波特率可以选择为以下几个中的一个:300 b/s、1200 b/s、2400 b/s、4800 b/s、9600 b/s;同样地,主机波特率的设置也必须和液位仪一致才能进行通信。
    (2)通信命令格式[2]
    ① PC向液位仪发送的所有命令都要遵循如下通信格式:

   

    其中,SOH:控制字符,ASCII值为01,命令起始标志。
    Security Code:命令安全码,由6个数字密码或一些字母组成,它可以用面板上的开关设定,也可以配置命令设定,也可以是通过接口通信传递过来的配置命令设定。此项出于安全考虑而设的,为可选项。
    Function Code:功能代码,由6个字符组成。功能代码是液位仪用来向主机作出响应或者接收主机命令的,不同的密码代表不同的具体含义。如代码“I201”是灌内油品存量报告,代码“I202”是油品销售报告等。
    Data Field:数据域,包含完成选定功能的必要信息,比如配置信息等。
    ②液位仪作出的响应则遵循下列格式:

   

    其中,SOH:控制字符。
    Function Code:功能代码,和液位仪收到的功能代码应该一致。
    Data Field:通常是选定功能的必要信息,如日期、时间和状态等。
    &&:表示数据位停止,后面的是校验位。
    Checksum:校验位,对此位以前的数据进行校验(包括控制字符),由4个表示十六进制的ASCII字符构成(即2B)。校验码是从此位以前所有数据的二进制下累加和的补码形式。
    ETX:ASCII值为03的命令结束控制字符。下面以读取库存数据的I201命令为例来说明液位仪通信命令格式。
    主机命令格式:
    i201TT
    典型的液位仪回答:
    i201TTYYMMDDHHmm-TTpssssNNFFFFFFFF...TTpssssNNFFFFFFFF...&&CCCC
    其字段具体含义如表2所示。

 


3软件设计
3.1 串口通信设计
    串口通信利用VC++6.0开发环境里封装的MSComm控件来完成主机与液位仪之间的通信。MSComm控件在串口编程时非常方便,其使用步骤可概括如下[3]
    (1)定义一个串口对象
    如  CMSComm?m_MSComm
    (2) 串口初始化
    //选择COM1
    m_MSComm.SetCommPort(1) 
    //设置接收缓冲区
    m_MSComm.SetInBufferSize(1024) 
    //设置发送缓冲区
    m_MSComm.SetOutBufferSize(1024)
    //全部接收数据
    m_MSComm.SetInputLen(0)
    //二进制方式读写数据
    m_MSComm.SetInputMode(1)
    //一接收就引发OnComm事件   
    m_MSComm.SetRThreshold(1)   
    //设置波特率校验位等。
    m_MSComm.SetSettings('9600,n,8,1')
    //打开串口
    m_MSComm.SetPortOpen(TRUE)
    (3)串口数据发送
    CByteArray arr;
    arr.RemoveAll();
    arr.SetSize(nSize);
    for(i=0;i       {//pData指向发送缓冲区
    arr.SetAt(i,pData[i]);
    }
    if(m_commctrl.GetPortOpen())
      {//向串口发送数据    m_commctrl.SetOutput(Cole
    Variant(arr));
    }
    (4)接收数据:
    当串口接收到数据时,会产生串口事件中断,在相应中断函数中:
    VARIANT vaRecData;
    int k; short nCommValue;
    nCommValue= m_commctrl.GetCommEvent();
    unsigned char pRecDataBuffer[1000];
    if(nCommValue == 2)
    {//接收数据中断
    k=m_commctrl.GetInBufferCount();
    if(k>0)
    m_commctrl.SetInputLen(k);
    vaRecData = m_commctrl.GetInput();
    unsigned char * pData;
    pData =(unsigned char*)vaRecData.parray->pvData;
    for(int i=0;i    {//读取数据到接收缓冲区   pRecDataBuffer[i]= pData[i];
    }
    …
    }
    通过以上步骤,就可以进行串口数据通信。
3.2管理系统软件流程
    液位仪主机开始实现管理系统软件后,管理软件首先会根据各项设置生成一个主界面,如图2所示。用来模拟加油站各个油罐的液位、水位、余空的高度,并以不同的颜色显示,便于用户直观观察。而界面的下方列表中则详细显示了油位、油量、水位、水量、余空、温度等重要数据的具体值。所用命令的种类和功能如表3所示,液位仪管理软件依次向每个油罐发送命令,每个命令处理完所有油罐后才会转入下一命令继续执行,命令循环往复进行。这样液位仪管理软件就可以获取各个油罐的库存信息、进油信息、状态及报警记录,并保存在数据库中供用户查询。液位仪管理系统能结合加油机管理软件获得的加油数据(销售数据),生成进销存报表,并可通过通信软件把报表发送到远程服务器,方便职能部门进行分析、统计,达到远程可了解油罐库存状态,方便油品配送的目的。

 

 


4自动油罐校准技术的实现方法
    自动油罐校准技术是对油罐容积表动态地进行校准。普通油罐由于长期深埋于地下,在运行过程中受压力、土石层变化、地下水位等储多因素的影响,不可避免地产生变形、倾斜,因此会导致预先设置在液位仪控制器中的容积表不准确。本管理系统基于VEEDER ROOT公司AccuChart技术的基础上,由程序自动向液位仪控制器发送数据,实现自动油罐校正,从而保证了油品的进、销、存管理的准确性。下面就本系统中采用的自动油罐校准技术作一阐述。
    实现自动油罐校准可分为以下3个步骤:
    (1)实现自动校准需要获取加油机的提枪、挂枪信号及本次加油量及加油机的累计泵码数,这些数据可通过加油机管理软件获得。加油机管理软件和液位仪管理软件运行在同一计算机上,两者可通过进程通信来完成数据交互。而进程间通信程可通过以下步骤实现(在加油机管理软件系统中):
    ①首先得到液位仪系统管理进程的句柄。用 FindWinTitle函数得到。
    ②用COPYDATASTRUCT结构体装载要发送的数据。
    ③把装载的数据通过WM_COPYDATA消息发送至液位仪管理软件。
    (2)液位仪管理软件响应WM_COPYDATA消息,获取相应数据并发送到液位仪控制器,液位仪控制器接收到命令后就会把此次交易所产生的数据进行保存。发送的数据即是从加油枪加油时传递过来的数据。液位仪控制器接收到此数据后就和油罐内液位量的变化作对比,进而计算出由于油罐倾斜、温度变化、油罐不规则等因素所产生的误差。
    (3)当液位仪控制器接收到了足够有效的数据时,就会为每个油罐建立一个最佳的容积表,最佳容积表一旦建立就完成了校准过程。因此、自动油罐校准流程如图3所示。

 

 

    油罐的校准过程在加油站正常售油时即可进行,而且不需要任何人工干预。在油罐容积表校准期间,油位的浮动范围应该覆盖整个油罐的运营范围。一旦采集了足够的数据后,控制器就会自动生成新的油罐容积表,从而完成整个校准过程。通常,校准过程一般需要1个多月,加油站内的所有油罐可以同时进行校准。
    基于数字式磁致伸缩液位仪的储油罐实时监测与计量管理系统,与单纯用液位仪相比,具有可靠性高、性能稳定、效率高、管理方便等显著优点。结合了VEEDER ROOT的高精度液位仪控制器和信息技术,本系统不仅实现了精确测量各类参数、方便销存管理和自动生成各类报告记录的功能,而且实现了远程管理和配送油品、自动油罐校准等高级功能。为加油站自动化监测和管理提供了完善的解决方案。目前该系统已经在上海、辽宁、安徽等多家加油站内获得成功运行,获得较好评价。
参考文献
[1] 王鹏飞,李著信,方雪.几种常见油罐液位计的性能特点及选用[J].重庆工业高等专科学校学报,2004,19(1):31.
[2] VEEDRE. Veedee  root serial inteface manual for TLS-300 and TLS-350 UST monitoring systems[R].2006,Manual Number 576013-635 Revision L.
[3] 张筠莉,刘书智.Visual C++实践与提高串口通信与工程应用篇 [M]. 北京:中国铁道出版社,2006.

本站内容除特别声明的原创文章之外,转载内容只为传递更多信息,并不代表本网站赞同其观点。转载的所有的文章、图片、音/视频文件等资料的版权归版权所有权人所有。本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如涉及作品内容、版权和其它问题,请及时通过电子邮件或电话通知我们,以便迅速采取适当措施,避免给双方造成不必要的经济损失。联系电话:010-82306118;邮箱:aet@chinaaet.com。