当前位置:首页 >> 其它课程 >>

Modbus协议


MODBUS技术的基础知识
演讲者:北京交通大学 孙昕

主要内容
? 概述 ? Modbus应用协议规范 ? Modbus协议在串行链路上的实现 ? Modbus协议在TCP/IP上的实现

Modbus tour 2005.10

2





? 1979年Modicon公司(现Schneider 的一部分)提出的 Modbus ? Modbus最初作为工业串行链路的事实标准 ? 1997年Schneider电气在TCP/IP上实现Modbus协议

? 2004年Modbus作为我国国家标准

Modbus tour 2005.10

3

Modbus技术规范组成
? Modbus应用协议规范 ? Modbus协议在串行链路上的实现指南

? Modbus协议在TCP/IP上的实现指南

Modbus tour 2005.10

4

Modbus技术规范的关系
Modbus 应用协议 规范 Modbus 应用层

Modbus 协议 在 TCP/IP 上 的实现指南

在 TCP/IP 上的 M odbus 映射

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 tour 2005.10

5

Modbus应用协议规范

Modbus tour 2005.10

6

Modbus通信栈

M odbus 应用层

基于 TCP 的 M odbus TCP IP

其它 其它

M ODBUS+ / HDLC 物理层

主站/从站 EIA/TIA-232 或 EIA/TIA-485

Ethernet II /802.3 以太网 物理层

Modbus tour 2005.10

7

Modbus应用协议
Modbus是一种简单客户机/服务器应用协议 ? 客户机能够向服务器发送请求 ? 服务器分析请求,处理请求,向客户机发送应答

Modbus tour 2005.10

8

通用Modbus帧结构--协议数据单元

(PDU)

Modbus是一个可选择部分使用的协议 ?服务器可执行部分Modbus协议 Modbus由公共功能码和用户定义的功能码组成 Modbus应用协议使用功能码列表读或写数据,或者在远程 服务器上进行远程处理 ?读/写寄存器列表,读/写比特列表 ?诊断,标识

ADU 附加地址 功能码 PDU 数据 差错校验

Modbus tour 2005.10

9

Modbus事务处理(无差错)
? 当服务器对客户机响应时,它使用功能码域来指示正常(无差错)

响应或者出现某种差错(称为异常响应) ? 对于一个正常响应来说,服务器仅复制原始功能码
客户机
启动请求
功能码 数据请求

服务器

执行操作 启动响应
功能码

数据响应

接收响应

Modbus tour 2005.10

10

Modbus事务处理(异常响应)
SM6 ?对于异常响应,服务器将原始功能码的最高有效位设

置逻辑1后返回 ?异常码指示差错类型
客户机
启动请求
功能码 数据请求

服务器

在操作中检测差错 启动差错 接收响应
异常功能码

异常码

Modbus tour 2005.10

11

Modbus PDU长度
? 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 tour 2005.10

12

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字节]

Modbus tour 2005.10

13

Modbus 数据模型
Modbus的数据模型是以一组具有不同特征的表为基础建立的 四个基本表为: 基本表
离散量输入
线圈 输入寄存器 保持寄存器 对象类型 访问类型 注释

单个位
单个位 16位字 16位字

只读
读写 只读 读写

I/O系统可提供这种类型数据
通过应用程序可改变这种类型 数据 I/O系统可提供这种类型数据 通过应用程序可改变这种类型 数据

Modbus tour 2005.10

14

Modbus公共功能码的定义
功能码 位 访 问 物理离散量 输入 内部位或 物理线圈 输入寄存器 内部寄存器 或物理输出 寄存器 读离散量输入 读线圈 写单个线圈 写多线圈 读输入寄存器 读保持寄存器 写单寄存器 写多寄存器 读/写多寄存器 屏蔽写寄存器 读FIFO队列 文件记录访问 读文件记录 写文件记录 读异常状态 诊断 获得通信事件计 数器 获得通信事件记 录 报告从站ID 读设备识别码 其它 封装接口传输 码 02 01 05 15 04 03 06 16 23 22 24 20 21 07 08 11 12 17 43 43 14 6 6 00-18 OB 0C 11 2B 2B 子码 (十六进 制) 02 01 05 0F 04 03 06 10 17 16 18 14 15

数 据 访 问

16 位 访 问

诊 断

Modbus tour 2005.10

15

Modbus功能码应用实例(1)
读线圈01 (0x01)
请求 功能码 起始地址 线圈数量 响应 功能码 字节计数 线圈状态 1字节 1字节 n字节 0x01 N* n=N或N+1 1字节 2字节 2字节 0x01 0x0000 至0xFFFF 1至2000(0x7D0)

*N=寄存器的数量/8,如果余数不等于0,那么 N = N+1 错误 功能码 1字节 功能码+0x80

异常码

1字节

01或02或03或04

Modbus tour 2005.10

16

? 写多个寄存器16(0x10)

请求
功能码 起始地址 寄存器数量 1字节 2字节 2字节 0x03 0x0000至0xFFFF 1至125(0x7D)

响应
功能码 字节数 寄存器值 *N=寄存器数量 1字节 1字节 N*×2字节 0x03 2×N*

错误
差错码 1字节 0x83

异常码

1字节

01或02或03或04

Modbus tour 2005.10

17

Modbus功能码应用实例(3)
? 写多个寄存器16(0x10)
请求
功能码 起始地址 寄存器数量 字节计数 寄存器值 *N=寄存器数量 响应 1字节 2字节 2字节 1字节 N*×2字节 0x10 0x0000至0xFFFF 0x0001至0x0078 2×N* 值

功能码
起始地址 寄存器数量 错误 差错码 异常码

1字节
2字节 2字节

0x10
0x0000至0xFFFF 1至123(0x7B)

1字节 1字节

0x90 01或02或03或04

Modbus tour 2005.10

18

Modbus协议在串行链路上的实现

Modbus tour 2005.10

19

Modbus协议在串行链路上的实现模型
?主要在RS-485和RS-232等物理接口上实现Modbus协议

层 7 6

ISO/OSI 模型 应用层 表示层 Modbus应用协议 空

5
4 3

会话层
传输层 网络层


空 空
Modbus 应用协议层 客户机/服务器

2
1

数据链路层
物理层

Modbus串行链路协议
EIA/TIA-485 (或 EIA/TIA232)
Modbus 主站/从站 EIA/TIA-485
(或 EIA/TIA-232)

Modbus tour 2005.10

20

串行链路上的Modbus帧结构
?Modbus串行链路协议是一个主/从协议 ?网络上的每个从站必须有唯一的地址(从1到247)

?从站地址用于寻址从站设备,由主站发起
?地址0用于广播模式,不需要响应 ?RS-485和RS-232

定义了标准的物理端口,提高互可操作性

Modbus 串行链路 ADU 地址域 功能码 Modbus PDU 数据 CRC (或 LRC)

Modbus tour 2005.10

21

Modbus串行传输模式 – RTU模式
? RTU Modbus串行传输模式的报文格式, CRC-16差错校验
从站 地址 1 字节 功能码 1 字节 数据 0 至 252 字节 CRC 2 字节
CRC 低位 CRC 高位

? 报文帧的标识
帧1 t0 帧2 帧3

3.5 个字符 至少 3.5 个字符 至少 3.5 个字符 4.5 个字符

? 字符之间的要求
帧 1 正常 t0 帧 2 不正常

? 1.5 个字符

> 1.5 个字符

Modbus tour 2005.10

22

Modbus串行传输模式 – ASCII模式
? ? ? ?

报文必须以“:”开始 报文必须以“LF-CR”结束 数据用十六进制ASCII码值表示 使用LRC进行差错校验

起始 1个 字符 :

地址 2 个字符

功能码 2 个字符

数据 0 至 2x252 个字符

LRC 2 个字符

结束 2 个字符 CR、LF

Modbus tour 2005.10

23

Modbus协议在TCP/IP上的实现

Modbus tour 2005.10

24

基于开放TCP/IP 的Modbus协议
? Modbus协议是一个开发性协议

? IANA已为 Modbus协议指配TCP / UDP 知名端口502 ? Modbus协议是一个标准协议 ? IETF组织提议将Modbus协议作为因特网标准 ? Modbus协议是自动化领域中广泛使用“实事”标准 ? 以太网 (快速以太网) ? 使用目前最流行的LAN技术 ? IEEE 802.3中定义的以太网和以太网II ? TCP/IP模型 ? 描述因特网协议的组合

Modbus tour 2005.10

25

Modbus TCP/IP通信结构
?

Modbus TCP/IP的通信设备: 连接至TCP/IP网络的Modbus TCP/IP客户机和服务器设备 互连设备,如:在TCP/IP网络和串行链路子网之间互连的网桥、 路由器或网关等设备
Modbus 客户机 串行链路 Modbus 客户机 TCP/IP Modbus 客户机 TCP/IP 客 户 机 TCP/IP 网关

M odbus TCP / IP

Modbus 服务器 TCP/IP

Modbus 服务器 TCP/IP

服 务 器 TCP/I 网关

Modbus 服务器 串行链路

Modbus 服务器 串行链路

Modbus 串 行 链 路

Modbus tour 2005.10

26

TCP/IP 上的Modbus 数据帧
? 通过TCP/IP栈传输
? 支持以太网II和IEEE 802.3帧,默认帧为以太网II帧 ? 以太网II是默认的 TCP/IP 网络帧格式

Modbus TCP/IP ADU MBAP 报文头 功能码 PDU 数据

Modbus tour 2005.10

27

MBAP 报文头

事务处理 标识符

长度
2 字 节

描述
Modbus 请 求 / 响 应事务处理的识 别

客户机
客户机启 动

服务器
服务器从接收的 请求中重新复制

协议标识 符 长度

2 字 节 2 字 节
1 字 节

0=Modbus协议

客户机启 动

服务器从接收的 请求中重新复制

随后字节的数量

客户机启 服务器(响应) 动 ( 请 求 ) 启动
客户机启 动 服务器从接收的 请求中重新复制

单元标识 符

串行链路或其它 总线上连接的远 程从站的识别

Modbus tour 2005.10

28

Modbus报文传输服务结构
用户应用 通讯

资 源 管 理 与 流 量 控 制

应用层

MODBUS 客户接口

MODBUS 客户接口

MODBUS客户机

MODBUS服务器

TCP

管理层
栈参数化 连接管理 访问控制

TCP/IP栈

Modbus tour 2005.10

29

通信应用层
?

Modbus客户机 允许用户应用显性地控制与远程设备的信息交换。Modbus客户机根 据用户应用向Modbus客户机接口发送的要求中所包含的参数来建立 一个Modbus请求。 ? Modbus客户机接口 Modbus客户机接口提供一个接口 ,使得用户应用能够生成各类 Modbus服务的请求,该服务包括对Modbus应用对象的访问 ? Modbus服务器 在收到一个Modbus请求以后,模块激活一个本地操作进行读、写、 或完成其他操作。

Modbus tour 2005.10

30

TCP管理层
管理通信的建立和结束以及管理在所建立的TCP连接上的数据流 。 连接管理 在客户机和服务器的Modbus模块之间的通信需要使用TCP连接管理模块, 负责全面管理报文传输TCP连接 ? 访问控制 在某些至关重要的场合,必须禁止无关的主机对设备内部数据的访问。 这既是需要的安全模式,也是在需要时实现安全处理的原因
?

Modbus tour 2005.10

31

TCP/IP栈层
? 可以对TCP/IP的栈进行参数配置,以适用对产品或系统的不同的特定

约束进行数据流控制、地址管理和连接管理。使用BSD套接字接口来管 理TCP连接

Modbus tour 2005.10

32

Modbus TCP/IP连接建立
Modbus报文传输服务必须在502端口上提供一个监听套接字,允 ? 许接收新的连接和与其他设备交换数据 ? 当报文传输服务需要与远程服务器交换数据时,它必须与远程502端 口建立一个新的客户机连接,以便于远距离地交换数据。本地端口必 须高于1024,并且对每个客户机的连接各不相同
?

设备

@ IP1 客户 机端 口

设备
n (n>1024)

连接(@ IP1 n, @IP2 502)

n (n>1024)

@ IP2 客户 机端 口

服务器 端口

502

502

服务器 端口

Modbus tour 2005.10

33

Modbus TCP/IP通信栈
?

TCP/IP栈提供了一个接口,用来管理连接、发送和接收数据,还可以 进行某些参数配置,以使得栈的特性适应于设备或系统的限制

M Msg

Modbus

TCP

ICMP

IP

ARP

网络访问 Ethernet II 和 802.3 层

Modbus tour 2005.10

34

谢谢!
sunxincn@263.net
Modbus tour 2005.10 35


相关文章:
MODBUS协议整理
MODBUS协议整理_计算机软件及应用_IT/计算机_专业资料。C# 【MODBUS 协议整理——汇总】 1.MODBUS 功能码简述下表列出 MODBUS 支持的部分功能代码:以十进制表示。 ...
MODBUS协议最简单又是最直白的解释
MODBUS协议最简单又是最直白的解释_法律资料_人文社科_专业资料。Modbus 是一种单主站的主/从通信模式。Modbus 网络上只能有一个主站存在,主站在 Modbus 网络上没...
ModBus协议详细说明
非标准 ModBus 协议帧结构: 查询应答帧要求: 设备地址:传感网中每个设备的地址 1-247 功能码:1 个字节,0x03-设备读数据信息 起始地址:2 个字节,数据起始的...
Modbus协议和点表
2.本通讯转换器支持的 MODBUS RTU 通讯帧结构解释:符合标准 Modbus RTU 通讯协议格式 每个 Modbus 通讯帧由以下几个部分组成: 1) 地址域 2) 功能域 3) 数据...
MODBUS_RTU通讯协议_图文
? 百特工控 福州福光百特自动化设备有限公司 MODBUS 通讯协议 使用手册 1. RTU 方式通讯协议 1.1. 硬件采用 RS-485,主从式半双工通讯,主机呼叫从机地址,从机...
modbus协议解析
modbus协议解析_信息与通信_工程科技_专业资料。目录 1、Modbus 简介 ...目录1、Modbus 简介 ......
串口通讯modbus协议学习笔记
串口通讯 modbus 协议 串口通讯 常用的有 RS232 和 RS485 RS232 全双工,电缆最长 15.2m 发送 TXD;接收 RXD 逻辑 1(MARK)=-3V~-15V 逻辑 0(SPACE)=+3...
modbus协议的基本知识
ModBus 协议是应用层报文传输协议(OSI 模型第 7 层) ,它定义了一个与通信层无关的协 议数据单元(PDU) ,即 PDU=功能码+数据域。 ModBus 协议能够应用在不同...
Modbus协议的特点
Modbus协议的特点_信息与通信_工程科技_专业资料。归纳了Modbus通信协议的一些显著特点MODBUS 总线广泛应用于仪器仪表、 智能高低压电器、 变送器、 可编程控制器、 ...
ModBus RTU通讯协议与ModBus通讯协议有什么区别
其实 VB 中编程很简单从组建添加 MSComm 组 建就行了,难的是校验, 3、modbus、rtu、modbus rtu 分别是什么? modbus 协议是工控行业的标准协议,前身为莫迪康所...
更多相关标签: