Modbus协议主要有两个版本RTU和TCP/IP,RTU能够经过RS485接口实现,TCP/IP能够经过以太网口实现,这两种协议都是工控行业、自动化行业经常使用的。下面以RS485接口、Modbu-RTU来介绍数据通讯的过程。编程
Modub-RTU协议的具体内容数据结构
该协议是主从方式的通信方式,有一个主机能够挂接多个从机,每一个从机具备惟一的地址用来辨识身份,并经过不通的功能码来实现所要读取/写入的内容。做为简单的应用,主要涉及到0x03读保持寄存器功能码、0x06预置单个寄存器功能码、0x10预置多个寄存器功能码等。读保持寄存器功能码0x03当主机发送03功能码时,代表主要想要获取从机某个寄存器里的内容,一条完成的命令包括主机发送的数据和从机回复的数据,分别举例以下:主机发送: 01 03 00 32 00 02 xx xx主机回复: 01 03 04 a5 d4 1812 xx xx数据和字节含义以下图所示。ide
主机所发送的命令表示,想要读取1号从机从0x32开始的2个寄存器的内容,而从机回复0x32和0x33寄存器内的数据,总共4个字节。最后两个字节是校验码。预置单个寄存器功能码0x0606功能码是主机用来向从机的某个寄存器写数据的,一次智能操做一个寄存器。主机所发送的数据举例以下:主机发送:01 06 00 32 12 32 xx xx主机发送的数据和字节含义以下图所示。spa
该功能码,从机所回复的数据和主机下发的数据是一致的。该条指令的含义为:主机想给1号从机的0x32寄存器中写入0x1232数据,最后所跟的是校验码。预置多个寄存器功能码0x1016功能码也是写寄存器可是与06所不一样的是,该功能码能够连续写多个寄存器,主机下发的数据结构为:地址、功能码、寄存器起始地址、寄存器个数、要写入数据的字节数、数据、校验码等。从机回复的数据格式为:地址、功能码、寄存器起始地址、寄存器个数、校验码等。数据格式举例和字节含义以下图所示。3d
所表示的含义是,从0x0034开始连续写入四个字节的数据到2个寄存器中,最后两个字节是校验码。以上三个功能码都是很是经常使用的,除此以外,还有不少个功能码,每一个功能码都表明不通的含义,以上数据都是须要编程来实现的。blog