modbus通讯协议详解
1.什么是Modbus?
Modbus是一种串行通信协议,是Modicon公司(现在的施耐德电气Schneider Electric)于1979年为使用可编程逻辑控制器(PLC)通信而发表。Modbus已经成为工业领域通信协议的业界标准(De facto),并且现在是工业电子设备之间常用的连接方式。 Modbus比其他通信协议使用的更广泛的主要原因(3给个优点)有:
(1)公开发表并且无版权要求
(2)易于部署和维护
(3)对供应商来说,修改移动本地的比特或字节没有很多限制
Modbus允许多个 (大约240个) 设备连接在同一个网络上进行通信,举个例子,一个由测量温度和湿度的装置,并且将结果发送给计算机。在数据采集与监视控制系统(SCADA)中,Modbus通常用来连接监控计算机和远程终端控制系统(RTU)。
顾名思义,它是一个bus,即总线协议。比如串口协议、IIC协议、SPI都是通信协议。你接触到这种协议,相信你所处的行业是工业方面或者你的产品用于工业。
归纳:Modbus就是一种用在工业上的简单协议!
学习笔记(重要):
- PLC诞生在1969年
- Modbus莫迪康公司(现在施耐德电气)1979年
- 为了PLC通讯而发表
- 协议 接口 串口232 485 网口 为不同的设备提供了一种通用语言
应用层的报文传输协议 RTU ASCII TCP
ModbusRTU 通讯协议
**通讯功能:**本质是 读/写
存储区:
1输出线圈 bool 1bit true/false
2输入线圈 bool 1bit true/false
3 输入寄存器 word 16bit 2个字节
4输出寄存器word 16bit 2个字节
存储区范围: 5位标准地址 6位扩展地址
Y XXXX
输出线圈 代号0 00001-09999 000001-065536 读写
输入线圈 代号1 10001-19999 100001-165536 只读
输入寄存器 代号3 30001-39999 300001-365536 只读
输出寄存器 代号4 40001-49999 400001-465536 读写
读/写 功能 功能码
- 读取:
读取输出线圈 01H
读取输入线圈02H
读取保持寄存器03H
读取输入寄存器04H - 写入:
预置单线圈 05H
预置多线圈0FH
预置单寄存器06H
预置多寄存器10H
**ModbusRTU/ASCII报文格式:**一个寄存器2个字节
从站地址(1byte)+功能码(1byte)+数据(N byte)+校验(2byte)
TX:01 03 00 00 00 02 C4 0B
01站地址 03读取保持寄存器 00 00起始地址00 02数量 C4 0B校验码
RX:01 03 04 00 49 01 29 EB AB
01站地址 03读取保持寄存器 04返回字节数 00 49 01 29返回的4个字节 EB AB校验码
对于读取来说
站地址:要找谁?
功能码:要干什么?
校验:验证数据是否正确?