水的存在会降低天然气的热值和管道的输送能力,会加速天然气中酸性组分对管道和设备的腐蚀,还可能会与天然气中的一些气体生成天然气水合物而堵塞管道和阀门。这些都会影响输气管道的平稳供气和生产装置的正常运行。因此,准确而有效地监测天然气中饱和水汽含量对于管道输送和生产装置的正常运行具有重要而深远的意义[1]。
天然气中饱和水汽含量通常用水露点指标来表示[2]。现场有时为了方便比较,经常涉及天然气水含量与水露点的换算问题。目前,国内某些天然气站场的在线水含量/水露点仪内置软件对于天然气水含量/水露点之间的换算采用ASTM D 1142:1995标准。现场调研发现由该标准换算得到的水露点值与国家标准仲裁方法冷镜法[3]测定的水露点值偏差很大[4]。为了解决此问题,设计开发了水含量/水露点换算仪,该换算仪内置软件换算采用ISO 18453:2004标准。
基于Visual Studio 2008集成开发环境,以C++语言进行开发。通信协议采用OPC (Object Linking and Embedding for Process Control)协议。
该软件的总体设计是客户应用程序通过OPC接口[5]访问SCADA系统的服务器,对现场数据进行读取,显示、换算和存储。从结构上将该系统划分为3个部分:数据配置模块、系统模块和数据库模块。数据配置模块主要用来配置OPC服务器中的数据,将所需数据信息保存起来,在换算仪中进行显示;系统模块主要包含两个子模块:数据显示模块和换算模块。用户可通过该模块查看现场数据,对现场的水露点和水含量进行换算,使用户了解现场的生产情况;数据库模块作为一个数据容器,保存该系统的实时数据和历史数据,方便用户了解现场的情况。
在Client/Server架构的软件模式中,服务器应用程序分为进程内、进程外两种,它是服务的提供者,而客户端作为服务器的使用者,一方面需要动态创建服务器实例,另一方面通过客户和服务器之间的通信规约,调用服务器的各种服务,为上层业务处理提供前端数据。
客户端和服务器的通信主要分为:创建并连接服务器对象;添加组、项;读写数据。OPCServer安装服务器中,Client通过注册表查询服务器并列表,然后客户端选取列表中服务器获取其CLSID号,为服务器创建一个COM对象。
如果服务器应用程序没有启动,则系统自动启动服务器应用程序。一旦COM对象创建,客户就会得到一个IOPCServer接口,它作为OPCServer的主要接口,负责创建OPCGroup,返回其他接口的指针,保证Client可以调用Server的接口函数。客户端浏览服务器Item,选取所需的Item,添加到Group对象中。Server实时监控组中的项,一旦项的属性发生变化立即通知客户端,数据流结构含有项值和质量标签,客户端解析数据流结构并使用它们来刷新客户端显示。程序框架流程如图 1所示。
已知天然气干气组分(摩尔分数)、水含量(mg/m3)和天然气总压力计算天然气的水露点;或者已知天然气干气组分(摩尔分数)、水露点(℃)和天然气总压力计算天然气的水含量(mg/m3)。
在气(用V表示)、液(用L表示)两相相平衡系统中必须满足以下条件[6]。
气相中组分i的偏摩尔逸度与液相中组分i的偏摩尔逸度相等。即:
也就是气相组分i的偏摩尔逸度系数(φiV)和液相组分i的偏摩尔逸度系数(φiL)满足下式:
式中,xi与yi分别表示组分i在液相和气相中的摩尔分数。
状态方程选用PR(Peng-Robinson)方程,见式(3):
式中,V为气体摩尔体积,m3/kmol;R为气体常数,R=8.314 5 kJ/(mol·k);p为气体压力,Pa;T为气体温度,K;a(T)和b都为系数,由式(4)、式(5)确定:
式中,Tc为临界温度,K;Tr为相对温度,K;pc为临界压力,Pa;a(Tc)和α(Tr)由式(6)、式(7)确定:
式中,k为与物质有关的常数的函数, k、Tr分别由式(8)、式(9)确定:
式(8)中,ω是物质的偏心因子。
用压缩因子Z表示的PR方程见式(10):
式中,A、B为中间计算变量,由式(11)、式(12)确定:
为确保准确计算在冰态和液态之上的蒸汽压,水的α(Tr)函数表达式与其他组分不同,分为两部分:
① 温度范围为223.15~273.15 K,使用冰态之上的蒸汽压数据。
② 温度范围为273.16~313.15 K,使用液态之上的蒸汽压数据。
当223.15 K≤T<273.15 K时:A1=0.106 025,A2=2.683 845,A3=-4.756 38。
当273.16 K≤T<313.15 K时:A1=0.106 025,A2=2.683 845,A3=-4.756 38。
多组分混合气体采用如下混合规则:
其中:
式(14)中,xi为混合组分中各组分的物质的量浓度;式(16)中,kij为二元交互作用参数,n=12。
本计算中引入以温度为自变量的交互作用参数,以获得对气液平衡的满意描述,交互参数计算公式如下:
天然气纯组分数据,以及kij0和kij1的数值查表可得。联立以上各个公式,导出纯组分逸度系数计算公式如下:
结合混合规则,混合天然气中组分i的偏摩尔逸度系数的计算公式如下:
由于气液平衡时,液相只有水。因此,计算液相组分的偏摩尔逸度系数时使用纯组分逸度系数计算公式(18)。气相为天然气的混合组分时,则只需要计算水蒸气的偏摩尔逸度系数即可,即使用公式(19)进行计算。
由天然气干气组分(摩尔比)、水含量(mg/m3)和天然气总压力计算水露点的具体步骤为:
① 由天然气干气组分及标准状况下的水含量计算出含水蒸气的天然气的摩尔组分。
② 由假设的水露点,结合天然气压力、含水蒸气的天然气的摩尔组分和混合规则计算气相天然气的压缩因子ZV,结合公式(19)计算天然气气相中水蒸气的偏摩尔逸度系数。
③ 由假设的水露点,结合天然气压力,由公式(10)计算液相水的压缩因子ZL,结合公式(18)计算天然气液相中水的偏摩尔逸度系数。
④ 判断气相中水蒸气的偏摩尔逸度与液相中水的偏摩尔逸度是否相等,即是否满足公式(2)。如果相等,则假设的水露点即为所求;如果不等,则需要重新假设水露点进行计算,直到满足公式(2)为止。
由于水露点计算水含量的过程同上,因此此时输入的是天然气的压力、水露点和天然气干气组分。
水露点换算仪硬件部分包括:开发版、仪器外壳、电源、液晶显示屏。为了满足实时性好、计算速度快的开发要求,选用FLEXEM FE2000系列开发板,运行系统为WinCE操作系统。该装置的配置如下:CPU为单核处理器,主频400 MHz,字长32位,支持串口、TCP/IP等多种通信方式,并有USB HOST与USB SLAVE接口,方便与其他外设相连接。仪器外壳采用铝合金材料设计制作,结构简单、轻巧。电源采用24 V直流电源并且具有隔离电源模块。液晶屏采用TFT液晶触摸显示屏,可触摸操作。
天然气在线水露点换算程序置入换算仪ROM中,设置开机自行启动。图 2是正在运行中的水露点换算仪的界面。
换算仪有两种工作模式,即:自动模式和手动模式,默认情况下是自动模式,当与服务器连接时自动获取对应标签的值并显示;计算出水露点或者水含量的值并显示;刷新时间和数据采集周期相同,从而做到了真正的实时在线连续换算。当通讯出现故障或是其他原因需要时,可以将换算仪设置为手动输入模式,通过手动输入参数,离线计算得到水露点或者水含量。
试验装置如图 3所示,在服务器中安装OPCMaster_UR.exe软件,在水露点换算仪中安装开发的OPC客户端软件,设置其运行模式为自动模式。在自动模式下,根据已知参数计算水露点的情况进行试验。
试验步骤如下:
① 按照图 3所示连接好试验设备。
② 在服务器中运行OPC服务器程序OPCMaster_UR.exe,新建组对象Group,新建标签Item(各标签分别表示压力、水含量、天然气的12种干气组分),设置各个标签的属性。
③ 启动水露点换算仪,运行开发的OPC客户端软件,输入服务器的IP,与服务器进行连接。如果连接成功则进行下一步,否则需配置换算仪的COM。
④ 新建组、新建标签。在新建标签时会自动搜索服务器中建立的相应标签,设置使其一一对应起来。这时换算仪显示屏上显示当前时刻对应参数的值。
⑤ 重新启动水露点换算仪。
使用2009年在西气东输的7个站场的测量数据进行验证。表 1列出了各站的天然气组分,表 2列出了各站的绝对压力、现场在线水分仪测量的水含量、现场在线水露点仪测量的水露点值、采用标准仲裁方法-冷镜法测量的水露点值和水露点换算仪计算的水露点值。图 4是现场在线水露点仪测量结果和水露点换算仪计算结果误差对比分析图。
试验结果如下:
① 水露点换算仪显示的参数与服务器中对应参数完全一致,并且随着服务器中参数的变化而同步一致地变化,延迟时间不超过0.1 s。
② 现场在线水露点仪与冷镜法测量的水露点相差很大,约为2~9 ℃,而采用换算的方法算出的水露点与冷镜法测量的水露点相差均不超过1 ℃。
③ 从每组来看,换算法所得的水露点都比在线水露点仪所测的水露点更接近于真实值(标准仲裁方法-冷镜法测量的水露点)。
试验表明,换算仪能够实时在线运行,并且具有很好的换算精度和换算效率,换算方法科学合理。
开发了基于OPC通信的在线天然气水含量/水露点换算软件,设计了水露点换算仪的硬件。经过试验验证,水露点换算仪可以实时在线运行,具有很好的换算精度和换算效率。