首页 > 范文大全 > 正文

基于modbus协议的数据读取

开篇:润墨网以专业的文秘视角,为您筛选了一篇基于modbus协议的数据读取范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

摘要:Modbus协议被广泛地应用在工业过程控制中,是通用的工业标准之一。本文在研究Modbus TCP/IP协议的基础上,设计了基于modbus的数据读取的帧格式,并使用VC++ 2010实现了数据读取功能。

关键词:Modbus 数据读取 工业控制 网络通信

中图分类号:TP274.2 文献标识码:A 文章编号:1007-9416(2012)11-0049-02

Modbus是一种工业上开放的现场总线协议,是目前通用的工业标准之一。该协议能够使得各个厂家之间的控制设备能够相互通信和进行数据传输,在工业过程控制中具有广泛地应用[1]。Modbus协议包含三种模式,即Modbus TCP、Modbus RTU和Modbus ASCII模式[2]。本文在研究Modbus TCP协议模式的基础上,设计了一种基于TCP/IP的Modbus的数据读取功能。通过该读取功能,用户可以在PC机上可以读取PLC控制器上的数据。

1、Modbus TCP/IP协议数据帧的格式

由于Modbus TCP/IP协议运行于TCP/IP协议上,因此Modbus TCP/IP协议的数据帧被封装于TCP/IP协议数据帧中的数据单元中,作为TCP/IP协议中的数据部分发送给各种控制设备;支持Modbus协议的控制设备收到Modbus请求之后,根据请求的内容将结果返回给客户端。本文所设计基于Modbus TCP/IP的数据请求和响应帧格式如下图所示。

事务元标识符:该标识符用于事务处理的配对,该域中的内容为用户自行设定,如可以将每一帧的编号放在该域中。

协议标识符:该标识符用于系统内的多路复用,当使用的Modbus协议时,该值为0。

长度:该域中的数值表示后继域内容的字节数,包括单元标识符和协议数据单元。

单元标识符:为了系统内路由,使用这个域。在服务器的响应帧内容中服务器必须使用相同的值返回该域的内容。

本文设计的读写功能所用到的Modbus功能码的定义如下表所示。

表 Modbus功能码

协议的数据单元包括功能码和数据两部分。本文以读取2个寄存器的数据为例来说明该部分帧格式的设置。

功能码:读写多个寄存器的功能码为03,该域大小为1字节。

数据:数据部分包含读起始地址和读的数量。本文从起始地址开始连续读取2个寄存器的内容,因此读起始地址为0,该域大小为2字节;读的数量为2,该域大小为2字节。

2、数据读取功能的实现

本文在上一节设计的数据帧格式的基础上,使用VC++ 2010实现了基于Modbus TCP/IP的数据读取功能,并使用MODBUS Simulator作为Modbus的TCP服务器。

数据请求的主要代码如下:

MODBUS Simulator的地址0000-0001写入了67.5。如图2-2所示。

在数据读取客户端中,首先点击“连接服务器”按钮,客户端提示连接服务器成功后,点击“启动定时器”按钮,则客户端开始周期性地从Modbus服务器中读取数据,并显示在客户端上。

3、结语

本文在研究Modbus TCP/IP协议的基础上设计基于Modbus协议的数据读取的数据帧格式,并使用VC++ 2010实现了该数据帧的数据读取功能。通过该读取功能,用户可以在PC机上可以读取PLC控制器上的数据。

参考文献

[1]刘波,张文三,魏霞.基于Modbus协议的TCS-3000 DCS系统与S7-200 PLC之间串行通讯网络的实现[J].工业控制计算机,2012,25(2):33-35.

[2]杜雯雯,史运涛,刘伟川.基于PC的Modbus软件网关的实现[J].微计算机信息,2012,(9):353-355.