APP下载

Modbus协议在风电场数据通信中的应用

2023-07-13葛颖奇徐劲松游云汉韩增涛

机电信息 2023年13期
关键词:数据通信风电场

葛颖奇 徐劲松 游云汉 韩增涛

摘 要:针对风电场数据传输的可靠性、实时性需求,设计了基于Modbus/TCP协议的SCADA系统数据通信平台。深入研究了Modbus标准规约,介绍了该协议在风电场数据通信中的实现方法,并阐述了客户端和服务端软件的核心设计思想;分析了Modbus/TCP协议实现的一些关键技术问题,并对该协议使用中的通信问题提出解决办法,在实际工程应用中具有重要的参考价值。应用结果表明,所设计的Modbus数据通信平台运行稳定,具备较好的实时性,高效地支撑了风电场的数据传输业务。

关键词:Modbus/TCP协议;风电场;SCADA系统;数据通信

中图分类号:TP274    文献标志码:A    文章编号:1671-0797(2023)13-0030-05

DOI:10.19514/j.cnki.cn32-1628/tm.2023.13.008

0    引言

在工业控制领域,Modbus是一种非常重要的通信协议,它具有使用灵活方便、传输可靠的特点[1]。通过Modbus协议,不同厂商生产的异构系统设备可以简单可靠地连成工业网络,从而进行集中监控。Modbus良好的开放性、可扩展性和标准化使之成为一个通用的工业标准通信协议。目前在新能源电力行业,Modbus协议也得到了广泛应用[2-4]。

Modbus在工业自动化网络通信应用中,包括串行链路和TCP/IP两种实现方式。Modbus/TCP是运行在TCP/IP协议上的Modbus报文传输协议,它将Modbus协议帧嵌入TCP/IP数据帧中,利用网络传输Modbus协议报文。与串行链路通信相比,这种建立在以太网基础上的通信协议可扩展性更优,更易于构建工业以太网,数据传输效率更高[5]。

在风电行业,数据通信的可靠性和实时性是非常重要的,性能不稳定会导致信号传输异常,严重时会造成风电机组事故停机,对机组和电网安全都会造成重大影响。本文对Modbus/TCP协议的通信机制进行深入研究,开发了基于该协议的风电场SCADA系统数据通信平台,该平台替换了之前使用的商业组态软件通信平台。

由于之前的组态软件过于追求丰富的功能,缺少对风电领域应用场景的深入理解,因此存在适应性及软件健壮性差的问题。本文基于风电场数据通信的可靠性和实时性需求,设计了可以更好地支撑风电场数据传输业务的通信平台。

1    Modbus/TCP通信協议介绍

1.1    Modbus协议简介

Modbus是OSI模型第7层上的应用层报文传输协议,采用客户机/服务器模式通信,工程应用中主要进行实时数据的传输[6-9]。Modbus是一个请求/应答协议,它定义了应用数据单元(ADU)和协议数据单元(PDU),对请求和响应进行封装。此外,Modbus协议规定了其事务处理框架内使用的功能码和相应服务。首先Modbus ADU由启动Modbus事务处理的客户机创建,通过功能码向服务器请求执行某种服务,然后服务器对客户机发送的请求进行处理和应答。Modbus协议提供了4种基本数据模型,用于不同类型的数据传输,分别是线圈、离散量输入、保持寄存器、输入寄存器。

1.2    功能码定义

Modbus协议定义了一些公共功能码和供用户自定义的特殊功能码,用于操作4种基本数据类型,它们能够表示客户端对服务器端的命令请求意图。工业实时数据通信中常用的功能码有:0x01用于读线圈,0x02用于读离散量输入,0x03用于读保持寄存器,0x04用于读输入寄存器,0x05用于写单个线圈,0x06用于写单个寄存器,0x0F用于写多个线圈,0x10用于写多个寄存器。

1.3    Modbus/TCP报文封装

在TCP/IP网络上,Modbus请求或响应的报文封装格式如图1所示。Modbus/TCP ADU由MBAP报文头(Modbus应用协议报文头)和PDU组成,PDU由功能码和数据域构成[10]。Modbus/TCP的ADU最大长度为260字节,其中MBAP长度为7字节,PDU长度为253字节。

MBAP报文头是在TCP/IP网络上被用来识别Modbus ADU的专用报文头,与串行链路上使用的Modbus RTU ADU相比,这种MBAP报文头有所区别。MBAP报文头包括下列字段,如表1所示。

2    基于Modbus的风电场SCADA系统数据通信

风电场是由风电机组(包括机组单元变压器)、汇集线路、主升压变压器及其他设备组成的风力发电站,包括场控层、间隔层和过程层。场控层的风电场SCADA系统和间隔层的风机主控系统进行通信,从而对风机运行过程进行实时监视和控制。风电场SCADA系统应满足风电场运行控制的可靠性、实时性要求,其数据通信具有数据传输量大、实时性要求高的特点,并且需要具备较好的稳定性和抗干扰能力。

2.1    通信结构

本文设计了基于Modbus/TCP协议的风电场SCADA系统数据传输平台,实现对风电机组的高效监视和可靠控制,并具备遥测、遥信、遥调、遥控等远动功能,可以和调度控制中心、风功率预测系统进行协同互动。本文设计的风电场SCADA系统数据通信平台涵盖了Modbus客户端和Modbus服务端,客户端采集风电机组PLC和机组单元变压器的实时数据,服务端将数据转发给集控、风功率预测等系统。平台的数据通信结构如图2所示。

风电场的信息类型包括源信息(模拟量和状态信息)和派生信息(统计和历史信息)。风电机组包含风轮、发电机、变流器、机舱、偏航系统等主要部件信息,这些部件的数字量数据的传输使用Modbus功能码0x01操作的线圈类型和功能码0x02操作的离散量输入类型,模拟量数据的传输使用功能码0x03操作的保持寄存器类型和功能码0x04操作的输入寄存器类型;风机的启停控制使用功能码0x05,参数设置使用功能码0x10。平台的数据访问模型如图3所示。

2.2    Modbus客户端软件设计

SCADA系统的Modbus客户端需要与风电机组PLC、箱变测控装置进行通信,实时采集设备状态监测的模拟量和数字量数据。客户端軟件启动运行后,先根据业务配置封装Modbus请求报文,然后连接服务端并发送数据请求报文,最后接收服务端的响应进行解析。本文设计的Modbus客户端运行流程如图4所示。

客户端软件设计需注重规范性,仔细研究规约定义背后的用意,严格遵守Modbus协议的各个细节规定,对访问行为进行约束,比如生成报文时注意最大请求长度,以防止风机主控系统的Modbus服务端无法处理,导致请求失败的情况。客户端软件需具备断线重连功能,防止和风机主控的连接意外丢失。另外,客户端软件必须考虑不同Modbus服务端的差异性,以应对多种运行场景,所以需要具备灵活的配置功能,以适配不同的服务端。

2.3    Modbus服务端软件设计

SCADA系统的Modbus服务端负责将采集到的机组运行数据转发给调度控制中心、风功率预测等系统。服务端软件启动后,先根据业务配置进行TCP端口监听并等待客户端建立连接,然后接收客户端的Modbus请求并进行处理,最后发送响应报文。本文设计的Modbus服务端运行流程如图5所示。

服务端软件在实现Modbus协议规定的功能后,还需要更多地考虑在应用场景中软件的健壮性和服务可用性。例如,针对Modbus客户端的非法请求,服务端可以发送异常码作为响应,但是必须要保证服务可用,绝不能因此崩溃而不能处理合法请求。由于调度控制中心、风功率预测系统等客户端连接可能会中断后重连,因此服务端需要能识别、关闭失效连接。

3    关键技术分析

开发一个好的Modbus协议产品,不仅需要深入研究Modbus协议本身,还需要对其底层基础协议的运行机理进行深入理解。本文从规范性、可靠性、实时性三个方面对Modbus/TCP协议在风电场数据通信中的关键技术进行分析。

3.1    规范性

(1)事务处理标识符设计。MBAP报文头的事务处理标识符字段,用于将请求与未来响应之间建立联系。因此,对一个TCP连接来说,在同一时刻这个标识符必须是唯一的。本文设计的客户端,将事务处理标识符作为一个请求计数器,针对每个请求将计数器增加1,从而将请求和应答进行匹配。实际运行时,网络链路的通信质量会受干扰而产生波动,使得几个Modbus事务处理可能在一个连接上被同时激活,如果请求和应答没有匹配,就会导致采集数据跳变。某些厂家的Modbus/TCP服务端强制要求客户端请求报文的事务处理标识符为0,这显然不符合规范。

(2)功能码使用。在工程应用中,因为现场人员配置或者沟通错误等原因,通常存在功能码误用的情况,比如把读寄存器功能码0x03当成写寄存器功能码0x10来使用。功能码的混用,会导致后期技术改造和升级维护困难。选择正确的功能码是实现标准Modbus协议的一个重要方面。

3.2    可靠性

(1)TCP连接管理。实际运行中,网络链路中断或对端异常退出,会导致正常的Modbus通信连接被迫断开。此时,需要Modbus客户端和服务端有能力识别失效连接,并进行资源释放,否则不断增长的连接会导致客户端或服务端内存溢出。有些故障系统中发现很多TCP连接处于CLOSE_WAIT状态,就是因为应用层没有对该连接进行关闭。一般情况下,Modbus客户机比较容易识别连接的异常断开,服务端则需要根据应用场景设计一种判断机制来识别丢失通信的连接。本文Modbus服务端的TCP连接管理模块设定了请求超时机制,在“保持连接”计时器结束后,对超时的客户端连接进行清理。工业运行环境需要产品具备较好的健壮性和可靠性,能够长期稳定运行,因此该设计在工程应用中非常重要。

(2)异常数据处理。在生产环境下,对通道中的数据准确性进行校核,可有效防止异常数据对系统内部的稳定运行产生干扰。本文设计的Modbus客户端会对采集的测量值和状态量进行数据合理性检测和不良数据检测,对采集到的异常数据进行丢弃。本文设计的Modbus服务端会对接收的遥调和遥控命令进行检查,对异常命令不予执行。

3.3    实时性

(1)Modbus请求设计。本质上,Modbus协议通信的功能是一帧请求一段连续地址长度的数据,对于地址不连续或者超过最大请求长度的数据,需要采用分包的方式请求。本文SCADA系统和风机主控通信时,Modbus采集点表用连续编码的方式对地址进行规划,同时兼顾灵活性和实时性,从而使得SCADA系统对风机进行数据请求时,一帧可以返回最大长度的数据。Modbus数据传输中减少分包,既可以提高数据传输的实时性,也可以减轻网络负担。

(2)Nagle算法关闭。TCP/IP协议的拥塞控制使用了Nagle算法,并默认开启。该算法要求一个TCP连接上只能有一个未被确认的小分组,在该分组的确认到达之前,不能发送其他小分组。Nagle算法明显提高了网络利用率,但是增加了数据传输延时。对于像Modbus这种小包交互,且实时性需求较强的应用场景,应该启用TCP_NODELAY参数来关闭Nagle算法,使得报文可以尽快发送。本文设计的Modbus服务端和客户端通信程序都启用了TCP_NODELAY参数,以提高数据交互的实时性。

(3)TCP首部PSH标志位设置。在TCP报文头部中有URG、ACK、PSH、RST、SYN、FIN这6个标志比特,其中PSH这个标志位指示接收方应该尽快将这个报文段交给应用层。实际工程应用中包括很多异构系统设备,所有Modbus网络中的设备都应设置PSH标志位,使得对端接收报文后可以尽快处理。

4    测试结果

目前,本文设计的Modbus/TCP通信平台已经部署于多个风电场,功能上实现了对风电机组运行实时数据的采集和转发。该平台有效承载了SCADA系统的数据通信业务,可靠性较之前有了很大的提升,从而大幅减少了人工运维成本。

为了验证该平台的实时性,进行了通信性能测试。采用本文的Modbus/TCP客户端访问本文的Modbus/

TCP服务端,请求方式为连续读取保持寄存器,通信过程中使用Wireshark软件进行抓包分析,每秒的Modbus通信报文数量如图6所示。

测试结果显示,本文的Modbus/TCP通信平台一个连接每秒可以处理800个报文,即每秒处理400个Modbus请求,平均单个请求的处理时间为2.5 ms。在多连接场景下,本文设计的Modbus/TCP通信平台具备每秒处理20万个模拟点的能力,优于能源行业标准NB/T 31071—2015《风力发电场远程监控系统技术规程》要求的实时数据处理性能。

5    结束语

风电场的实时数据通信作为场站监控系统的核心部分,其性能直接决定了场站监控系统的运行水平,因此设计可靠的数据通信平台意义重大。本文对Modbus/TCP通信机理进行了深入研究,设计了基于Modbus/TCP协议的风电场SCADA系统数据通信平台,并分析了Modbus/TCP规约应用的核心技术。

本文提出的设计方法和关键技术可以显著提高风电场SCADA系统数据通信的可靠性和实时性,同时对其他Modbus工程应用的进一步优化也具有重要的参考价值。风电场实际应用表明,本文设计的Modbus/

TCP数据通信平台运行稳定,更好地满足了风电场数据传输需求,为风电自动化领域的实时数据监控提供了一种有效的解决方案。

[参考文献]

[1] 孙中豪,周兴社,张凯龙.基于μC/OS-Ⅱ的Modbus/TCP消息的类令牌环实时响应算法[J].计算机工程与科学,2014,36(9):1662-1667.

[2] 李伟.基于Modbus协议的工控节点设计与实现[J].计算机工程,2010,36(16):226-228.

[3] 张海源,任春梅,张冉.Modbus协议在电力系统中的应用[J].继电器,2007,35(17):31-34.

[4] 刘冉,庄红山,汪凯威,等.基于Modbus/TCP的EPON配网自动化通信系统[J].制造业自动化,2020,42(9):110-113.

[5] 张子实,赵静一,周枫.基于LabVIEW和Modbus/TCP的風电数据采集系统设计[J].自动化仪表,2018,39(7):47-50.

[6] 王佩,陈金鹰,童焦龙.面向物联网应用的嵌入式ModBus协议分析与实现[J].仪表技术与传感器,2018(7):102-106.

[7] 黄剑,张红梅,张向利,等.基于Modbus协议的数据采集与并行加密通信系统[J].计算机应用与软件,2017,34(3):260-266.

[8] 张仁斌,李思娴,刘飞,等.基于Modbus功能码细粒度过滤算法的研究[J].计算机应用研究,2018,35(1):277-281.

[9] 方崇全,陈玮,赵勇.WinCE下科维可编程控制器Modbus/

TCP IO驱动设计[J].计算机应用与软件,2014,31(4):327-329.

[10] 翁自觉,谢斌红.基于MODBUS协议的OPC UA服务器的设计[J].计算机应用与软件,2014,31(2):89-92.

收稿日期:2023-03-01

作者简介:葛颖奇(1987—),男,浙江宁波人,工程师,研究方向:工业以太网数据通信。

猜你喜欢

数据通信风电场
基于快牙平台实现全站仪与计算机的数据通信
基于PSS/E的风电场建模与动态分析
监测系统接口数据通信方式
含风电场电力系统的潮流计算
一种高效可靠的串行数据通信协议及处理算法
TCN实时协议栈过程数据通信研究
探求风电场的远景
代力吉风电场的我们
风电场点滴实录
广州蓄能水电厂B厂电能表数据通信研究与应用