modbus 技术的基础知识 演讲者 : 北京交通大学 孙昕
DESCRIPTION
MODBUS 技术的基础知识 演讲者 : 北京交通大学 孙昕. 主要内容. 概述 Modbus 应用协议规范 Modbus 协议在串行链路上的实现 Modbus 协议在 TCP/IP 上的实现. 概 述. 1979年 Modicon 公司(现 Schneider 的一部分)提出的 Modbus Modbus 最初作为工业串行链路的事实标准 1997年 Schneider 电气在 TCP/IP 上实现 Modbus 协议 2004年 Modbus 作为我国国家标准. Modbus 技术规范组成. Modbus 应用协议规范 - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: MODBUS 技术的基础知识 演讲者 : 北京交通大学 孙昕](https://reader033.vdocuments.pub/reader033/viewer/2022061404/56814bf2550346895db8df45/html5/thumbnails/1.jpg)
MODBUS 技术的基础知识 演讲者 : 北京交通大学 孙昕
![Page 2: MODBUS 技术的基础知识 演讲者 : 北京交通大学 孙昕](https://reader033.vdocuments.pub/reader033/viewer/2022061404/56814bf2550346895db8df45/html5/thumbnails/2.jpg)
2Modbus tour 2005.10
主要内容
概述
Modbus 应用协议规范
Modbus 协议在串行链路上的实现
Modbus 协议在 TCP/IP 上的实现
![Page 3: MODBUS 技术的基础知识 演讲者 : 北京交通大学 孙昕](https://reader033.vdocuments.pub/reader033/viewer/2022061404/56814bf2550346895db8df45/html5/thumbnails/3.jpg)
3Modbus tour 2005.10
概 述 1979年Modicon 公司 (现 Schneider 的一部分 )
提出的 Modbus
Modbus 最初作为工业串行链路的事实标准
1997年 Schneider 电气在 TCP/IP 上实现Modbus 协议
2004年Modbus 作为我国国家标准
![Page 4: MODBUS 技术的基础知识 演讲者 : 北京交通大学 孙昕](https://reader033.vdocuments.pub/reader033/viewer/2022061404/56814bf2550346895db8df45/html5/thumbnails/4.jpg)
4Modbus tour 2005.10
Modbus 应用协议规范
Modbus 协议在串行链路上的实现指南
Modbus 协议在 TCP/IP 上的实现指南
Modbus 技术规范组成
![Page 5: MODBUS 技术的基础知识 演讲者 : 北京交通大学 孙昕](https://reader033.vdocuments.pub/reader033/viewer/2022061404/56814bf2550346895db8df45/html5/thumbnails/5.jpg)
5Modbus tour 2005.10
Modbus 技术规范的关系
Modbus 应用层
在 TCP/IP上的Modbus映射
TCP/IP IETF RFC 793
IP IETF RFC 791
Ethernet II /802.3 IEEE 802.2
以太网物理层 TIA/EIA-232-F
串行链路主站/从站
TIA/EIA-485-A
Modbus 协议在 TCP/IP 上的实现指南
Modbus
应用协议规范
Modbus 协议在串行链路上的实现指南
![Page 6: MODBUS 技术的基础知识 演讲者 : 北京交通大学 孙昕](https://reader033.vdocuments.pub/reader033/viewer/2022061404/56814bf2550346895db8df45/html5/thumbnails/6.jpg)
6Modbus tour 2005.10
Modbus 应用协议规范
![Page 7: MODBUS 技术的基础知识 演讲者 : 北京交通大学 孙昕](https://reader033.vdocuments.pub/reader033/viewer/2022061404/56814bf2550346895db8df45/html5/thumbnails/7.jpg)
7Modbus tour 2005.10
Modbus 通信栈
TCP
基于 TCP的Modbus
Modbus应用层
IP
以太网
物理层
Ethernet II /802.3
EI A/ TI A-232或
EI A/ TI A-485
主站/从站
物理层
MODBUS+ / HDLC
其它
其它
![Page 8: MODBUS 技术的基础知识 演讲者 : 北京交通大学 孙昕](https://reader033.vdocuments.pub/reader033/viewer/2022061404/56814bf2550346895db8df45/html5/thumbnails/8.jpg)
8Modbus tour 2005.10
Modbus 是一种简单客户机 / 服务器应用协议 客户机能够向服务器发送请求 服务器分析请求,处理请求,向客户机发送应答
Modbus 应用协议
客户机 服务器
Modbus请求: 地址100开始读20个字
Modbus响应 : 地址100至119的20个字的值
网络
![Page 9: MODBUS 技术的基础知识 演讲者 : 北京交通大学 孙昕](https://reader033.vdocuments.pub/reader033/viewer/2022061404/56814bf2550346895db8df45/html5/thumbnails/9.jpg)
9Modbus tour 2005.10
通用 Modbus 帧结构--协议数据单元 (PDU)
Modbus 是一个可选择部分使用的协议 服务器可执行部分 Modbus 协议Modbus 由公共功能码和用户定义的功能码组成Modbus 应用协议使用功能码列表读或写数据,或者在远程服务器上进行远程处理读 / 写寄存器列表,读 / 写比特列表诊断,标识
附加地址 功能码 数据 差错校验
ADU
PDU
![Page 10: MODBUS 技术的基础知识 演讲者 : 北京交通大学 孙昕](https://reader033.vdocuments.pub/reader033/viewer/2022061404/56814bf2550346895db8df45/html5/thumbnails/10.jpg)
10Modbus tour 2005.10
Modbus 事务处理 ( 无差错 )
当服务器对客户机响应时,它使用功能码域来指示正常(无差错)响应或者出现某种差错(称为异常响应) 对于一个正常响应来说,服务器仅复制原始功能码
功能码 数据请求
客户机 服务器
启动请求
执行操作
启动响应
接收响应
功能码 数据响应
![Page 11: MODBUS 技术的基础知识 演讲者 : 北京交通大学 孙昕](https://reader033.vdocuments.pub/reader033/viewer/2022061404/56814bf2550346895db8df45/html5/thumbnails/11.jpg)
11Modbus tour 2005.10
Modbus 事务处理 ( 异常响应 )SM6对于异常响应,服务器将原始功能码的最高有效位设
置逻辑 1 后返回 异常码指示差错类型
客户机 服务器
启动请求
在操作中检测差错 启动差错
异常功能码 接收响应 异常码
功能码 数据请求
![Page 12: MODBUS 技术的基础知识 演讲者 : 北京交通大学 孙昕](https://reader033.vdocuments.pub/reader033/viewer/2022061404/56814bf2550346895db8df45/html5/thumbnails/12.jpg)
12Modbus tour 2005.10
Modbus 最初在串行链路上的实现(最大 RS485ADU=256字节)
限制了 Modbus PD 的长度。
因此,对串行链路通信来说, Modbus PDU=256- 服务器地址( 1 字节) -CRC( 2 字节)= 253 字节。
从而: RS232 / RS485 ADU = 253 字节 + 服务器地址 (1 字节 ) +
CRC (2 字节 )= 256 字节。 TCP Modbus ADU = 253 字节 + MBAP (7 字节 ) = 260 字
节。
Modbus PDU 长度
![Page 13: MODBUS 技术的基础知识 演讲者 : 北京交通大学 孙昕](https://reader033.vdocuments.pub/reader033/viewer/2022061404/56814bf2550346895db8df45/html5/thumbnails/13.jpg)
13Modbus tour 2005.10
Modbus PDU 结构Modbus 请求 PDU mb_req_pdu = { function_code, request_data} , function_code - [1 字节 ] Modbus 功能码 request_data - [n 字节 ]
Modbus 响应 PDU mb_rsp_pdu = { function_code, response_ data }, function_code - [1 字节 ] Modbus 功能码 response_data - [n 字节 ]
Modbus 异常响应 PDU mb_excep_rsp_pdu = { function_code, exception_code }, function_code - [1 字节 ] Modbus 功能码 + 0x80 exception_code – [1 字节 ]
![Page 14: MODBUS 技术的基础知识 演讲者 : 北京交通大学 孙昕](https://reader033.vdocuments.pub/reader033/viewer/2022061404/56814bf2550346895db8df45/html5/thumbnails/14.jpg)
14Modbus tour 2005.10
Modbus 的数据模型是以一组具有不同特征的表为基础建立的
四个基本表为:
Modbus 数据模型
基本表 对象类型 访问类型 注释
离散量输入 单个位 只读 I/O 系统可提供这种类型数据
线圈 单个位 读写 通过应用程序可改变这种类型数据
输入寄存器 16 位字 只读 I/O 系统可提供这种类型数据
保持寄存器 16 位字 读写 通过应用程序可改变这种类型数据
![Page 15: MODBUS 技术的基础知识 演讲者 : 北京交通大学 孙昕](https://reader033.vdocuments.pub/reader033/viewer/2022061404/56814bf2550346895db8df45/html5/thumbnails/15.jpg)
15Modbus tour 2005.10
Modbus 公共功能码的定义 功能码
码 子码 (十六进制)
数据访问
位访问
物理离散量输入
读离散量输入 02 02内部位或物理线圈
读线圈 01 01写单个线圈 05 05
写多线圈 15 0F 16位访问
输入寄存器 读输入寄存器 04 04内部寄存器或物理输出寄存器
读保持寄存器 03 03写单寄存器 06 06
写多寄存器 16 10
读 / 写多寄存器 23 17
屏蔽写寄存器 22 16
读 FIFO 队列 24 18
文件记录访问 读文件记录 20 6 14写文件记录 21 6 15
诊
断
读异常状态 07 诊断 08 00-18 获得通信事件计数器
11 OB
获得通信事件记录
12 0C
报告从站 ID 17 11
读设备识别码 43 14 2B
其它 封装接口传输 43 2B
![Page 16: MODBUS 技术的基础知识 演讲者 : 北京交通大学 孙昕](https://reader033.vdocuments.pub/reader033/viewer/2022061404/56814bf2550346895db8df45/html5/thumbnails/16.jpg)
16Modbus tour 2005.10
Modbus 功能码应用实例 (1) 读线圈 01 (0x01)
请求
响应
*N =寄存器的数量 /8 ,如果余数不等于 0 ,那么 N = N+1 错误
功能码 1 字节 0x01
起始地址 2 字节 0x0000 至 0xFFFF
线圈数量 2 字节 1至 2000 ( 0x7D0)
功能码 1 字节 0x01
字节计数 1 字节 N*
线圈状态 n 字节 n= N或 N+1
功能码 1 字节 功能码+ 0x80
异常码 1 字节 01 或 02 或 03 或 04
![Page 17: MODBUS 技术的基础知识 演讲者 : 北京交通大学 孙昕](https://reader033.vdocuments.pub/reader033/viewer/2022061404/56814bf2550346895db8df45/html5/thumbnails/17.jpg)
17Modbus tour 2005.10
写多个寄存器 16(0x10)请求
响应
*N =寄存器数量错误
功能码 1 字节 0x03
起始地址 2 字节 0x0000至 0xFFFF
寄存器数量 2 字节 1至 125 ( 0x7D)
功能码 1 字节 0x03
字节数 1 字节 2×N*
寄存器值 N*×2 字节
差错码 1 字节 0x83
异常码 1 字节 01 或 02 或 03 或 04
![Page 18: MODBUS 技术的基础知识 演讲者 : 北京交通大学 孙昕](https://reader033.vdocuments.pub/reader033/viewer/2022061404/56814bf2550346895db8df45/html5/thumbnails/18.jpg)
18Modbus tour 2005.10
Modbus 功能码应用实例 (3) 写多个寄存器 16(0x10)请求
*N =寄存器数量响应
错误
功能码 1 字节 0x10
起始地址 2 字节 0x0000至 0xFFFF
寄存器数量 2 字节 0x0001至 0x0078
字节计数 1 字节 2×N*
寄存器值 N*×2 字节 值
功能码 1 字节 0x10
起始地址 2 字节 0x0000至 0xFFFF
寄存器数量 2 字节 1至 123 ( 0x7B)
差错码 1 字节 0x90
异常码 1 字节 01 或 02 或 03 或 04
![Page 19: MODBUS 技术的基础知识 演讲者 : 北京交通大学 孙昕](https://reader033.vdocuments.pub/reader033/viewer/2022061404/56814bf2550346895db8df45/html5/thumbnails/19.jpg)
19Modbus tour 2005.10
Modbus 协议在串行链路上的实现
![Page 20: MODBUS 技术的基础知识 演讲者 : 北京交通大学 孙昕](https://reader033.vdocuments.pub/reader033/viewer/2022061404/56814bf2550346895db8df45/html5/thumbnails/20.jpg)
20Modbus tour 2005.10
Modbus 协议在串行链路上的实现模型
主要在 RS-485和 RS-232 等物理接口上实现 Modbus 协议
EIA/TIA-485
(或 EIA/TIA-232)
Modbus主站/从站
Modbus应用协议层
客户机/服务器
层 ISO/OSI 模型
7 应用层 Modbus 应用协议
6 表示层 空
5 会话层 空
4 传输层 空
3 网络层 空
2 数据链路层 Modbus 串行链路协议
1 物理层 EIA/TIA-485 ( 或
EIA/TIA232)
![Page 21: MODBUS 技术的基础知识 演讲者 : 北京交通大学 孙昕](https://reader033.vdocuments.pub/reader033/viewer/2022061404/56814bf2550346895db8df45/html5/thumbnails/21.jpg)
21Modbus tour 2005.10
串行链路上的 Modbus 帧结构Modbus 串行链路协议是一个主 / 从协议网络上的每个从站必须有唯一的地址(从 1到 247 ) 从站地址用于寻址从站设备,由主站发起地址 0 用于广播模式,不需要响应RS-485和 RS-232 定义了标准的物理端口,提高互可操作性
地址域 功能码 数据 CRC (或 LRC)
Modbus串行链路 ADU
Modbus PDU
![Page 22: MODBUS 技术的基础知识 演讲者 : 北京交通大学 孙昕](https://reader033.vdocuments.pub/reader033/viewer/2022061404/56814bf2550346895db8df45/html5/thumbnails/22.jpg)
22Modbus tour 2005.10
Modbus 串行传输模式 – RTU 模式 RTU Modbus 串行传输模式的报文格式, CRC-16 差错校验
报文帧的标识
字符之间的要求
从站 地址
功能码 数据 CRC
1字节 1字节 0至 252字节 2 字节 CRC高位 CRC 低位
t0
至少 3.5个字符
帧 1 帧 2
至少 3.5个字符
帧 3
4.5个字符
3.5个字符
t0
1.5个字符
帧 1 正常 帧 2 不正常
> 1.5个字符
![Page 23: MODBUS 技术的基础知识 演讲者 : 北京交通大学 孙昕](https://reader033.vdocuments.pub/reader033/viewer/2022061404/56814bf2550346895db8df45/html5/thumbnails/23.jpg)
23Modbus tour 2005.10
Modbus 串行传输模式 – ASCII 模式 报文必须以“ :”开始
报文必须以“ LF-CR” 结束
数据用十六进制 ASCII 码值表示
使用 LRC 进行差错校验
起始 地址 功能码 数据 LRC 结束
1个
字符 :
2个字符 2个字符 2个字符 2个字符 CR、LF
0至 2x252个字符
![Page 24: MODBUS 技术的基础知识 演讲者 : 北京交通大学 孙昕](https://reader033.vdocuments.pub/reader033/viewer/2022061404/56814bf2550346895db8df45/html5/thumbnails/24.jpg)
24Modbus tour 2005.10
Modbus 协议在 TCP/IP 上的实现
![Page 25: MODBUS 技术的基础知识 演讲者 : 北京交通大学 孙昕](https://reader033.vdocuments.pub/reader033/viewer/2022061404/56814bf2550346895db8df45/html5/thumbnails/25.jpg)
25Modbus tour 2005.10
基于开放 TCP/IP 的Modbus 协议 Modbus 协议是一个开发性协议
• IANA已为 Modbus 协议指配 TCP / UDP 知名端口 502
Modbus 协议是一个标准协议 • IETF 组织提议将 Modbus 协议作为因特网标准• Modbus 协议是自动化领域中广泛使用“实事”标准
以太网 (快速以太网 )• 使用目前最流行的 LAN 技术• IEEE 802.3中定义的以太网和以太网 II
TCP/IP 模型• 描述因特网协议的组合
![Page 26: MODBUS 技术的基础知识 演讲者 : 北京交通大学 孙昕](https://reader033.vdocuments.pub/reader033/viewer/2022061404/56814bf2550346895db8df45/html5/thumbnails/26.jpg)
26Modbus tour 2005.10
Modbus TCP/IP 通信结构 Modbus TCP/IP 的通信设备: 连接至 TCP/IP网络的 Modbus TCP/IP 客户机和服务器设备 互连设备,如:在 TCP/IP网络和串行链路子网之间互连的网桥、 路由器或网关等设备
Modbus 客户机 TCP/IP
Modbus 服务器 TCP/IP
Modbus 服务器 TCP/IP
Modbus 服务器
串行链路
Modbus 服务器
串行链路
Modbus 客户机
串行链路
Modbus 客户机TCP/IP
Modbus TCP / IP
客户机 TCP/IP
网关
服务器 TCP/I
网关
Modbus串行链路
![Page 27: MODBUS 技术的基础知识 演讲者 : 北京交通大学 孙昕](https://reader033.vdocuments.pub/reader033/viewer/2022061404/56814bf2550346895db8df45/html5/thumbnails/27.jpg)
27Modbus tour 2005.10
TCP/IP 上的 Modbus 数据帧• 通过 TCP/IP 栈传输
•支持以太网 II和 IEEE 802.3 帧,默认帧为以太网 II 帧
• 以太网 II 是默认的 TCP/IP 网络帧格式
MBAP报文头 功能码 数据
Modbus TCP/IP ADU
PDU
![Page 28: MODBUS 技术的基础知识 演讲者 : 北京交通大学 孙昕](https://reader033.vdocuments.pub/reader033/viewer/2022061404/56814bf2550346895db8df45/html5/thumbnails/28.jpg)
28Modbus tour 2005.10
MBAP 报文头
域 长度 描述 客户机 服务器
事 务 处 理标识符
2 字节
Modbus 请 求 /响应事务处理的识别
客 户 机启动
服务器从接收的请求中重新复制
协 议 标 识符
2 字节
0=Modbus 协议 客 户 机启动
服务器从接收的请求中重新复制
长度 2 字节
随后字节的数量 客 户 机启动 ( 请求)
服务器(响应)启动
单 元 标 识符
1 字节
串行链路或其它总线上连接的远程从站的识别
客 户 机启动
服务器从接收的请求中重新复制
![Page 29: MODBUS 技术的基础知识 演讲者 : 北京交通大学 孙昕](https://reader033.vdocuments.pub/reader033/viewer/2022061404/56814bf2550346895db8df45/html5/thumbnails/29.jpg)
29Modbus tour 2005.10
Modbus 报文传输服务结构
用户应用
通讯应用层
MODBUS客户接口
MODBUS客户接口
MODBUS 客户机 MODBUS 服务器
TCP管理层栈参数化 连接管理 访问控制
TCP/IP 栈
资源管理与流量控制
![Page 30: MODBUS 技术的基础知识 演讲者 : 北京交通大学 孙昕](https://reader033.vdocuments.pub/reader033/viewer/2022061404/56814bf2550346895db8df45/html5/thumbnails/30.jpg)
30Modbus tour 2005.10
通信应用层
Modbus 客户机 允许用户应用显性地控制与远程设备的信息交换。 Modbus 客户机根
据用户应用向 Modbus 客户机接口发送的要求中所包含的参数来建立一个 Modbus 请求。
Modbus 客户机接口 Modbus 客户机接口提供一个接口,使得用户应用能够生成各类
Modbus 服务的请求,该服务包括对 Modbus 应用对象的访问 Modbus 服务器 在收到一个 Modbus 请求以后,模块激活一个本地操作进行读、写、
或完成其他操作。
![Page 31: MODBUS 技术的基础知识 演讲者 : 北京交通大学 孙昕](https://reader033.vdocuments.pub/reader033/viewer/2022061404/56814bf2550346895db8df45/html5/thumbnails/31.jpg)
31Modbus tour 2005.10
TCP管理层
管理通信的建立和结束以及管理在所建立的 TCP连接上的数据流 。
连接管理 在客户机和服务器的 Modbus 模块之间的通信需要使用 TCP连接管理模块,负责全面管理报文传输 TCP连接
访问控制 在某些至关重要的场合,必须禁止无关的主机对设备内部数据的访问。这既是需要的安全模式,也是在需要时实现安全处理的原因
![Page 32: MODBUS 技术的基础知识 演讲者 : 北京交通大学 孙昕](https://reader033.vdocuments.pub/reader033/viewer/2022061404/56814bf2550346895db8df45/html5/thumbnails/32.jpg)
32Modbus tour 2005.10
TCP/IP 栈层
可以对 TCP/IP 的栈进行参数配置,以适用对产品或系统的不同的特定
约束进行数据流控制、地址管理和连接管理。使用 BSD套接字接口来管
理 TCP连接
![Page 33: MODBUS 技术的基础知识 演讲者 : 北京交通大学 孙昕](https://reader033.vdocuments.pub/reader033/viewer/2022061404/56814bf2550346895db8df45/html5/thumbnails/33.jpg)
33Modbus tour 2005.10
Modbus TCP/IP连接建立 Modbus 报文传输服务必须在 502端口上提供一个监听套接字,允 许接收新的连接和与其他设备交换数据 当报文传输服务需要与远程服务器交换数据时,它必须与远程 502端
口建立一个新的客户机连接,以便于远距离地交换数据。本地端口必须高于 1024 ,并且对每个客户机的连接各不相同
设备 设备客户机端口
服务器端口
502
n(n>1024)
服务器端口
客户机端口
502
n(n>1024)(@ I P1 n, @I P2连接
502)
@ I P1 @ I P2
![Page 34: MODBUS 技术的基础知识 演讲者 : 北京交通大学 孙昕](https://reader033.vdocuments.pub/reader033/viewer/2022061404/56814bf2550346895db8df45/html5/thumbnails/34.jpg)
34Modbus tour 2005.10
Modbus TCP/IP 通信栈 TCP/IP 栈提供了一个接口,用来管理连接、发送和接收数据,还可以
进行某些参数配置,以使得栈的特性适应于设备或系统的限制
网络访问 Ethernet I I 和 802.3层
Msg M
TCP TCP
Modbus Modbus
I P I P I CMP I CMP
ARP ARP