Modbus通讯协议详解

版权申诉
0 下载量 164 浏览量 更新于2024-08-21 收藏 22KB DOCX 举报
"Modbus协议格式文档主要介绍了Modbus通讯协议在ASCII模式下的数据传输格式,包括读线圈、读保持寄存器和读输入寄存器的操作,并给出了上位机发送和变频器返回的数据格式。" 在工业自动化领域,Modbus协议是一种广泛使用的串行通信协议,它定义了设备之间交换信息的格式和规则。本文档重点讲解了Modbus协议在ASCII(美国标准代码交换信息格式)模式下的通信细节。 1. **ASCII格式通信资料格式**: - **STX**(Start of Text):启始单元,用字符“:“(ASCII码3AH)表示。 - **ADDR**:8位通讯位置,包含2个ASCII码,范围从00(广播)到250(具体设备地址)。 - **FUNC**:8位命令码,定义了要执行的操作,如读线圈(01)、读保持寄存器(03)等。 - **DataH, DataL**:数据部分的高字节和低字节。 - **LRC**(Longitudinal Redundancy Check):纵向冗余校验,用于检查数据的完整性。 - **CR (0DH)** 和 **LF (0AH)**:回车符和换行符,用于标记消息的结束。 2. **读线圈操作**: - 上位机发送数据格式包括地址、命令码、要读取的线圈起始地址(ADDRH, ADDRL)和数量(NUMH, NUML),以及LRC。 - 变频器返回数据格式包括地址、命令码、字节数(BYTECOUNT)、实际数据(DATA1-DATAN)以及LRC。 3. **读保持寄存器操作**: - 发送数据格式与读线圈类似,但命令码为03,且BYTECOUNT是所需读取寄存器数量的两倍。 - 返回数据同样包含地址、命令码、字节数和数据,但数据表示的是读取的保持寄存器值。 4. **错误响应**: - 当出现错误时,变频器返回数据格式为地址、错误码(0X83)、错误类型(01, 02, 03, 04)及LRC。 5. **读取输入寄存器操作**: - 数据格式与读保持寄存器类似,只是命令码不同,通常为04。 6. **数值转换示例**: - 如文档所示,要读取的设定值(例如30.00HZ)在变频器的CD000寄存器中,其返回的16进制数据"0BB8"转换为10进制后为3000,表示设置值为30.00。 通过理解这些基本格式,开发者可以构建和解析Modbus ASCII模式下的通信消息,实现设备间的有效数据交互。在实际应用中,还需考虑网络拓扑、波特率、奇偶校验等其他通信参数。