admin 管理员组

文章数量: 1086019


2024年4月14日发(作者:手机淘宝一返回就回到顶部)

 2020年10月25日第37卷第20期

doi:10.19399/.2020.20.012

设计应用

基于Java实现的Modbus通信模块电气设备数据采集

王勇平,张英豪

(广州致新电力科技有限公司,广东 广州 510540)

摘要:Modbus作为一种工业通信标准,已经被广泛应用于工业实践。根据通信中网络类型的不同,Modbus通

信的实现方式主要有TCP/IP和RTU串行两种。TCP/IP方式的底层实现依赖于Internet和TCP/IP协议,而RTU

方式的底层实现则依赖于异步串行传输(通常是RS-232/422/485)即串口通信。基于此,主要研究和分析Modbus

TCP和Modbus RTU这两种通信方式下,不同电气设备数据采集中的传感器通信、通信中的数据格式、数据解析以

及数据存储方法。在实际应用中,Modbus通信可以快速建立主从机之间的通信,采集和存储环境温湿度、电流电压

功率以及光强信号等数据,在一般的工业实践中具有较好的运用价值。

关键词:Modbus;TCP;RTU;传感器;数据采集

Data Acquisition of Electrical Equipment in Modbus Communication Module Based on Java

WANG Yongping,ZHANG Yinghao

(Guangzhou Zhixin Power Technology Co.,Ltd.,Guangzhou 510540)

Abstract:As an industrial communication standard,Modbus has been widely used in industrial practice.

According to the different network types in communication,Modbus communication can be realized in two main ways:

TCP/IP and RTU bottom layer of the TCP/IP method depends on the Internet and TCP/IP protocols,

while the bottom layer of the RTU method is asynchronous serial transmission(Usually RS-232/422/485) namely

serial article mainly focuses on the research and analysis of the sensor communication in the data

collection of different electrical equipment,the data format in the communication,the data analysis,and the data

storage method under the two communication methods of Modbus TCP and Modbus practical applications,the

communication between the master and the slave can be quickly established to collect and store data such as ambient

temperature and humidity,current,voltage,power,and light intensity signals,which has good application value in

general industrial practice.

Keywords:Modbus;TCP;RTU;sensor;data collection

1 电力系统常用通信规约2 Modbus通信过程

电力系统通信规约(协议)是指通信双方必须

Modbus通信协议基本可以分为上位机查询和下

共同遵守的约定,也叫做通信控制规程或传输控制规位机回应两个部分的通信过程

[6]

程。通信规约的内容主要分为信息传送的具体步骤和

2.1 上位机查询

信息传送格式两部分。其中,信息传送格式包括收发主机先确定通信链路中所有从机设备的地址信

方式、传送速率、帧结构、帧同步字、位同步方式以息,然后上位机发送数据查询指令。为保证上位机能

及抗干扰措施等

[1-3]

。随着科学技术的不断发展,电够准确查询到下位机状态信息,上位机的查询指令中

力系统调度运行的信息传输要求不断提高,促使信息必须有和下位机一致的地址信息,同时保证此通信中

传输方式已逐步走向数字化和网络化。为此,国际电下位机收到的数据是上位机发送的。下位机通过上位

工委员会电力系统控制及其通信技术委员(ITCTC57)机数据中的功能码执行上位机所要完成的具体功能,

根据形势发展的要求,制定调度自动化和变电站自动同时在数据中还包含有下位机相应功能码的辅助信息。

化系统的数据通信标准,以适应和引导电力系统调度上位机发送的数据中还包含校验码,在Modbus中一

自动化的发展,规范调度自动化和远动设备的技术性般是CRC16。校验码主要是用来检测下位机收到的

[4]

。基于Modbus的传感器通信在数据采集方面有查询请求是否正确。在请求数据中加上校验码,可有

着广泛应用,常见的通信方式有基于串口(RTU)方效验证通信过程中数据是否被完整且正确接收

[7]

式和基于传输控制协议(Transmission Control Protocol,

2.2 下位机回应上位机

TCP)方式两类

[5]

。下位机接收到上位机的请求后,对此数据帧进

收稿日期:

2020-09-16

行请求应答即响应。在响应的数据中也必须包含相应

作者简介:

王勇平(1992-),男,陕西宝鸡人,本科,大

的功能码。功能码

[8]

是对下位机接收到上位机发送

数据架构工程师,主要研究方向为Java与Modbus通信。

数据的执行情况的响应,响应中包括功能码的实现情

2

况和校验码,以说明数据的接收是否准确和读写操作

的执行情况等。

3 基于Modbus的传感器通信

传感器通信主要根据通信接口分为Modbus TCP

和Modbus RTU串行两大类。

3.1 基于Modbus TCP传感器通信

在一次网络通信中,TCP协议要求每个通信对象

必须要知道此通信链路中每个节点的地址和端口号

[9]

例转换关系。

数据解析以下位机响应报文(16进制)01 03 04

02 92 FF 9B 5A 3D为例。温度计算规则是,若温度

小于0 ℃,则以补码形式上传,其中16进制的FF9B

转10进制是-101,再根据转换关系除以10,得到真

实温度为-10.1 ℃。同理,可得相对湿度为65.8%。

在应用程序中,使用的开发语言是Java,故根

据实际业务需求在MySQL数据库中建立数据采集表,

在程序中使用定时任务将采集的数据解析后封装为对

根据地址和端口号确定一个通信节点,识别通信节点

中发送的数据,并且产生对应的响应。响应时,通信

节点将数据通过Modbus发出。其他网络中包含了此

Modbus数据转换的包结构。这种转换为网络解决节

地址和路由路径错误检测提供了借鉴。

将传感器与其接收装置接电后,通过网线将传

感器接收装置和PC连接进行网络通信。此通信是基

于网络传输的,在应用程序中应用Socket技术,通过

传感器接收装置的IP和端口号建立连接。通信中传

感器接收装置为下位机,应用程序为上位机。

3.2 Modbus RTU传感器通信过程

将传感器与其检测装置接电后,通过串口可与

应用程序端实现通信。此通信中,传感器内置寄存器

作为通信中的下位机,而应用程序为上位机。

3.3 基于Modbus传感器通信中的数据格式

Modbus协议定义了一个比较简单且和底层通信

无关的协议数据单元(Protocol Data Unit,PDU)

[10]

包括功能码和数据。Modbus协议的数据帧由地址域、

功能码、数据单元以及校验码组成。上位机和下位机

的数据格式也是如此,只是在数据单元中稍有区别。

上位机的数据单元由寄存器地址和寄存器数量组成,

而下位机数据单元由数据字节数量和响应数据组成。

上位机请求数据示例:01 03 00 00 00 02 C4

0B

下位机响应数据示例:01 03 04 02 DB 01 16

0B EE

Modbus常见功能码有01(读线圈状态)、02(读(开

关)输入状态)、03(读保持寄存器)、04(读输入

寄存器)、05(写单个线圈)、06(写单个保持寄存

器)、15(写多个线圈)以及16(写多个保持寄存器)。

3.4 基于Modbus传感器通信中的数据解析与存储

上位机接收到下位机的响应数据后,要按照一

定的解析规则,在下位机返回消息帧中的数据单元中

解析16进制的消息帧。每种传感器的解析规则都不

相同,因此需要相应传感器的通信规约文档,以说明

下位机响应的数据中传感器采集的监测量字节数和比

应的对象,并使用MyBatis进行数据存储。

3.5 用Java实现Modbus传感器通信与数据采集

在Java中实现Modbus通信时,根据通信规约不同,

使用的实现方式也不相同,主要分为Modbus TCP和

Modbus RTU。

3.5.1 用Java实现Modbus TCP传感器数据采集

程序中,TCP方式采集传感器数据的实现方式

如下。

(1)用Socket getSocketConn(String host,int port)接

口获取Socket连接对象,用此接口建立应用程序与传

感器接收装置之间的网络通信连接。接口中,host参

数表示下位机IP,参数port表示下位机端口。

(2)用String getResponseCode(Socket socket,String

reqCode,int len)接口获取下位机响应。接口中,socket

参数表示建立网络连接的Socket对象,参数reqCode

表示应用程序需要发送的请求数据,参数len表示请

求数据中寄存器数量。

(3)用ListparseResponseCode(String code)

接口解析下位机返回的响应数据。接口中,参数code

表示下位机响应。

(4)用ListgetPartialMapResult(Socket socket,

String addr)接口获取业务中的传感器采集数据。接口

中,参数socket表示建立网络连接的Socket对象,参

数addr表示请求数据中的数据单元。

(5)用void socketClose(Socket socket)接口关闭网

络通信连接。接口中,参数socket表示建立网络连接

的Socket对象。

(6)用List insert(List recordList)接口将解

析后的业务数据存入MySQL。接口中,参数recordList

表示业务数据对象。

3.5.2 用Java实现Modbus RTU传感器数据采集

程序中,RTU方式采集传感器数据的实现方式

如下。

(1)用ArrayListfindPorts()接口获取当前

主机上的可用串口列表。

(2)用SerialPort openPort(String portName,int baudrate)

 2020年10月25日第37卷第20期

接口获取串口连接对象。接口中,参数portName表且采集程序运行稳定,对基于ModBus通信协议下的

示串口名称,参数baudrate表示串口波特率。数据采集分析应用场景具有借鉴意义。

(3)用void sendToPort(SerialPort serialPort,byte[] order)

接口实现上位机向下位机发送数据查询请求。接口中,

参考文献:

参数serialPort表示串口连接对象,参数order表示发

[1] 宋文好,徐志江.基于Modbus协议的远程无线抄表

送数据。

系统的设计与实现[D].杭州:浙江工业大学,2012.

(4)用byte[] readFromPort(SerialPort serialPort)接口

[2] 朱 晶,齐向东.基于OPC、Modbus以及

从下位机获取响应结果。接口中,参数serialPort表

ModbusTcp/Ip的iFIX与PLC的通信[J].电子器件,

2013,36(2):260-264.

示串口连接对象。

[3] 蒋湘涛,贺建飚,李楠华.电力信息采集的通用型通

(5)用void closePort(SerialPort serialPort)接口关闭

信规约解析系统研究与设计[D].长沙:中南林业科

串口连接。接口中,参数serialPort表示串口连接对象。

技大学,2012.

(6)用T getJdrkTempAndHum(int comNum)接口解

[4] 华 镕.从Modbus到透明就绪[M].北京:机械工

业出版社,2009.

析传感器响应,以获取业务数据对象。接口中,参数

[5] 谢景一.基于Modbus/RTU通信协议的工业控制系

comNum表示串口序号。

统[D].南京:东南大学,2019.

(7)用List insert(List recordList)接口将解

[6] 常一鸣,王 存.基于MODBUS TCP协议的上下位

析后的业务数据存入MySQL数据库。接口中,参数

机通信监控功能的实现[D].呼和浩特:内蒙古大学,

recordList表示业务数据对象。

2014.

[7] 卢石磊,赵荣珍.基于Modbus的RS-485总线通信

4 结 论

体系的流量控制协议研究[D].兰州:兰州理工大学,

2014.

研究的技术主要通过ModBus TCP/IP和ModBus

[8] 杨 静,沈昌祥.SCADA系统的Modbus TCP协议安

RTU两种通信方式,分别实现电气设备传感器数据

全研究[D].北京:北京工业大学,2016.

的采集和存储,方便了数据采集系统的快速集成开发。

[9] 程 超,徐红兵.工业控制网络Modbus TCP协议深

这不仅简化了通信规约解析的开发工作,也为电气设

度包检测技术研究与实现[D].成都:电子科技大学,

备智能化运维的数据采集分析提供了有效的实践借鉴

2016.

[10] 何建忠,赵子先.基于MODBUS协议的工业网关设

意义。目前,数据采集方案已经实际应用于多个项目,

计与实现[D].呼和浩特:内蒙古大学,2013.

(上接第30页)

和系统维护工作就能够达到信息交换的目的。

参考文献:

5 结 论

[1] 周 莹.软交换技术在电力通信系统中的应用前

景[J].中国管理信息化,2017,20(22):159-160.

软交换技术应用作为下一代网络的解决方案,

[2] 吴平燕.探讨软交换技术在电力通信系统中的应

存在较多的优越性,在电力通信网系统中应用软交换

用[J].信息记录材料,2017,18(5):96-97.

技术,应用效果显著。一方面,它从技术层面可以达

[3] 靳海涛.电力通信系统中的软交换技术应用[J].电子

到承上启下的效果;另一方面,它有效推动了相关企

技术与软件工程,2017(7):28.

[4] 莫华龙.软交换技术在电力通信中的应用探讨[J].通

业成功向下一代网络解决方案的演进。

讯世界,2017(4):158-159.


本文标签: 数据 采集 下位 传感器 上位