侧边栏壁纸
博主头像
李振洋的博客博主等级

歌颂动荡的青春

  • 累计撰写 38 篇文章
  • 累计创建 6 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Modbus

Modbus

Modbus 是由 Modicon(施耐德)在 1979 年发明的,是用于工业现场的总线协议。

国家标准:GB/T19582-2008 国家标准 - 全国标准信息公共服务平台 (samr.gov.cn)

Modbus 组织

MODBUS 协议

MODBUS-MODLE.png

一个主从类型的系统有一个向某个“子”节点发出显式命令并处理响应的节点(主节点)。在物理层,Modbus 串行链路系统可以使用不同的物理接口(RS485、RS232)。

Modbus 主站/从站协议原理

Modbus 串行链路协议是一个主-从协议。在同一时刻,只有一个主节点连接于总线,一个或多个子节点 (最大编号为 247 ) 连接于同一个串行总线。Modbus 通信总是由主节点发起。子节点在没有收到 来自主节点的请求时,从不会发送数据。子节点之间从不会互相通信。主节点在同一时刻只会发起一个 Modbus 事务处理。

主节点对子节点发出 Modbus 请求的两种模式:

  • 单播模式:主节点以特定地址访问某个子节点,子节点接到并处理完请求后,子节点向主节点返回一个报文。

  • 广播模式:主节点向所有的子节点发送请求。对于主节点广播的请求没有应答返回。广播请求一般用于写命令。 所有设备必须接受广播模式的写功能。

MODBUS寄存器映射

参考

描述

0 xxxx

读/写离散输出或线圈。

1 xxxx

读取离散输入或线圈。

3 xxxx

读取输入寄存器。

4 xxxx

读/写输出或保持寄存器,

MODBUS 串行传输模式

标准 Modbus 网络采用两种传输模式之一:ASCII 模式或 RTU 模式。

当设备使用 RTU (Remote Terminal Unit) 模式在 Modbus 串行链路通信,报文中每个 8 位字节含有两个 4 位十六进制字符。这种模式的主要优点是较高的数据密度,在相同的波特率下比 ASCII 模式有更高的吞吐率。每个报文必须以连续的字符流传送。

MODBUS的地址规则

Modbus 寻址空间有 256 个不同的地址。

0

1-247

248 ~ 255

广播地址

子节点单独地址

保留

地址 0 为广播地址。所有的子节点必须识别广播地址。 Modbus 主节点没有地址,只有子节点必须有一个地址。

Modbus 帧描述

modbus-pdu.pngRTU 帧

RTU 模式每个字节 ( 11 位 ) 的格式

modbus-rtu-com1.png

modbus-rtu-com2.png

RTU 模式每帧结构

modbus-rtu-data.png

由主设备将Modbus 报文构造为带有已知起始和结束标记的帧。在 RTU 模式,报文帧由时长至少为 3.5 个字符时间的空闲间隔区分。

MODBUS-RTU-F.png

如果两个字符之间的空闲间隔大于 1.5 个字符时间,则报文帧被认为不完整应该被接收节点丢弃。

在通信速率等于或低于 19200 bps 时,两个时间间隔必须严格遵守,对于波特率大于 19200 bps 的情形,应该使用 2 个定时的固定值:建议的字符间超时时间(t1.5)为 750µs,帧间的超时时间 (t1.5) 为 1.750ms

CRC 校验

循环冗余校验。

CRC 的值由发送设备计算。接收设备在接收报文时重新计算 CRC 的值,并将计 算结果于实际接收到的 CRC 值相比较。如果两个值不相等,则为错误。

MODBUS 事务处理流程

MODBUS-STATE-LOOP.png

MODBUS 响应:

正确的 MODBUS 响应:响应功能码 = 请求功能码;

MODBUS 异常响应

  • 提供处理过程中与被发现的差错相关的信息;

  • 响应功能码 = 请求功能码 + 0x80;

  • 提供一个异常码来指示差错原因;

MODBUS 异常码

MODBUS 异常码

代码

名称

含义

01

非法功能

02

非法数据地址

03

非法数据值

04

从站设备故障

05

确认

06

从属设备忙

08

存储奇偶性差错

0A

不可用网关路径

0B

网关目标设备响应失败

MODBUS功能码

三类 MODBUS 功能码:公共功能码、用户定义功能码、保留功能码

公共功能码:

  • 是较好地被定义的功能码

  • 保证是唯一的

  • MODBUS 组织可改变的

  • 公开证明的

  • 具有可用的一致性测试

  • MB IETF RFC 中证明的

  • 包含已被定义的公共指配功能码和未来使用的未指配保留供功能码

用户定义功能码:

  • 用户定义功能码的定义范围,即 65 至 72 和 100 至 110(十进制)

  • 用户没有 MODBUS 组织的任何批准就可以选择和实现一个功能码

  • 不能保证被选功能码的使用是唯一的

保留功能码:一些公司对传统产品通常使用的功能码,并且对公共使用是无效的功能码。

公共功能码定义

MODBUS-CODE.png

Introduction to Modbus (automation.com)

0

评论区