MODBUS通讯协议培训--
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
• 响应信息输入位10218-10213的状态用35(即二进制00110101) 表示。输入位 102 18 为左数第3 位,10213 输入位为 最低位,输入位10218-10213 的状态分别为ON-ON-OFF-ON-OFF-ON ,注意还有2 个剩余位需填零。
查询
从机地址 功能码 寄存器起始地址高字节 寄存器起始地址低字节 读取输入状态的个数高字节 读取输入状态的个数低字节 CRC校验高字节 CRC校验低字节
举例
01 05 00 AC FF 00 4C 1B
实用文档
报文举例
• 功能码06:预置单个寄存器(把一个值预置到一个4XXXX类型的保持寄存器中)
• 查询信息规定了要预置寄存器的类型,寄存器寻址起始地址为0,寄存器1 所对应的地址为0,例:请求把从机设备地址 为1 中的40002寄存器预置为0003值。
强置一个逻辑线圈的通断状态 把具体的二进值装入一个保持寄存器 把具体的二进制值装入一串连续的保持寄存器
实用文档
MODBUS报文概述
• 基本格式
地址
功能码
数据域
CRC校验
• 解释
地址:需要进行通讯的设备的物理地址,占一个字节,范围1-255。 功能码:常用的功能码,占一个字节。 数据域:包括寄存器起始地址和数据个数,分别占两个字节共四个字节。 CRC校验:从地址开始到CRC校验前所有字节的一个校验,占两个字节。
读取线圈的个数低字节
圈的状 为1B(即二进制00011011),线圈56
CRC校验高字节
是左数第4 位,线圈52 是该字节的最低位, 所以线圈56 至52 的状态分别为ON-ON-
CRC校验低字节
OFF-ON-ON 注意3 个剩余位(至最高位的数)
全部填0 。
实用文档
举例
01 01 00 13 00 25 0C 14
实用文档
举例
01 10 00
01
00
02 04 00 0A 01 02 92 30
响应
从机地址 功能码 寄存器起始地址高字节 寄存器起始地址低字节 预置寄存器个数高字节 预置寄存器个数低字节 CRC校验高字节 CRC校验低字节
举例
01 10 00 01 00 02 10 08
调试简介
• 调试工具:包括串口调试工具,以太网调试工具,可以在PM2的文档资料/工程技术规约发布/调试工具中下载相关调试 工具。
• 响应信息:正常响应返 回从机地址,功能代码 和起始地址和预置寄存 器数。
查询
从机地址 功能码
寄存器起始地址高字 节
寄存器起始地址低字 节
预置寄存器个数高字 节
预置寄存器个数低字 节
预置值的字节数 预置数据值1高字节 预置数据值1低字节 预置数据值2高字节 预置数据值2低字节
CRC校验高字节 CRC校验低字节
实用文档
举例
01 03 02 00 64 B9 AF
报文举例
• 功能码05:强制单个线圈 • 查询信息规定了需要强制线圈的类型,线圈起始地址为0,线圈1 的寻址地址为0 ,FF00值请求线圈处于ON 状态,
0000值请求线圈处于OFF 状 ,其它值对线圈无效,不起作用。 例:强制从机设备地址为1中的173 线圈为ON 状态。 • 响应信息:线圈为强制状态后即返回正常响应
举例
01 06 00 01 00 03 98 0B
报文举例
• 功能码16:预置多个 寄存器(把数据按顺序 预置到各4XXXX类型 的保持寄存器中)
• 查询信息规定了要预置 寄存器的类型,寄存器 寻址起始地址为0,寄 存器1 所对应的地址为 0,例:请求在从机设 备地址为1的2个寄存 器中放入预置值,起始 寄存器为 40002,预 置值分别为000A和 0102
寄存器起始地址高字节
11001101,该字节的最高位为线圈27,最低 寄存器起始地址低字节 位为线圈20,线圈从左(27) 向右(20)状态分
别为 ON-ON-OFF-OFF-ON-ON-OFF-ON 读取线圈的个数高字节
,数据串行传输从低位到高位,即20…27, 28 …35 …。 最后一个数据字节中,56-52 线
• 响应信息:寄存器内容被预置后返回正常响应
查询
从机地址 功能码 寄存器起始地址高字节 寄存器起始地址低字节 预置数据值高字节 预置数据值低字节 CRC校验高字节 CRC校验低字节
举例
01 06 00 01 00 03 98 0B
响应
从机地址 功能码 寄存器起始地址高字节 寄存器起始地址低字节 预置数据值高字节 预置数据值低字节 CRC校验高字节 CRC校验低字节 实用文档
举例
01 02 00 C4 00 16 B8 39
响应
从机地址 功能码 字节数
输入状态1020410197
输入状态1021210205
输入状态1021810213
CRC校验高字节 实用文档 CRC校验低字节
举例
01 02 03 AC
D8
35 22 78
报文举例
• 功能码03:读取保持寄存器 • 功能码04:读取输入寄存器(一般不用) • 查询信息规定了要读的寄存器起始地址及寄存器的数量,寄存器寻址起始地址为0000 ,寄存器 1-16 所对应的地址分别
存器定义为4XXXX,而功能码04对应的寄存器定义为3XXXX。
查询
从机地址 功能码 寄存器起始地址高字节 寄存器起始地址低字节 寄存器个数高字节 寄存器个数低字节 CRC校验高字节 CRC校验低字节
举例
01 03 00 00 00 01 84 0A
响应
从机地址 功能码 字节数
数据1的高字节 数据1的低字节 CRC校验高字节 CRC校验低字节
查询
从机地址 功能码 线圈起始地址高字节 线圈起始地址低字节 强制数据值高字节 强制数据值低字节 CRC校验高字节 CRC校验低字节
举例
01 05 00 AC FF 00 4C 1B
响应
从机地址 功能码 线圈起始地址高字节 线圈起始地址低字节 强制数据值高字节 强制数据值低字节 CRC校验高字节 CRC校验低字节
数字机电 · 智慧运维
MODBUS通讯协议培训
实用文档
目录
1 【MODBUS概述】
2 【常用功能码及异常响应】
3 【MODBUS报文概述】
4 【报文举例】
5 【调试简介】
实用文档
MODBUS概述
实用文档
MODBUS概述
• Modbus 协议是应用于电子控制器上的一种通用协议。 通过此协议,控制器相互之间、控制器经由网络(例如串 口或网口)和其它设备之间可以通信并获得数据。 Modbus 协议定义了一个控制器能认识使用的消息结构 ,而不管它们是经过何种网络进行通信的。它描述了一个 控制器请求访问其它设备的过程,以及如何回应来自其它 设备的请求和怎样侦测错误并记录。
实用文档
异常响应
如果主站发送了一个非法的数据包给装置或者是主站请求一个无效的数据寄存器时 ,异常的数据响应就会产生(如果接收到的数据CRC校验错误,则直接丢弃)。这 个异常响应数据包括从站地址、功能码、故障码和校验域。当功能码的高比特位置 也就是最高位为1时,说明此数据包为异常响应。下表说明故障码的含义:
实用文档
报文举例
• 功能码01:读取线圈状态
• 查询信息规定了要读的起始线圈和线圈量, 线圈的起始地址为零,1- 16 个线圈的寻址地 址分为 0- 15。例:请求从机设备地址为1的 线圈20-56的状态,即地址0x0013开始往后 37个线圈的状态。
• 响应信息中的各线圈的状 与数据区的每一位
的值相对应, 1=ON、0=OFF,第一个字节
的最低位 (最低有效字符)为查询的第一个 线圈的状态,其他的线圈状态按顺序在该字
查询
节中由低位向高位排列,直至8 个为止,下一 个字节也是从低位向高位排例。若返回的线
从机地址
圈数不是 8的倍数,则在最后的数据字节中的 剩余位至字节的最高位全部填零。
功能码
• 线圈27-20 的状态用CD表示,二进制值为
• Modbus 是一个请求/应答协议即问答式协议。 • 本文档中使用的数据均为十六进制。
实用文档
MODBUS常用功能码
功能码 01 02 03 04 05 06 16
名称 读取线圈状态 读取输入状态 读取保持寄存器 读取输入寄存器 强置单个线圈 预置单个寄存器 预置多个寄存器
作用 取得一组逻辑线圈的当前状态(ON/OFF) 取得一组开关输入的当前状态(ON/OFF) 在一个或多个保持寄存器中取得当前的二进制值 在一个或多个输入寄存器中取得当前的二进制值
• 串口调试工具 • 硬件调试工具
实用文档
调试简介
• 以太网调试工具
实用文档
THANKS !
实用文档
响应
从机地址 功能码 字节数 线圈27-20 线圈35-28 线圈43-36 线圈51-44 线圈56-52 CRC校验高字节 CRC校验低字节
举例
01 01 05 CD 6B B2 0E IB 44 EA
报文举例
• 功能码02:读取输入状态
• 查询信息规定了要读的输入起始地址,以及输入信号的数量。输入起始地址为0 ,1- 16 个输入口的地址分别为0- 15。 例:请求读从机设备地址为1的10197-10218 的输入位状态
为0- 15 • 响应息中的寄存器里存放的数据为二进制数据,每个寄存器分别对应 2 个字节,第一个字节为高字节数据,第二个字
节为低字节数据。寄存器40001 的数据用0064这2 个字节表示,换算成十进制为100. • 注:功能码04的报文格式及结构与功能码03一致,唯一区别在于寄存器地址的定义不同,标准规约中03功能码对应的寄
查询
从机地址 功能码 寄存器起始地址高字节 寄存器起始地址低字节 读取输入状态的个数高字节 读取输入状态的个数低字节 CRC校验高字节 CRC校验低字节
举例
01 05 00 AC FF 00 4C 1B
实用文档
报文举例
• 功能码06:预置单个寄存器(把一个值预置到一个4XXXX类型的保持寄存器中)
• 查询信息规定了要预置寄存器的类型,寄存器寻址起始地址为0,寄存器1 所对应的地址为0,例:请求把从机设备地址 为1 中的40002寄存器预置为0003值。
强置一个逻辑线圈的通断状态 把具体的二进值装入一个保持寄存器 把具体的二进制值装入一串连续的保持寄存器
实用文档
MODBUS报文概述
• 基本格式
地址
功能码
数据域
CRC校验
• 解释
地址:需要进行通讯的设备的物理地址,占一个字节,范围1-255。 功能码:常用的功能码,占一个字节。 数据域:包括寄存器起始地址和数据个数,分别占两个字节共四个字节。 CRC校验:从地址开始到CRC校验前所有字节的一个校验,占两个字节。
读取线圈的个数低字节
圈的状 为1B(即二进制00011011),线圈56
CRC校验高字节
是左数第4 位,线圈52 是该字节的最低位, 所以线圈56 至52 的状态分别为ON-ON-
CRC校验低字节
OFF-ON-ON 注意3 个剩余位(至最高位的数)
全部填0 。
实用文档
举例
01 01 00 13 00 25 0C 14
实用文档
举例
01 10 00
01
00
02 04 00 0A 01 02 92 30
响应
从机地址 功能码 寄存器起始地址高字节 寄存器起始地址低字节 预置寄存器个数高字节 预置寄存器个数低字节 CRC校验高字节 CRC校验低字节
举例
01 10 00 01 00 02 10 08
调试简介
• 调试工具:包括串口调试工具,以太网调试工具,可以在PM2的文档资料/工程技术规约发布/调试工具中下载相关调试 工具。
• 响应信息:正常响应返 回从机地址,功能代码 和起始地址和预置寄存 器数。
查询
从机地址 功能码
寄存器起始地址高字 节
寄存器起始地址低字 节
预置寄存器个数高字 节
预置寄存器个数低字 节
预置值的字节数 预置数据值1高字节 预置数据值1低字节 预置数据值2高字节 预置数据值2低字节
CRC校验高字节 CRC校验低字节
实用文档
举例
01 03 02 00 64 B9 AF
报文举例
• 功能码05:强制单个线圈 • 查询信息规定了需要强制线圈的类型,线圈起始地址为0,线圈1 的寻址地址为0 ,FF00值请求线圈处于ON 状态,
0000值请求线圈处于OFF 状 ,其它值对线圈无效,不起作用。 例:强制从机设备地址为1中的173 线圈为ON 状态。 • 响应信息:线圈为强制状态后即返回正常响应
举例
01 06 00 01 00 03 98 0B
报文举例
• 功能码16:预置多个 寄存器(把数据按顺序 预置到各4XXXX类型 的保持寄存器中)
• 查询信息规定了要预置 寄存器的类型,寄存器 寻址起始地址为0,寄 存器1 所对应的地址为 0,例:请求在从机设 备地址为1的2个寄存 器中放入预置值,起始 寄存器为 40002,预 置值分别为000A和 0102
寄存器起始地址高字节
11001101,该字节的最高位为线圈27,最低 寄存器起始地址低字节 位为线圈20,线圈从左(27) 向右(20)状态分
别为 ON-ON-OFF-OFF-ON-ON-OFF-ON 读取线圈的个数高字节
,数据串行传输从低位到高位,即20…27, 28 …35 …。 最后一个数据字节中,56-52 线
• 响应信息:寄存器内容被预置后返回正常响应
查询
从机地址 功能码 寄存器起始地址高字节 寄存器起始地址低字节 预置数据值高字节 预置数据值低字节 CRC校验高字节 CRC校验低字节
举例
01 06 00 01 00 03 98 0B
响应
从机地址 功能码 寄存器起始地址高字节 寄存器起始地址低字节 预置数据值高字节 预置数据值低字节 CRC校验高字节 CRC校验低字节 实用文档
举例
01 02 00 C4 00 16 B8 39
响应
从机地址 功能码 字节数
输入状态1020410197
输入状态1021210205
输入状态1021810213
CRC校验高字节 实用文档 CRC校验低字节
举例
01 02 03 AC
D8
35 22 78
报文举例
• 功能码03:读取保持寄存器 • 功能码04:读取输入寄存器(一般不用) • 查询信息规定了要读的寄存器起始地址及寄存器的数量,寄存器寻址起始地址为0000 ,寄存器 1-16 所对应的地址分别
存器定义为4XXXX,而功能码04对应的寄存器定义为3XXXX。
查询
从机地址 功能码 寄存器起始地址高字节 寄存器起始地址低字节 寄存器个数高字节 寄存器个数低字节 CRC校验高字节 CRC校验低字节
举例
01 03 00 00 00 01 84 0A
响应
从机地址 功能码 字节数
数据1的高字节 数据1的低字节 CRC校验高字节 CRC校验低字节
查询
从机地址 功能码 线圈起始地址高字节 线圈起始地址低字节 强制数据值高字节 强制数据值低字节 CRC校验高字节 CRC校验低字节
举例
01 05 00 AC FF 00 4C 1B
响应
从机地址 功能码 线圈起始地址高字节 线圈起始地址低字节 强制数据值高字节 强制数据值低字节 CRC校验高字节 CRC校验低字节
数字机电 · 智慧运维
MODBUS通讯协议培训
实用文档
目录
1 【MODBUS概述】
2 【常用功能码及异常响应】
3 【MODBUS报文概述】
4 【报文举例】
5 【调试简介】
实用文档
MODBUS概述
实用文档
MODBUS概述
• Modbus 协议是应用于电子控制器上的一种通用协议。 通过此协议,控制器相互之间、控制器经由网络(例如串 口或网口)和其它设备之间可以通信并获得数据。 Modbus 协议定义了一个控制器能认识使用的消息结构 ,而不管它们是经过何种网络进行通信的。它描述了一个 控制器请求访问其它设备的过程,以及如何回应来自其它 设备的请求和怎样侦测错误并记录。
实用文档
异常响应
如果主站发送了一个非法的数据包给装置或者是主站请求一个无效的数据寄存器时 ,异常的数据响应就会产生(如果接收到的数据CRC校验错误,则直接丢弃)。这 个异常响应数据包括从站地址、功能码、故障码和校验域。当功能码的高比特位置 也就是最高位为1时,说明此数据包为异常响应。下表说明故障码的含义:
实用文档
报文举例
• 功能码01:读取线圈状态
• 查询信息规定了要读的起始线圈和线圈量, 线圈的起始地址为零,1- 16 个线圈的寻址地 址分为 0- 15。例:请求从机设备地址为1的 线圈20-56的状态,即地址0x0013开始往后 37个线圈的状态。
• 响应信息中的各线圈的状 与数据区的每一位
的值相对应, 1=ON、0=OFF,第一个字节
的最低位 (最低有效字符)为查询的第一个 线圈的状态,其他的线圈状态按顺序在该字
查询
节中由低位向高位排列,直至8 个为止,下一 个字节也是从低位向高位排例。若返回的线
从机地址
圈数不是 8的倍数,则在最后的数据字节中的 剩余位至字节的最高位全部填零。
功能码
• 线圈27-20 的状态用CD表示,二进制值为
• Modbus 是一个请求/应答协议即问答式协议。 • 本文档中使用的数据均为十六进制。
实用文档
MODBUS常用功能码
功能码 01 02 03 04 05 06 16
名称 读取线圈状态 读取输入状态 读取保持寄存器 读取输入寄存器 强置单个线圈 预置单个寄存器 预置多个寄存器
作用 取得一组逻辑线圈的当前状态(ON/OFF) 取得一组开关输入的当前状态(ON/OFF) 在一个或多个保持寄存器中取得当前的二进制值 在一个或多个输入寄存器中取得当前的二进制值
• 串口调试工具 • 硬件调试工具
实用文档
调试简介
• 以太网调试工具
实用文档
THANKS !
实用文档
响应
从机地址 功能码 字节数 线圈27-20 线圈35-28 线圈43-36 线圈51-44 线圈56-52 CRC校验高字节 CRC校验低字节
举例
01 01 05 CD 6B B2 0E IB 44 EA
报文举例
• 功能码02:读取输入状态
• 查询信息规定了要读的输入起始地址,以及输入信号的数量。输入起始地址为0 ,1- 16 个输入口的地址分别为0- 15。 例:请求读从机设备地址为1的10197-10218 的输入位状态
为0- 15 • 响应息中的寄存器里存放的数据为二进制数据,每个寄存器分别对应 2 个字节,第一个字节为高字节数据,第二个字
节为低字节数据。寄存器40001 的数据用0064这2 个字节表示,换算成十进制为100. • 注:功能码04的报文格式及结构与功能码03一致,唯一区别在于寄存器地址的定义不同,标准规约中03功能码对应的寄