一、前言
为了方便理解和查阅本人所需的知识,在此做笔记。知识点来源书本与网络,如有侵权,联系删除。
二、定义
Modubs协议是应用应用于电子控制器上的一种通用语言。
三、数据传输
主设备可单独和从设备通信,也能以广播方式和所有从设备通信。
如果单独通信,从设备返回一消息作为回应;
如果是以广播方式查询的,则不作任何回应;
Modbus协议建立了主设备查询的格式:设备(或广播)地址、功能代码、所有要发送的数据、一错误检测域。
四、RTU模式
设备地址——功能代码——数据数量——数据——LRC低字节——LRC高字节
在消息中的每个8Bit字节包含两个4Bit的十六进制字符。
4.1 RTU消息帧
起始位 | 设备地址 | 功能代码 | 数据 | CRC校验 | 结束符 |
---|---|---|---|---|---|
T1-T2-T3-T4 | 8Bit | 8Bit | n个8Bit | 16Bit | T1-T2-T3-T4 |
4.2 功能码
Modbus的操作对象有四种:线圈、离散输入、保持寄存器、输入寄存器。
对象 | 含义 |
---|---|
线圈 | PLC的输出位,开关量,在Modbus中可读可写 |
离散输入 | PLC的输入位,开关量,在Modbus中只读 |
输入寄存器 | PLC中只能从模拟量输入端改变的寄存器,在Modbus中只读 |
保持寄存器 | PLC中用于输出模拟量信号的寄存器,在Modbus中可读可写 |
功能码 | 含义 | 位操作/字操作 | 操作数量 |
---|---|---|---|
0x01 | 读线圈寄存器 | 位操作 | 单个或多个 |
0x02 | 读离散输入寄存器 | 位操作 | 单个或多个 |
0x03 | 读保持寄存器 | 字操作 | 单个或多个 |
0x04 | 读输入寄存器 | 字操作 | 单个或多个 |
0x05 | 写单个线圈寄存器 | 位操作 | 单个 |
0x06 | 写单个保持寄存器 | 字操作 | 单个 |
0x0f | 写多个线圈寄存器 | 位操作 | 多个 |
0x10 | 写多个保持寄存器 | 字操作 | 多个 |