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

35
MODBUS 技技技技技技技 演演演 : 技技技技技技 技技

description

MODBUS 技术的基础知识 演讲者 : 北京交通大学 孙昕. 主要内容. 概述 Modbus 应用协议规范 Modbus 协议在串行链路上的实现 Modbus 协议在 TCP/IP 上的实现. 概 述. 1979年 Modicon 公司(现 Schneider 的一部分)提出的 Modbus Modbus 最初作为工业串行链路的事实标准 1997年 Schneider 电气在 TCP/IP 上实现 Modbus 协议 2004年 Modbus 作为我国国家标准. Modbus 技术规范组成. Modbus 应用协议规范 - PowerPoint PPT Presentation

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

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

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

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

2Modbus tour 2005.10

主要内容

概述

Modbus 应用协议规范

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

Modbus 协议在 TCP/IP 上的实现

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

3Modbus tour 2005.10

概 述 1979年Modicon 公司 (现 Schneider 的一部分 )

提出的 Modbus

Modbus 最初作为工业串行链路的事实标准

1997年 Schneider 电气在 TCP/IP 上实现Modbus 协议

2004年Modbus 作为我国国家标准

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

4Modbus tour 2005.10

Modbus 应用协议规范

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

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

Modbus 技术规范组成

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

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 技术的基础知识 演讲者 : 北京交通大学 孙昕

6Modbus tour 2005.10

Modbus 应用协议规范

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

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 技术的基础知识 演讲者 : 北京交通大学 孙昕

8Modbus tour 2005.10

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

Modbus 应用协议

客户机 服务器

Modbus请求: 地址100开始读20个字

Modbus响应 : 地址100至119的20个字的值

网络

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

9Modbus tour 2005.10

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

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

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

ADU

PDU

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

10Modbus tour 2005.10

Modbus 事务处理 ( 无差错 )

当服务器对客户机响应时,它使用功能码域来指示正常(无差错)响应或者出现某种差错(称为异常响应) 对于一个正常响应来说,服务器仅复制原始功能码

功能码 数据请求

客户机 服务器

启动请求

执行操作

启动响应

接收响应

功能码 数据响应

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

11Modbus tour 2005.10

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

置逻辑 1 后返回 异常码指示差错类型

客户机 服务器

启动请求

在操作中检测差错 启动差错

异常功能码 接收响应 异常码

功能码 数据请求

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

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 技术的基础知识 演讲者 : 北京交通大学 孙昕

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 技术的基础知识 演讲者 : 北京交通大学 孙昕

14Modbus tour 2005.10

Modbus 的数据模型是以一组具有不同特征的表为基础建立的

四个基本表为:

Modbus 数据模型

基本表 对象类型 访问类型 注释

离散量输入 单个位 只读 I/O 系统可提供这种类型数据

线圈 单个位 读写 通过应用程序可改变这种类型数据

输入寄存器 16 位字 只读 I/O 系统可提供这种类型数据

保持寄存器 16 位字 读写 通过应用程序可改变这种类型数据

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

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 技术的基础知识 演讲者 : 北京交通大学 孙昕

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 技术的基础知识 演讲者 : 北京交通大学 孙昕

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 技术的基础知识 演讲者 : 北京交通大学 孙昕

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 技术的基础知识 演讲者 : 北京交通大学 孙昕

19Modbus tour 2005.10

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

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

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 技术的基础知识 演讲者 : 北京交通大学 孙昕

21Modbus tour 2005.10

串行链路上的 Modbus 帧结构Modbus 串行链路协议是一个主 / 从协议网络上的每个从站必须有唯一的地址(从 1到 247 ) 从站地址用于寻址从站设备,由主站发起地址 0 用于广播模式,不需要响应RS-485和 RS-232 定义了标准的物理端口,提高互可操作性

地址域 功能码 数据 CRC (或 LRC)

Modbus串行链路 ADU

Modbus PDU

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

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 技术的基础知识 演讲者 : 北京交通大学 孙昕

23Modbus tour 2005.10

Modbus 串行传输模式 – ASCII 模式 报文必须以“ :”开始

报文必须以“ LF-CR” 结束

数据用十六进制 ASCII 码值表示

使用 LRC 进行差错校验

起始 地址 功能码 数据 LRC 结束

1个

字符 :

2个字符 2个字符 2个字符 2个字符 CR、LF

0至 2x252个字符

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

24Modbus tour 2005.10

Modbus 协议在 TCP/IP 上的实现

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

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 技术的基础知识 演讲者 : 北京交通大学 孙昕

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 技术的基础知识 演讲者 : 北京交通大学 孙昕

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 技术的基础知识 演讲者 : 北京交通大学 孙昕

28Modbus tour 2005.10

MBAP 报文头

域 长度 描述 客户机 服务器

事 务 处 理标识符

2 字节

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

客 户 机启动

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

协 议 标 识符

2 字节

0=Modbus 协议 客 户 机启动

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

长度 2 字节

随后字节的数量 客 户 机启动 ( 请求)

服务器(响应)启动

单 元 标 识符

1 字节

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

客 户 机启动

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

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

29Modbus tour 2005.10

Modbus 报文传输服务结构

用户应用

通讯应用层

MODBUS客户接口

MODBUS客户接口

MODBUS 客户机 MODBUS 服务器

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

TCP/IP 栈

资源管理与流量控制

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

30Modbus tour 2005.10

通信应用层

Modbus 客户机 允许用户应用显性地控制与远程设备的信息交换。 Modbus 客户机根

据用户应用向 Modbus 客户机接口发送的要求中所包含的参数来建立一个 Modbus 请求。

Modbus 客户机接口 Modbus 客户机接口提供一个接口,使得用户应用能够生成各类

Modbus 服务的请求,该服务包括对 Modbus 应用对象的访问 Modbus 服务器 在收到一个 Modbus 请求以后,模块激活一个本地操作进行读、写、

或完成其他操作。

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

31Modbus tour 2005.10

TCP管理层

管理通信的建立和结束以及管理在所建立的 TCP连接上的数据流 。

连接管理 在客户机和服务器的 Modbus 模块之间的通信需要使用 TCP连接管理模块,负责全面管理报文传输 TCP连接

访问控制 在某些至关重要的场合,必须禁止无关的主机对设备内部数据的访问。这既是需要的安全模式,也是在需要时实现安全处理的原因

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

32Modbus tour 2005.10

TCP/IP 栈层

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

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

理 TCP连接

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

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 技术的基础知识 演讲者 : 北京交通大学 孙昕

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

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

35Modbus tour 2005.10

谢谢 ! [email protected]