MODBUS协议功能码与报文解析485功能码.docx
《MODBUS协议功能码与报文解析485功能码.docx》由会员分享,可在线阅读,更多相关《MODBUS协议功能码与报文解析485功能码.docx(14页珍藏版)》请在冰豆网上搜索。
MODBUS协议功能码与报文解析485功能码
MODBUS协议
Modbus是一种串行通信协议,是Modicon于1979年,为使用可
编程逻辑控制器(PLC)而发表的。
事实上,它已经成为工业领域通
信协议标准,并且现在是工业电子设备之间相当常用的连接方式。
M
odbus比其他通信协议使用的更广泛的主要原因有:
公开发表并且无版税要求相对容易的工业网络部署对供应商来说,修改移动原生的位或字节没有很多限制
Modbus允许多个设备连接在同一个网络上进行通信,举个例子,
在数据采
个由测量温度和湿度的装置,并且将结果发送给计算机。
集与监视控制系统(SCADA)中,Modbus通常用来连接监控计算机和
remoteterminalunit(RTU)。
Modbus协议目前存在用于串口、以太网以及其他支持互联网协
议的网络的版本。
大多数Modbus设备通信通过串口EIA-485物理层进行[1]。
对于串行连接,存在两个变种,它们在数值数据表示不同和协议
细节上略有不同。
ModbusRTU是一种紧凑的,采用二进制表示数据
的方式,ModbusASCn是一种人类可读的,冗长的表示方式。
这两
个变种都使用串行通讯(serialcommunication)方式。
RTU格式后
续的命令/数据带有循环冗余校验的校验和,而ASCn格式采用纵向冗余校验的校验和。
被配置为RTU变种的节点不会和设置为ASCn变种的节点通信,反之亦然。
对于通过TCP/IP(例如以太网)的连接,存在多个Modbus/TCP变
种,这种方式不需要校验和的计算。
对于所有的这三种通信协议在数据模型和功能调用上都是相同的,只有封装方式是不同的。
Modbus有一个扩展版本ModbusPlus(Modbus+或者MB+),不过
此协定是Modicon专有的,和Modbus不同。
它需要一个专门的协处理器来处理类似HDLC的高速令牌旋转。
它使用IMbit/s的双绞线,并且每个节点都有转换隔离装置,是一种采用转换/边缘触发而不是电压/水平触发的装置。
连接ModbusPlus到计算机需要特别的接口,通常是
支持ISA(SA85),PCI或者PCMCIA总线的板卡。
Modbus协议是一个master/slave架构的协议。
有一个节点是
master节点,其他使用Modbus协议参与通信的节点是slave节点。
每
个slave设备都有一个唯一的地址。
在串行和MB+网络中,只有被指
定为主节点的节点可以启动一个命令(在以太网上,任何一个设备都能发送一个Modbus命令,但是通常也只有一个主节点设备启
个ModBus命令包含了打算执行的设备的Modbus地址。
所有设
备都会收到命令,但只有指定位置的设备会执行及回应指令(地址
0例外,指定地址0的指令是广播指令,所有收到指令的设备都会
执行,不过不回应指令)。
所有的Modbus命令包含了检查码,以确
定到达的命令没有被破坏。
基本的ModBus命令能指令一个RTU改变
它的寄存器的某个值,控制或者读取一个I/O端口,以及指挥设备回送一个或者多个其寄存器中的数据。
有许多modems和网关支持Modbus协议,因为Modbus协议很简
单而且容易复制。
它们当中一些为这个协议特别设计的。
有使用有线、无线通信甚至短消息和GPRS的不同实现。
不过设计者需要克服一些包括咼延迟和时序的冋题。
MODBUS通信过程如下图
MODBUSRTU报文格式
设备地
功能代
CRC校验
结束符
起始位
数据
址
码
T1-T2-T3-T4
8Bit
8Bitn个8Bit
16Bit
T1-T2-T3-T4
MODBUSASCn报文格式
设备地
起始位功能代码数据
交互标识协议标识报文长度
设备标识功能代码数据
宀卄2字节2字节2子节
白,一般为0高字节在一般为0亠
刖
1字节
也就是设1个字符n个字符
备地址
结東符址验
2个字2个字
1个字符2个字符n个字符2个字符
符符
MODBUSTCP报文
实际上MODBUSRTU与ASCH的内容是完全相同的,不同的的AS
Cn方式用标识帧起始,用“CRLF”标识帧结束。
校验采用L
RC,把RTU帧中一个字节的内容换成了2个ASCn字符。
比如在RTU
方式下设备地址01只有一个字节,在AScn方式下转换成字符串“0
1”(16进制的3031)O
MODBUSTCP中的设备标识,功能码等与MODBUSRTU相同,
可以认为是在MODBUSRTU报文的前边加了一个头,去掉了CRC校
验这个尾。
MODBUS协议定义了4种基本数据类型:
可读写位数据,只读位
2个字
1个字符2个字符n个字符
验
2个字
2个字符符
MODBUSTCP报文
交互标识
协议标识
报文长度
设备标识
功能代码数据
2字节
一般为0
2字节
一般为0
2字节
高字节在
刖
1字节
也就是设
备地址
1个字符n个字符
实际上MODBUSRTU与ASCH的内容是完全相同的,不同的的AS
Cn方式用S"标识帧起始,用“CRLF”标识帧结束。
校验采用L
RC,把RTU帧中一个字节的内容换成了2个ASCn字符。
比如在RTU
方式下设备地址01只有一个字节,在AScn方式下转换成字符串“0
1”(16进制的3031)O
MODBUSTCP中的设备标识,功能码等与MODBUSRTU相同,
可以认为是在MODBUSRTU报文的前边加了一个头,去掉了CRC校
验这个尾。
MODBUS协议定义了4种基本数据类型:
可读写位数据,只读位
2个字
1个字符2个字符n个字符
验
2个字
2个字符符
MODBUSTCP报文
交互标识
协议标识
报文长度
设备标识
功能代码数据
2字节
一般为0
2字节
一般为0
2字节
高字节在
刖
1字节
也就是设
备地址
1个字符n个字符
实际上MODBUSRTU与ASCH的内容是完全相同的,不同的的AS
Cn方式用S"标识帧起始,用“CRLF”标识帧结束。
校验采用L
RC,把RTU帧中一个字节的内容换成了2个ASCn字符。
比如在RTU
方式下设备地址01只有一个字节,在AScn方式下转换成字符串“0
1”(16进制的3031)O
MODBUSTCP中的设备标识,功能码等与MODBUSRTU相同,
可以认为是在MODBUSRTU报文的前边加了一个头,去掉了CRC校
验这个尾。
MODBUS协议定义了4种基本数据类型:
可读写位数据,只读位
2个字
1个字符2个字符n个字符
验
2个字
2个字符符
MODBUSTCP报文
交互标识
协议标识
报文长度
设备标识
功能代码数据
2字节
一般为0
2字节
一般为0
2字节
高字节在
刖
1字节
也就是设
备地址
1个字符n个字符
实际上MODBUSRTU与ASCH的内容是完全相同的,不同的的AS
Cn方式用S"标识帧起始,用“CRLF”标识帧结束。
校验采用L
RC,把RTU帧中一个字节的内容换成了2个ASCn字符。
比如在RTU
方式下设备地址01只有一个字节,在AScn方式下转换成字符串“0
1”(16进制的3031)O
MODBUSTCP中的设备标识,功能码等与MODBUSRTU相同,
可以认为是在MODBUSRTU报文的前边加了一个头,去掉了CRC校
验这个尾。
MODBUS协议定义了4种基本数据类型:
可读写位数据,只读位
2个字
1个字符2个字符n个字符
验
2个字
2个字符符
MODBUSTCP报文
交互标识
协议标识
报文长度
设备标识
功能代码数据
2字节
一般为0
2字节
一般为0
2字节
高字节在
刖
1字节
也就是设
备地址
1个字符n个字符
实际上MODBUSRTU与ASCH的内容是完全相同的,不同的的AS
Cn方式用S"标识帧起始,用“CRLF”标识帧结束。
校验采用L
RC,把RTU帧中一个字节的内容换成了2个ASCn字符。
比如在RTU
方式下设备地址01只有一个字节,在AScn方式下转换成字符串“0
1”(16进制的3031)O
MODBUSTCP中的设备标识,功能码等与MODBUSRTU相同,
可以认为是在MODBUSRTU报文的前边加了一个头,去掉了CRC校
验这个尾。
MODBUS协议定义了4种基本数据类型:
可读写位数据,只读位
2个字
1个字符2个字符n个字符
验
2个字
2个字符符
MODBUSTCP报文
交互标识
协议标识
报文长度
设备标识
功能代码数据
2字节
一般为0
2字节
一般为0
2字节
高字节在
刖
1字节
也就是设
备地址
1个字符n个字符
实际上MODBUSRTU与ASCH的内容是完全相同的,不同的的AS
Cn方式用S"标识帧起始,用“CRLF”标识帧结束。
校验采用L
RC,把RTU帧中一个字节的内容换成了2个ASCn字符。
比如在RTU
方式下设备地址01只有一个字节,在AScn方式下转换成字符串“0
1”(16进制的3031)O
MODBUSTCP中的设备标识,功能码等与MODBUSRTU相同,
可以认为是在MODBUSRTU报文的前边加了一个头,去掉了CRC校
验这个尾。
MODBUS协议定义了4种基本数据类型:
可读写位数据,只读位
2个字
1个字符2个字符n个字符
验
2个字
2个字符符
MODBUSTCP报文
交互标识
协议标识
报文长度
设备标识
功能代码数据
2字节
一般为0
2字节
一般为0
2字节
高字节在
刖
1字节
也就是设
备地址
1个字符n个字符
实际上MODBUSRTU与ASCH的内容是完全相同的,不同的的AS
Cn方式用S"标识帧起始,用“CRLF”标识帧结束。
校验采用L
RC,把RTU帧中一个字节的内容换成了2个ASCn字符。
比如在RTU
方式下设备地址01只有一个字节,在AScn方式下转换成字符串“0
1”(16进制的3031)O
MODBUSTCP中的设备标识,功能码等与MODBUSRTU相同,
可以认为是在MODBUSRTU报文的前边加了一个头,去掉了CRC校
验这个尾。
MODBUS协议定义了4种基本数据类型:
可读写位数据,只读位
2个字
1个字符2个字符n个字符
验
2个字
2个字符符
MODBUSTCP报文
交互标识
协议标识
报文长度
设备标识
功能代码数据
2字节
一般为0
2字节
一般为0
2字节
高字节在
刖
1字节
也就是设
备地址
1个字符n个字符
实际上MODBUSRTU与ASCH的内容是完全相同的,不同的的AS
Cn方式用S"标识帧起始,用“CRLF”标识帧结束。
校验采用L
RC,把RTU帧中一个字节的内容换成了2个ASCn字符。
比如在RTU
方式下设备地址01只有一个字节,在AScn方式下转换成字符串“0
1”(16进制的3031)O
MODBUSTCP中的设备标识,功能码等与MODBUSRTU相同,
可以认为是在MODBUSRTU报文的前边加了一个头,去掉了CRC校
验这个尾。
MODBUS协议定义了4种基本数据类型:
可读写位数据,只读位
2个字
1个字符2个字符n个字符
验
2个字
2个字符符
MODBUSTCP报文
交互标识
协议标识
报文长度
设备标识
功能代码数据
2字节
一般为0
2字节
一般为0
2字节
高字节在
刖
1字节
也就是设
备地址
1个字符n个字符
实际上MODBUSRTU与ASCH的内容是完全相同的,不同的的AS
Cn方式用S"标识帧起始,用“CRLF”标识帧结束。
校验采用L
RC,把RTU帧中一个字节的内容换成了2个ASCn字符。
比如在RTU
方式下设备地址01只有一个字节,在AScn方式下转换成字符串“0
1”(16进制的3031)O
MODBUSTCP中的设备标识,功能码等与MODBUSRTU相同,
可以认为是在MODBUSRTU报文的前边加了一个头,去掉了CRC校
验这个尾。
MODBUS协议定义了4种基本数据类型:
可读写位数据,只读位
2个字
1个字符2个字符n个字符
验
2个字
2个字符符
MODBUSTCP报文
交互标识
协议标识
报文长度
设备标识
功能代码数据
2字节
一般为0
2字节
一般为0
2字节
高字节在
刖
1字节
也就是设
备地址
1个字符n个字符
实际上MODBUSRTU与ASCH的内容是完全相同的,不同的的AS
Cn方式用S"标识帧起始,用“CRLF”标识帧结束。
校验采用L
RC,把RTU帧中一个字节的内容换成了2个ASCn字符。
比如在RTU
方式下设备地址01只有一个字节,在AScn方式下转换成字符串“0
1”(16进制的3031)O
MODBUSTCP中的设备标识,功能码等与MODBUSRTU相同,
可以认为是在MODBUSRTU报文的前边加了一个头,去掉了CRC校
验这个尾。
MODBUS协议定义了4种基本数据类型:
可读写位数据,只读位
2个字
1个字符2个字符n个字符
验
2个字
2个字符符
MODBUSTCP报文
交互标识
协议标识
报文长度
设备标识
功能代码数据
2字节
一般为0
2字节
一般为0
2字节
高字节在
刖
1字节
也就是设
备地址
1个字符n个字符
实际上MODBUSRTU与ASCH的内容是完全相同的,不同的的AS
Cn方式用S"标识帧起始,用“CRLF”标识帧结束。
校验采用L
RC,把RTU帧中一个字节的内容换成了2个ASCn字符。
比如在RTU
方式下设备地址01只有一个字节,在AScn方式下转换成字符串“0
1”(16进制的3031)O
MODBUSTCP中的设备标识,功能码等与MODBUSRTU相同,
可以认为是在MODBUSRTU报文的前边加了一个头,去掉了CRC校
验这个尾。
MODBUS协议定义了4种基本数据类型:
可读写位数据,只读位