文档介绍:基于modbus协议数据读取摘要:Modbus协议被广泛地应用在工业过程控制中,是通用的工业标准之一。本文在研究ModbusTCP/IP协议的基础上,设计了基于Modbus的数据读取的帧格式,并使用VC++2010实现了数据读取功能。关键词:Modbus数据读取工业控制网络通信中图分类号::A文章编号:1007-9416(2012)11-0049-02Modbus是一种工业上开放的现场总线协议,是目前通用的工业标准之一。该协议能够使得各个厂家之间的控制设备能够相互通信和进行数据传输,在工业过程控制中具有广泛地应用[1]。Modbus协议包含三种模式,即ModbusTCP、ModbusRTU和ModbusASCII模式[2]。本文在研究ModbusTCP协议模式的基础上,设计了一种基于TCP/IP的Modbus的数据读取功能。通过该读取功能,用户可以在PC机上可以读取PLC控制器上的数据。1、ModbusTCP/IP协议数据帧的格式由于ModbusTCP/IP协议运行于TCP/IP协议上,因此ModbusTCP/IP协议的数据帧被封装于TCP/IP协议数据帧中的数据单元中,作为TCP/IP协议中的数据部分发送给各种控制设备;支持Modbus协议的控制设备收到Modbus请求之后,根据请求的内容将结果返回给客户端。本文所设计基于ModbusTCP/IP的数据请求和响应帧格式如下图所示。事务元标识符:该标识符用于事务处理的配对,该域中的内容为用户自行设定,如可以将每一帧的编号放在该域中。协议标识符:该标识符用于系统内的多路复用,当使用的Modbus协议时,该值为0。长度:该域中的数值表示后继域内容的字节数,包括单元标识符和协议数据单元。单元标识符:为了系统内路由,使用这个域。在服务器的响应帧内容中服务器必须使用相同的值返回该域的内容。本文设计的读写功能所用到的Modbus功能码的定义如下表所示。表Modbus功能码协议的数据单元包括功能码和数据两部分。本文以读取2个寄存器的数据为例来说明该部分帧格式的设置。功能码:读写多个寄存器的功能码为03,该域大小为1字节。数据:数据部分包含读起始地址和读的数量。本文从起始地址开始连续读取2个寄存器的内容,因此读起始地址为0,该域大小为2字节;读的数量为2,该域大小为2字节。2、数据读取功能的实现本文在上一节设计的数据帧格式的基础上,使用VC++2010实现了基于Modbus