MODBUS应用协议规范V1.1b3详解

需积分: 50 23 下载量 36 浏览量 更新于2024-07-15 收藏 699KB PDF 举报
"MODBUS Application Protocol Specification V1.1b3.pdf" MODBUS是一种广泛使用的工业通信协议,主要用于设备间的简单串行通信,尤其是PLC(可编程逻辑控制器)和其它自动化设备之间的数据交换。这份文档是官方的MODBUS应用协议规范,版本为V1.1b3,发布于2012年4月26日,可以从http://www.modbus.org获取。 1. **介绍** MODBUS协议定义了一种通用的、开放的通信标准,允许设备通过串行线或网络进行数据交换。这个文档的范围涵盖了MODBUS协议的应用层面,即如何在不同设备间进行数据传输。 2. **缩写** 文档中可能包含一些缩写,例如MODBUS,FC(Function Code),CRC(Cyclic Redundancy Check)等,这些缩写将在文档中被详细解释。 3. **上下文** MODBUS协议适用于各种工业环境,可以用于简单的点对点通信,也可以在多设备的网络中运行。 4. **一般描述** - **协议描述**:MODBUS协议基于主从架构,其中一台设备作为主设备发起请求,其他设备作为从设备响应。 - **数据编码**:协议规定了二进制数据的表示方式,包括数据的读取和写入。 - **MODBUS数据模型**:定义了设备中的数据组织方式,如寄存器和输入寄存器。 - **MODBUS寻址模型**:定义了设备地址和数据区地址,用于标识特定的从设备和数据点。 - **定义MODBUS事务**:每个MODBUS通信过程由一个完整的事务组成,包括请求和响应。 5. **功能码类别** 功能码是MODBUS协议的核心部分,它们指示了主设备要执行的操作。文档列出了多种功能码,包括读写操作和诊断功能。 6. **功能码描述** - **01(0x01)读 Coils**:主设备请求读取从设备的继电器状态。 - **02(0x02)读 Discrete Inputs**:读取离散输入的状态。 - **03(0x03)读 Holding Registers**:读取保持寄存器的值。 - **04(0x04)读 Input Registers**:读取输入寄存器的值。 - **05(0x05)写 Single Coil**:设置单个继电器状态。 - **06(0x06)写 Single Register**:写入单个保持寄存器的值。 - **07(0x07)Read Exception Status (Serial Line only)**:仅在串行线设备上,读取异常状态。 - **08(0x08)Diagnostics (Serial Line only)**:串行线设备的诊断功能。 - **11(0x0B)Get Comm Event Counter (Serial Line only)**:获取串行线设备的通信事件计数。 - **12(0x0C)Get Comm Event Log (Serial Line only)**:获取串行线设备的通信事件日志。 - **15(0x0F)Write Multiple Coils**:批量设置继电器状态。 - **16(0x10)Write Multiple Registers**:批量写入保持寄存器的值。 每个功能码都有详细的说明,包括其作用、数据格式、错误处理等。 7. **其他** 文档还包含了子功能码的支持情况,以及与这些功能码相关的状态图和示例,帮助用户理解和实现MODBUS通信。 MODBUS Application Protocol Specification V1.1b3是理解并实现MODBUS通信的基础,涵盖了从基本的读写操作到复杂的诊断功能,为设备间的数据交换提供了全面的指导。