Modbus协议基础知识
欢迎交流学习上位机和工业软件相关的QQ群聊: 1009652195
1.Modbus调试软件
1.1 Modbus Poll -> Modbus主站或Modbus客户端
1.2 Modbus Slave -> Modbus从站或Modbus服务器
1.3 VSPD -> Virtual Serial Port Driver -> 创建虚拟一对串口
2.Modbus协议存储区说明
2.1 为什么要有存储区?
①站在协议制定者的角度思考
②协议的目的是为了数据传输
③数据传输无非就是读取和写入
④存储区类别分为布尔(线圈)和数据(寄存器)
2.2 Modbus存储区有哪些?
①只读->线圈->输入线圈
②读写->线圈->输出线圈
③只读->寄存器->输入寄存器
④读写->寄存器->输出寄存器
2.3 Modbus存储区代号
①输入线圈->1区
②输出线圈->0区
③输入寄存器->3区
④输出寄存器->4区
2.4 Modbus存储区范围
①Modbus规定,每个存储区的最大范围65536
②PLC地址:绝对地址 = 区号 + 相对地址
③Modbus地址:绝对地址 = 区号 + (相对地址 + 1)
④输出寄存器的第一个绝对地址就是40001
⑤地址模型
长地址模型

短地址模型

如果我们使用不了那么多的数据,可以使用短地址模型,否则,我们就使用长地址模型
⑥相对地址和绝对地址
我们一般在人为交流或说明文档,使用绝对地址
一般在协议报文,都会使用相对地址
因为在协议报文中,我们可以透过功能码知道是哪个存储区
3.Modbus协议功能码说明
3.1 为什么会有功能码?
①协议的目的是为了数据传输
②已经确定好存储区,存储区会存储不同数据类型
③那么必须会产生很多种不同的行为
④我们给每种行为指定一个代号,那么这个代号就是功能码
⑤功能码其实就是行为的代号
3.2 Modbus通信会有哪些行为?
①读取输出线圈
②读取输入线圈
③读取输出寄存器
④读取输入寄存器
⑤写入输出线圈
⑥写入输出寄存器
3.3 Modbus常用功能码有哪些?
①0X01->读取输出线圈
②0X02->读取输入线圈
③0X03->读取输出寄存器
④0X04->读取输入寄存器
⑤0X05->写入单个线圈
⑥0X06->写入单个寄存器
⑦0X0F->写入多个线圈
⑥0X10->写入多个寄存器
3.4 Modbus还会有一些其他的功能码,比如异常,自定义
4.Modbus协议分类以及测试
4.1 报文帧
①ModbusRTU
②ModbusASCII
③ModbusTCP
4.2 通信介质
①串口通信->232/485/422
②以太网通信->TCP/IP或UDP/IP
4.3 协议分类

①ModbusRTU协议
②ModbusASCII协议
③ModbusRTUOverTCP协议
④ModbusRTUOverUDP协议
⑤ModbusASCIIOverTCP协议
⑥ModbusASCIIOverUDP协议
⑦ModbusTCP协议
⑧ModbusUDP协议

浙公网安备 33010602011771号