工作모드
Modbus 基于主从모드工作。在一个네트워크中,Modbus 프로토콜通过主设备(클라이언트)和从设备(服务器)之间的请求-应答机制来交换信息。
下图展示了典型的 Modbus 네트워크,其中一个 master 设备(client)控制一个或多个 slave 设备(server)。

在표준的 Modbus 네트워크中,有 1 个主设备和最多 31 个从设备。
通讯特点
主设备-从设备工作원리有如下特点:
- 在同一时间只能有一个主设备연결到네트워크;
- 只有主设备能够发起通讯并向从设备보내기请求;
- 主设备可以使用专门的주소分别访问每个从设备,也可以使用주소 0 同时访问所有从设备;
- 从设备只能向主设备보내기应答;
- 从设备不能向主设备或其它从设备发起通讯。
通讯모드
Modbus 프로토콜支持两种通讯모드交换信息:
- 单播모드 —— 主设备通过专门的주소访问从设备,从设备处理请求,然后向主设备보내기应答。
- 广播모드 —— 主设备通过주소 0 访问所有从设备,在这种모드下,从设备不对广播消息作出应答。(因此,广播모드的请求指令必须是 Modbus 표준功能中的写指令)
应答时间
应答时间是指从设备对主设备发出的请求做出应答所需的时间。其中 Modbus 프로토콜的数值:
- 典型值 < 10 ms (90% 的信息交换)
- 最大值大约是 700 ms,因此建议在보내기完一个 Modbus 请求后暂停 1 秒钟再继续。
데이터交换
Modbus 프로토콜支持两种데이터유형:
- 单个位
- 레지스터(16 位)
具体的位和레지스터定义由从设备决定。
주소
使用 Modbus 프로토콜交换的消息包含要处理的데이터的주소。每个레지스터都有一个레지스터번호,每类데이터(位或레지스터)都有一个 16 位的주소。
在 Modbus 프로토콜规定的 PDU 中,规定所有코일或레지스터주소从 0 开始계산。因此,第 n 号레지스터的주소是 n-1。例如,第 12000 号레지스터的주소是 0x2EDF(11999)。
帧
使用 Modbus 프로토콜交换的所有帧(ADU)最大为 256 바이트(ASCII 형식翻倍),其中包括 4 个域:
| 域 | 定义 | 大小(RTU 형식) | 설명 |
|---|---|---|---|
| 1 | 从设备号(주소) | 1 个바이트 | 请求的目的주소 - 0 :广播(涉及所有从设备) - 1-247 :单播,从设备的唯一주소 |
| 2 | 功能代码 | 1 个바이트 | 参阅 Modbus 기능 코드 |
| 3 | 데이터 | 0 到 252 个바이트 | 请求데이터(或应答데이터) |
| 4 | 체크섬 | 2 个바이트 | CRC 검증和(ASCII 为 LRC) |
下图展示了主设备-从设备工作模型中的帧交换过程。

네트워크拓扑
Modbus RTU
Modbus RTU 通常基于 RS-485 串行통신链路,RS-485 总线布线사양规定其必须是总线式拓扑结构。在实际布线中,通常采用手牵手菊花链布线방식。例如,Slave 1/2/3 三台 RS-485 设备,Slave1 的 485+ 接入 Slave2 的 485+ 포트,Slave2 的 485+ 再연결到 Slave3 的 485+ 포트,以此类推,485- 的배선방식和 485+ 一样。

Modbus TCP
相对于使用串行链路的 Modbus RTU,Modbus TCP 基于以太网통신,因此其네트워크拓扑结构更为灵活。从串行链路上一主多从的构造,演变为多클라이언트/多服务器端的构造模型。
使用 Modbus TCP,마스터设备(클라이언트)可以通过 IP 주소找到 Modbus 从设备(服务器),并通过 Modbus 게이트웨이연결到另一个 Modbus RTU 네트워크。

답글 작성