微波原油含水率检测仪与油田PCS通信的ZigBee实现
2022-12-01刘晓军秦红杰方浩孟敏
刘晓军 秦红杰 方浩 孟敏
1. 中石化河南油田分公司采油一厂,河南南阳 474780;2. 江苏麦赫物联网科技有限公司,江苏无锡 214603
0 前言
油田信息化管理是把生产监控作为重要手段,以完成数据采集、动态分析和自动化控制为目的,全面实现油田可视化、数字化、智能化的一种管理模式[1]。井口压力、温度、功图、位移、含水率和现场图像等数据采集是实现信息化的重要基础。
一般井口各设备数据上传过程:现场设备将数据送至RTU(Remote Terminal Unit)模块,RTU负责将数据上传到后台服务器,并将后台服务器发出的指令送到相应设备。目前井口各设备与RTU之间的连接主要分有线和无线2种方式:有线方式主要使用RS485总线;无线方式则是利用ZigBee网络。本文介绍微波原油含水率检测仪的ZigBee网络通信实现方法。
1 ZigBee技术
ZigBee是采用IEEE802.15.4的无线通信标准[2],是一种适用于短距离和低速率下小数据量传输的无线通信技术,有低功耗、低成本、低复杂度和容纳节点多(一个网络理论上可支持65,536个)等优点[3-4]。缺点主要有:无线频率容易受到干扰;各个ZigBee厂商协议栈太多或版本不兼容,造成各种ZigBee模块不能互相通信。
针对油井来说,采集的数据基本在20 m范围之内,并且空旷,部分功耗小的设备可用电池供电,适合采用ZigBee网络进行数据传输。
2 微波原油含水率检测仪
本文介绍的原油含水率检测仪能够测量原油中0%~100%含水率。其主要特点是采用微波在线测量方式,根据原油与水介电常数的巨大差异,对比微波速度变化测算出原油含水率[5]。
3 PCS系统网络结构图
图1为PCS系统网络结构图。中心控制室与现场各种仪表设备的通信通过因特网实现,服务器和现场RTU配合工作,达到操作员与现场设备的数据透明传输、实时控制的功能。历史数据存储于服务器上,供用户随时调阅查询。图1中的通信模块用于连接到2G/4G通信基站。
4 硬件设计情况
微波原油含水率检测仪中实现信号上传的主要硬件为MCU(Micro controller Unit)和ZigBee模块。其中,MCU选用意法半导体STM32F103C8T6芯片,基于ARM Cortex-M3内核,性能强大;ZigBee模块采用厦门四信通信科技有限公司的F8913D,其遵循中石化四化标准通信协议规范SZ9-GRM V3.01,具备中继路由和终端设备功能,最长报文可达300 Bytes。MCU和F8913D的接线连接如图2所示。
F8913D和MCU有3个引脚相连:RST是模块复位脚,为防止F8913D死机,需要在程序中检测通信回应报文,当检测到3次无应答报文时,则控制此信号进行模块复位;RX是通信接收,TTL电平,连接到UART1_TX;TX是通信发送,TTL电平,连接到UART1_RX。串口通信波特率设置为9600,起始位1,数据位8,停止位1,校验位无。
5 通信实现
5.1 通信参数设置
ZigBee网络通信中有3个重要参数:网络号、信道号和地址。每个网络都有唯一的标识符PAN ID(网络号),因此,F8913D必须与RTU的协调器信道号一致。首先确定网络号和信道号,根据中石化四化标准通信协议SZ9-GRM V3.01规定确认这2个参数:将油井名称做CRC16校验,以校验码为网络ID号,信道号为ID号对16取余再加11。网络号和信道号设置到RTU协调器和检测仪中保存,地址按RTU规定设置。
5.2 数据通信
RTU和原油含水率检测仪之间的数据通信过程如图3所示。
RTU接收到常规数据后,发送常规应答,结束本次通信,仪表进入休眠。休眠时间在应答数据中体现,若RTU没有应答,仪表不做重发处理。本含水仪不休眠,按RTU给的休眠时间定时发送数据即可。
5.3 ZigBee模块命令设置
MCU对F8913D的命令设置是通过AT命令实现的,根据节点类型和通信协议确定使用表1所示命令。
其中,1至10号命令是在使用模块前由USB-TTL线通过串口设置到ZigBee模块中,11、12号命令在仪表启动后根据存储的参数进行设置[6]。
表1 AT命令使用表
5.4 ZigBee通信程序实现步骤
(1)初始化程序。程序启动时按参数中网络号和信道号对ZigBee模块进行设置;
(2)检测和处理主程序。在主程序中一旦检测到网络号或信道号参数改变,需要重新对ZigBee模块进行设置。图4显示了信道号改变处理流程,网络号处理与此类似;
图中AT命令操作部分流程逻辑采用不同标记状态来控制,减少等待时间占用MCU。串口接收发送用中断,使用定时器返回判断等待时间,在主程序大循环中,根据标记来查看串口缓冲区数据,确定本次AT命令是否返回正确;
(3)定时发送数据报文程序。MCU按休眠时间间隔周期,通过F8913D模块向RTU发送数据报文。
5.5 报文实例和解析
微波原油含水率检测仪发送报文:
00 01 A0 12 30 12 00 01 00 00 0014 00 FF 00 FE 00 FD 00 FF 01 00 03 EC 04 EE 03 EC 04 EE
斜体部分为帧头数据报文,后面为数据内容,解析方式如表2和表3所示。
用户实际使用分钟含水率,每次发送报文后收到“OK”回复;若3次接收不到,则认为ZigBee模块死机,重新启动模块。
6 结束语
软件使用Keil MDK5编制,成功实现微波原油含水率检测仪与RTU通信,将数据上传到服务器,并在油田PCS系统显示。目前设备在现场正常运行超过2年,充分验证了本方案的实用性和可靠性。先进的原油含水率测量方法与低成本、高可靠的数据通讯方式有机结合,为油田无人化监测提供了成功且有益的尝试,为今后各类石油仪表传感器智能化探索了道路。
表3 数据内容报文解释