Modbus由Modicon公司于1979年开发,是一种工业现场总线协议标准。
Modbus通信协议具有多个变种,其中有支持串口,以太网多个版本,其中最著名的是Modbus RTU、Modbus ASCII和Modbus TCP三种
其中Modbus TCP是在施耐德收购Modicon后1997年发布的。
1)Modbus RTU
运行在串口上的协议,采用二进制的表现形式以及紧凑型数据结构,通信效率高,应用比较广泛
2)Modbus ASCII
运行在串口上的协议,采用ASCII码进行传输,并且利用特殊字符作为字节开始和结束的标志,传输效率远远低于Modbus RTU ,只有通信数据量比较少时才会考虑它
3)Modbus TCP
运行在以太网上的协议
免费、简单、容易使用
Modbus协议是现在国内工业领域应用最多的协议,不只PLC设备,各种终端设备,比如水控机、水表、电表、工业秤、各种采集设备
1)采用主从问答方式通信
2)Modbus TCP协议属于应用层协议,基于传输层TCP进行传输
3)Modbus TCP默认端口号502
ModbusTcp协议包含三部分:报文头、功能码、数据
Modbus TCP/IP协议最大数据帧长度为260字节
寄存器分类:线圈、离散量输入、保持寄存器、输入寄存器
支持读也支持写
,写在功能码里面又分为写单个线圈寄存器和写多个线圈寄存器。不能够写
的。比如我读取外部按键的按下还是松开。可读写
的。比如我我设置时间年月日,不但可以写也可以读出来现在的时间。写也分为单个写和多个写只支持读而不能写
。一个寄存器也是占据两个byte的空间。类比我我通过读取输入寄存器获取现在的AD采集值线圈寄存和保持寄存器是可读可写的,离散输入寄存器和输入寄存器只能读不可写。
读操作
主机->从机:
报文头(7字节) + 功能码(1字节) + 起始地址(2字节) + 数量(2字节)
从机->主机:
报文头(7字节) + 功能码(1字节) + 字节计数(1字节) + 数据(n字节)
写单个
写多个: