孟开元+杨海超+杨宇能
摘要:在考察数字化油田建设情况的基础上,研究油田现场无线仪表与RTU通信方式及其各参数的含义,提出了一种新型油田RTU调试软件设计思路。在油田现场,RTU与上位机软件之间的通信方式为串口Modbus或网口Modbus通信,在VS2010开发环境下,用C#编程实现这两种通信协议,调试人员可根据现场情况选择通信方式;将RTU和仪表的内部点表用XML文件描述,并将XML文件加载到调试程序中,通过发送不同的指令,用户可以读取和配置RTU和仪表的各项参数,绘制示功图。使用XML语言,可提升软件开发效率,节省软件开发时间。结果表明,该软件运行良好、可操作性强,降低了对现场调试人员的要求。
关键词:RTU;无线仪表;Modbus;XML
DOIDOI:10.11907/rjdk.171492
中图分类号:TP319
文献标识码:A 文章编号:1672-7800(2017)006-0050-03
0 引言
随着计算机网络技术、通信技术的快速发展,石油行业对油田的数字化、信息化、智能化要求越来越高,目前各大油田都在致力于数字化油田的建设。在传统的油田现场,仪表和RTU之间采用RS485串行接口或通过模拟量输入进行数据通信,该方式以其高可靠性、高适应性、易扩展性[1],在油气田监控中得到了广泛的应用。但是这种方式也存在以下不足:①调试人员需要去油田现场通过串口调试软件或者直接修改仪表程序对仪表进行配置,浪费时间且容易出错,对调试人员的专业技能要求比较高,而且由于部分油田距离较远,环境恶劣,增加了现场维护成本;②由于油田现场环境复杂多变,抽油机机械运动导致传输线路容易损坏,加之其它因素使得传输信号受到的干扰加剧,导致信号不稳定。
Zigbee以其低复杂度、低功耗、低成本、高可靠等优点,在智能家居等领域得到广泛应用。近年来,在油田现场,无线仪表开始兴起,实践证明,Zigbee作为仪表和RTU之间的通信方式完全可行,油田现场仪表-RTU-上位机通信结构如图1所示。
本文在考察数字化油田信息传输流程的基础上,设计与实现了基于Modbus通信协议的油田RTU调试软件。
1 软件总体设计
1.1 设计目标
首先,本系统可以根据油田现场实际情况选择RTU与上位机之间的通信方式是串口Modbus还是网口Modbus,从而实现数据的读写交互;其次,可以读取RTU型号代码、序列号、固件版本、软件版本等常规数据以及RPC信息、仪表信息,采集示功圖数据并且绘制示功图;最后,可以配置仪表、井口、RTU的相关参数,开启或者关闭RTU等功能。系统功能模块如图2所示。
1.2 系统开发流程
本系统首先编程实现串口Modbus和网口Modbus通信,然后用ModScan32软件验证数据包的正确性,最后进行数据读取,即获取信息和配置参数。系统软件开发流程如图3所示。
2 通信模块实现
2.1 Modbus通信协议
Modbus是由Modicon在1979年发明的,是全球第一个真正用于工业现场的总线协议,也是目前工业现场总线中较为流行的总线协议,标准的Modbus协议物理层接口有RS232、RS433、RS485和以太网口[2]。本系统RTU和上位机物理层使用的接口为RS232和以太网口。Modbus协议是一项应用层报文传输协议,包括Modbus ASCII、Modbus RTU、Modbus TCP/IP 3种报文类型[3]。其中Modbus ASCII、Modbus RTU在串行链路上传输,Modbus TCP/IP在以太网上传输。
由于标准Modbus RTU协议的物理层为串口通信,因此应用层数据单元ADU的最大长度为256字节。如图4所示为Modbus RTU通用数据帧格式,因此,协议数据单元PDU的长度为:256-Server address(1 byte从地址)-CRC(2 byte CRC校验)=253 bytes。
Modbus TCP/IP是运行在传输控制协议上的Modbus 报文传输协议[4]。互联网编号分配管理机构IANA给Modbus协议赋予TCP端口号为502[5]。Modbus TCP/IP通用数据帧如图5所示。
功能码占一个字节,编号为0的功能码未定义。因此,共有127功能码,它们一共分为3类:公共功能码、用户自定义功能码、保留功能码[6]。
2.2 通信模块实现
使用VS2010开发环境集成的SerialPort控件实现串口数据的读写,自定义一个控件ipBox用以接收用户输入的RTU的IP地址。使用ComboBox下拉菜单显示调试软件和RTU的通信方式,即计算机串口的COM口或者网口。在实际应用中,仪表和RTU的数据及相关参数都存储在RTU的寄存器中,由于油田现场的仪表较多,因此参数也较多,每个参数所占用寄存器的单元个数也较多。为了方便管理,将这些参数有规律地存放在RTU的寄存器单元中,并绘制成如图6所示的点表,然后根据点表将这些信息编成XML文件,当需要对某个寄存器读写时,只需要加载rtu.xml文件并读取相应的信息即可。
本文在Modbus协议的基础上,将Modbus数据帧的Data部分划分为两部分,第一部分占用2个字节,表示参数存放的寄存器的起始地址,第二部分占用2个字节,表示占用的寄存器个数。
因此,定义一个函数public int MakeData(byte cmd,short addr,short len,ref byte[]data)形成Modbus数据帧。函数参数含义:
cmd:功能码,该参数的含义为读/写单个或者多个RTU单元的数据。
addr:RTU存储单元起始地址。
len:一次读/写RTU存储单元的个数。
data:前3个参数形成的数据帧存放在data数组中。
当数据帧形成以后,判断RTU与上位机之间的通信方式,如果是串口通信,则使用SerialPort控件的成员函数Read(byte[]buffer,int offset,int count)、Write(byte[]buffer,int offset,int count)和RTU交互,完成數据的读写操作;如果是以太网口通信,用Socket套接字实现与RTU的通信,WSAStartup()、socket()、bind()、send()、recv()函数可以完成一次通信,使用的TCP端口号为502。
3 显示界面设计和通信测试
显示界面设计主要是调试软件的界面布局,使用的控件主要有:Button控件、ComboBox控件、自定义的IpBox、Label控件、TextBox控件、DataGridView控件以及Chart控件等。
测试通信和数据帧是否正确的方法为:利用ModScan32软件向RTU发送和调试软件相同的命令,对比数据帧每一个字段,看是否相同。经过测试,RTU和上位机之间能进行正常通信,数据帧的格式正确。
4 结语
该软件实现了与RTU之间的串口和网口通信。经测试,能够实现正常通信,且可准确获取RPC、仪表、RTU信息的各项参数,同时可正确采集功图数据并绘制示功图。在仪表、RTU和上位机能正常通信的前提下,该软件能完成仪表、RTU、井口的配置。经过现场测试,该软件运行稳定良好,并成功应用于某油田现场。
参考文献:
[1]李涛,王双友.智能化配电系统中Modbus协议转换的实现[J].自动化与仪表,2016(1):30-33.
[2]杨艳华,周永录,苏红军.通用串口到Modbus RTU的协议转换器设计与实现[J].计算机测量与控制,2014(2):604-606.
[3]王兴贵,张明智,杜莹.Modbus RTU通信协议在智能仪表与工控机通信中的应用[J].低压电器,2008(2):8-11.
[4]张隆希.嵌入式Modbus协议交换机的设计[J].机电工程技术,2016(Z2):232-236.
[5]王力.Modbus RTU从站通信协议在嵌入式系统中的实现[J].石油化工自动化,2011(5):46-48.
[6]吕国芳,唐海龙,李进.基于Modbus RTU的串口调试软件的实现[J].计算机技术与发展,2009(9):236-238,241.
(责任编辑:孙 娟)
英文摘要Abstract:On the basis of investigating the digital oilfield construction,this paper studies the communication mode between oilfield field wireless meter and RTU,the meaning of its parameters and puts forward a new design idea of the RTU debugging software.In the oil field,the most used communication method between RTU and the host computer software are serial Modbus and Ethernet Modbus.In the VS2010 development environment,we use C# to program these two communication protocols and user can choose different protocol according to the requirement of the oilfield.Then use XML file to describe the point table inside of RTU and the meter.At last,the XML file would be loaded into the debug software.By sending different instructions,user can read or configure the parameters of RTU and meter and draw the work diagram.The XML language speed up the software development and saving software development time.The results show that the software is operational well and reduces the requirements for on-filed personnel.
英文关键词Key Words:RTU;Wireless Meter;Modbus;XML