modbus协议简介

简介

Modbus是一种串行通信协议,通常运用在电子设备之间的通信上。modbus原本是针对PLC通信问题设计的,目前该协议主要用在串口、以太网和其他互联网协议的网络。常采用TCP或485串口通信。
modbus是一个master/slave(server/client)架构的协议,即主从结构。有且只有一个主机,每一个从机都有一个唯一的设备地址。

协议版本

  • modbus ASCII
    是一种人类可读的,冗长的表达方式,使用串行通信方式,采用纵向冗余校验的校验和(LRC)。
  • modbus RTU
    是一种紧凑的,采用二进制表示数据的方式,使用串行通信方式,采用循环冗余校验的校验和(CRC校验)
  • modbus TCP
    对于通过TCP/IP(例如以太网)的连接,存在多个modbus/TCP变种,这种方式不需要校验和计算,目前使用较为广泛。

寄存器

modbus有四种寄存器:线圈状态寄存器、离散输入状态寄存器、保持寄存器、输入寄存器。
modbus给每个分区都划分了地址范围,主机向从机获取数据时,只需要告诉从机数据的起始地址和要获取的字节数,从机就可以发送数给主机。
modbus数据模型规定了具体的地址范围,每个从机都有实际的物理存储,跟modbus的存储区相对应,主机读写从机的存储区,实际上就是对从机设备对应的实际存储空间进行读写。

类别区号读写寄存器地址
线圈状态0区可读写布尔量0000H-FFFFH
离散输入状态1区只读布尔量0000H-FFFFH
输入寄存器3区只读寄存器0000H-FFFFH
保持寄存器4区可读写寄存器0000H-FFFFH
  • 线圈状态寄存器:类比于开关量(继电器状态),每一个bit对应一个信号的开关状态。所以一个byte就可以同时控制8路信号。线圈状态寄存器可以,也可以,写在功能吗中又分为写单个线圈和写多个线圈。
  • 离散输入寄存器:离散输入寄存器相当于线圈状态寄存器的只读模式,每一个bit表示一个开关量,而他的开关量只能读取,不能写入。例如读取外部按键是按下状态还是松开状态。
  • 保持寄存器:这个寄存器的单位不在是bit,而是2个byte,可以存放具体的数据量,可读写,一般对应参数设置,比如设置时间的年月日。
  • 输入寄存器:和保持寄存器类似,但是只能读取,一般是读取各种实时数据。一个寄存器也是占据2个byte空间。例如读取AD采集值。

数据帧格式

RTU帧格式

RTU是常用的一种协议,一个报文就是一帧数据,实际上就是一串有组织的数据串。RUT帧格式如下:

从机地址功能码数据域校验位
1字节1字节n字节2字节(CRC)
  • 从机地址:从机设备地址(每个从机都有唯一设备地址),0~255,0为广播地址,所有从机都接收,但是不回复。
  • 功能码:指令功能,
  • 数据域:发送或接收的数据
  • 校验:2字节的CRC校验,计算范围为从机地址到数据域最后一个字节

TCP帧格式

事务处理标识符协议标识符长度单元标识功能码数据
2字节2字节2字节1字节1字节n字节
  • 事务处理标识符:类似于心爱序列号,确认发出和收到的信息属于同一序列,每次通信后加1
  • 协议标识符:用于系统内的多路复用,当值为0(00 00),表示使用modbus协议
  • 长度:用于说明此字节之后还有多少个字节的数量
  • 单元标识符:即设备地址,在slave中对应其ID
  • 功能码:和RTU相似
  • 数据:和RTU相似

功能码

modbus常用功能码:

功能码功能说明
01H读取输出线圈
02H读取输入线圈
03H读取保持寄存器
04H读取输入寄存器
05H写单个线圈
06H写单个寄存器
0FH写多线圈
10H写多个寄存器

错误信息

当主机传送的报文不符合格式或从机不支持此功能 等问题时,从机会回复主机一个错误信息,错误信息帧格式:

从机地址功能码异常码CRC校验
1字节1字节1字节2字节

错误功能码

功能码名称说明
01ILLEGAL FUNCTION不支持的功能
02ILLEGAL DATA ADDRESS不合法的地址
03ILLEGAL DATA VALUE不合法的数值
04SLAVE DEVICE FAILURE Slave失效
05ACKNOWLEDGE命令执行中
06SLAVE DEVICE BUSY Slave忙碌
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值