1 / 35

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

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

renata
Télécharger la présentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

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

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

  4. Modbus技术规范组成 • Modbus应用协议规范 • Modbus协议在串行链路上的实现指南 • Modbus协议在TCP/IP上的实现指南

  5. Modbus技术规范的关系

  6. Modbus应用协议规范

  7. Modbus通信栈

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

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

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

  11. Modbus事务处理(异常响应) SM6 • 对于异常响应,服务器将原始功能码的最高有效位设置逻辑1后返回 • 异常码指示差错类型

  12. 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字节。

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

  14. 基本表 对象类型 访问类型 注释 离散量输入 单个位 只读 I/O系统可提供这种类型数据 线圈 单个位 读写 通过应用程序可改变这种类型数据 输入寄存器 16位字 只读 I/O系统可提供这种类型数据 保持寄存器 16位字 读写 通过应用程序可改变这种类型数据 Modbus数据模型 Modbus的数据模型是以一组具有不同特征的表为基础建立的 四个基本表为:

  15. 功能码 码 子码 (十六进制) 数 据 访 问 位 访 问 物理离散量输入 读离散量输入 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 Modbus公共功能码的定义

  16. 功能码 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 Modbus功能码应用实例(1) 请求 读线圈01 (0x01) 响应 *N=寄存器的数量/8,如果余数不等于0,那么 N = N+1 错误

  17. 功能码 1字节 0x03 起始地址 2字节 0x0000至0xFFFF 寄存器数量 2字节 1至125(0x7D) 功能码 1字节 0x03 字节数 1字节 2×N* 寄存器值 N*×2字节 差错码 1字节 0x83 异常码 1字节 01或02或03或04 请求 • 写多个寄存器16(0x10) 响应 *N=寄存器数量 错误

  18. 功能码 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 Modbus功能码应用实例(3) 请求 • 写多个寄存器16(0x10) *N=寄存器数量 响应 错误

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

  20. ISO/OSI 模型 7 应用层 Modbus应用协议 6 表示层 空 5 会话层 空 4 传输层 空 3 网络层 空 2 数据链路层 Modbus串行链路协议 1 物理层 EIA/TIA-485 (或EIA/TIA232) Modbus协议在串行链路上的实现模型 • 主要在RS-485和RS-232等物理接口上实现Modbus协议

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

  22. Modbus串行传输模式 – RTU模式 • RTU Modbus串行传输模式的报文格式, CRC-16差错校验 • 报文帧的标识 • 字符之间的要求

  23. Modbus串行传输模式 –ASCII模式 • 报文必须以“:”开始 • 报文必须以“LF-CR”结束 • 数据用十六进制ASCII码值表示 • 使用LRC进行差错校验

  24. Modbus协议在TCP/IP上的实现

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

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

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

  28. 长度 描述 客户机 服务器 事务处理标识符 2字节 Modbus请求/响应事务处理的识别 客户机启动 服务器从接收的请求中重新复制 协议标识符 2字节 0=Modbus协议 客户机启动 服务器从接收的请求中重新复制 长度 2字节 随后字节的数量 客户机启动(请求) 服务器(响应)启动 单元标识符 1字节 串行链路或其它总线上连接的远程从站的识别 客户机启动 服务器从接收的请求中重新复制 MBAP 报文头

  29. 用户应用 通讯 MODBUS MODBUS 应用层 客户接口 客户接口 资 源 管 MODBUS客户机 MODBUS服务器 理 与 流 TCP 量 管理层 控 制 栈参数化 连接管理 访问控制 TCP/IP栈 Modbus报文传输服务结构

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

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

  32. TCP/IP栈层 • 可以对TCP/IP的栈进行参数配置,以适用对产品或系统的不同的特定 约束进行数据流控制、地址管理和连接管理。使用BSD套接字接口来管 理TCP连接

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

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

  35. 谢谢! sunxincn@263.net

More Related