刘胜娃,曹湘华
(中国石油川庆钻探工程有限公司长庆钻井总公司,陕西 西安 710021)
随着物联网技术[1]的发展,钻井作业过程中的实时数据采集和智能处理技术得到了进一步的发展,成为钻井企业的迅速发展的新动力。石油钻井公司通过引进新的传感器技术[2]和数据采集、传输等技术,提高了钻井作业数据采集、传输和存储的智能化和自动化水平。通过数据处理、校验等操作后将实时采集到的数据利用作业现场的网络技术集中远传到数据控制中心进行数据存储及应用,以用于实时有效地分析各种不同钻井作业情况,极大地提高了钻井作业的实时决策水平以及钻井作业效率。
网络通信是将计算机信息技术与通信技术结合应用[3],在联网的情况下实现不同PC之间数据的传输。鉴于石油公司数据的保密性,需要设计一款功能特定、安全性高的并发远程系统供企业内部使用。
为了实现实时数据远传及多线程收发,本文以石油钻井现场作业数据远传为目的,采用socket的网络通信技术[4]与C#多线程编程技术[5]设计并实现数据的压缩、解压、加解密、编解码、校验与远程功能C/S模式架构的系统。该方法既能满足数据的实时传输需求,也能满足加密校验等功能要求。
软件系统的基本架构由井场端与数据中心服务器端组成,实现井场客户端实时读取钻井仪表控制系统写入本地数据库中的数据,并进行传输协议WITS[6]的封装、压缩[7]、加密[8]、校验[9]以及数据与心跳的发送。在数据中心服务器端完成数据的校验、解密、解压与WITS协议的解析,以及数据的动态存储。如图1所示。
图1 系统结构图
井场客户端界面如图2所示。客户端以多线程方式实时读取本地MySql数据库中的以Blob类型存储的数据,其中队号、井号、井ID与轨迹ID可通过配置文件进行配置,或通过界面方式进行输入;同时具有断线自动重新连接的独立线程,其核心代码如下:
图2 井场客户端用户界面
根据钻井现场作业参数与使用需求,设计了相关读取数据库中流数据的结构体解析、WITS的封装、压缩、加密、校验。以下为具体编写步骤:
数据中心服务端界面如图3所示.
图3 数据中心服务端用户界面
系统服务端根据发送数据,设计数据的读取、拼接、校验、解密、解压、WITS协议解析、数据存储与实时读取显示控制。以下为具体编写步骤:teamNo varchar(128) DEFAULT NULL, dataTime datetime DEFAULT NULL, “weightRange float DEFAULT NULL,weightZero float DEFAULT NULL, weightAngle float DEFAULT NULL, pressureRange float DEFAULT NULL, inc float DEFAULT NULL, az float DEFAULT NULL, gtf float DEFAULT NULL, mtf float DEFAULT NULL, “c1 float DEFAULT NULL, c2 float DEFAULT NULL, c35 float DEFAULT NULL, c64 float DEFAULT NULL, c65 float DEFAULT NULL,PRIMARY KEY (id)) DEFAULT CHARSET=utf8”;
string sql = “insert into data (wellId,trackId, wellNo, teamNo, dataTime, weightRange,weightZero, weightAngle, pressureRange,inc,az,gtf,mtf,c1,c2,c35,c64,c65) VALUES (@wellId, @trackId,@wellNo, @teamNo, @dataTime, @weightRange, @weightZero, @weightAngle,
@pressureRange, @inc,@az,@gtf,@mtf,@c1,@c2,@c35,@c64,@c65)”;
……………
步骤7:以启动定时器的方式查询数据表,并进行绘图展示。
本文根据钻井现场仪器数据远传实际需求,设计并实现钻井作业数据的实时远传系统的客户端与服务端,利用WITS协议、GZip、DES、CRC32算法对数据进行协议封装、压缩、加密、校验,并以多线程方式进行数据的接收发送。经现场井场与数据中心内网测试,验证了此系统的实时性与加密等功能要求,对于数字油田的发展具有重要意义。