变送器MODBUS通讯协议
2.5 数据栏
在查询帧和广播帧中,数据栏包含需要从机去执行的信息。在响应帧中,数据栏包含从 机执行的结果或者异常响应。数据拦可以包含数值、位址基准、限度或异常响应。 如果从机在响应主机命令时出现错误, 那么响应帧的功能栏的最高位将被置高,数据栏 包含为什么从机不能执行命令的代码。 异常响应代码如下: 异常响应 01 02 03 06
技术文件
描述 无效功能 无效地址 无效数据 忙
响应解释 变送器不允许执行收到的功能 数据栏中的地址是不允许的 数据栏中的数据是不允许的 收到的消息没错,但从机正在执行一个长的程序命令
第 8 页 共 19 页
西安东风机电有限公司
变送器通讯协议
2.6 校验栏
校验栏用于检查主机与网络设备之间传送的信息是否有错。
2.2 广播帧和地址 0
任何一个使用从机地址0的查询帧就是广播帧。在广播帧中只有MODBUS功能5, 6, 8, 15,和16才是有效的。
2.3 地址栏
在查询帧中地址栏为变送器的轮询地址。在响应帧中地址栏为响应设备的轮询地址。 在 广播帧中地址栏为一个0,它告诉网络上的设备不需要回答。
2.4 功能栏
在查询帧或广播帧中,功能栏位含有一个功能码,它表示对在数据拦中映射地址的阅读 指令,书写指令或诊断的指令。在一个响应帧中,功能栏位含有功能码用来验证装置对指令 的响应。如果在功能栏位中的最高有效位元被设定,数据拦含有异常响应用来说明在处理命 令中遇到的任何错误。 变送器使用了MODBUS功能码的一部分。包括读指令、写指令和诊断指令。 � 读指令:包括功能01(读卷状态),02(读输入状态),03(读保持寄存器),04 (读输入寄存器),17(读设备识别码)。 � 写指令:包括功能05(写卷),06(写寄存器),15(写多卷),16(写多寄存器) 。 � 诊断指令:包括功能07(读异常状态),08(循环诊断)。 下表给出变送器支持的功能。 功能码 01 02 03 04 05 06 07 08 15 16 17 类型 读 读 读 读 写 写 诊断 诊断 写 写 读 描述 读卷状态 读输入状态 读保持寄存器 读输入寄存器 写卷 写寄存器 读异常状态 循环诊断 写多卷 写多寄存器 读设备识别码 功能解释 读一个或连续卷的开关状态 读一个或连续离散量的开关状态 读一个或连续保持寄存器的二进制值 读一个或连续输入寄存器的二进制值 设置单个卷的开关状态 写二进制值到保持寄存器 读输入寄存器30125的状态位 发送一条测试消息给变送器用于评估通讯过程 设置连续卷的开关状态 写二进制值到连续的保持寄存器 返回设备类型和操作状态
功能01:读卷状态 功能02:读离散输入状态 功能01和02对应相同的操作,是可互换的。 查询 起始卷 功能
地址
卷个数
校验
01或02 功能 01或 02 字节数 卷状态字节 校验
第 3 页 共 19 页
响应
技术文件
地址
西安东风机电有限公司
变送器通讯协议
例如请求读17号从机卷20-56的状态 查询帧 区域名 从机地址 功能码 起始地址高 起始地址低 卷个数高 卷个数低 校验(LRC或CRC) 响应帧 区域名 从机地址 功能码 字节数 数据(卷27-20) 数据(卷35-28) 数据(卷43-36) 数据(卷51-44) 数据(卷56-52) 校验(LRC或CRC) 依照惯例,高位在左,低位在右。没有用的位添0。 功能03:读保持寄存器 功能04:读输入寄存器 功能03和04对应相同的操作,是可互换的。 查询 起始寄存器 功能 数值(十六进制) 11 01 05 CD 6B B2 0E 1B - 数值(十六进制) 11 01 00 13 00 25 -
地址
校验 变送器状态 校验
07 功能 07
响应
地址
例如读17号变送器状态 查询帧 区域名 从机地址 功能码 校验(LRC或CRC) 响应帧 区域名 从机地址 功能码 变送器状态 校验(LRC或CRC) 变送器状态字含义如下: Bit #0:(E)EPROM求校验和失败 Bit #1:RAM诊断失败 Bit #2:传感器失败 Bit #3:温度传感器失败 Bit #4:输入超限 Bit #5:频率超限
地址
寄存器个数
校验
03或04 功能 01或 02 字节数 寄存器数据字节 校验
响应
地址
例如请求读17号从机寄存器40108-40110的状态 查询帧 区域名 从机地址 功能码 起始地址高 起始地址低 卷个数高 卷个数低 校验(LRC或CRC) 响应帧
技术文件 第 4 页 共 19 页
数值(十六进制) 11 03 00 6B 00 03 -
3.1 ASCII 模式消息帧
在 ASCII 模式,每个消息帧都包括一个起始符、一个地址栏、一个功能栏、一个数据 栏、一个校验栏和一个结束符。 冒号符(: )作为起始符,回车符(CR)和换行符(LF)是结束符。 ASCII 模式允许在两个字符之间有最长 1 秒的时间间隔。 下图举例说明一个 ASCII 模式消息帧:
3 数据传送模式
MODBUS 允许两种传送模式: ASCII 模式和 RTU 模式。 传送模式由主机决定。 在 ASCII 模式,消息由 7 位 ASCII 字符组成。在 RTU 模式,消息由 8 位二进制字符组成。MODBUS 拥有几种不同的错误校验,ASCII 模式使用 LRC 校验,RTU 模式使用 CRC 校验。 下表给出 ASCII 模式和 RTU 模式的比较: ASCII 模式(7bits) 代码系统 位 个 数 起始位 数据位 校验位 停止位 错误校验 十六进制(ASCII 字符 0-9,A-F) 1 7 1 1或2 LRC RTU 模式(8bits) 8 位二进制 1 8 1 1或2 CRC
地址
功能 05 功能 05
卷地址
新卷值
校验
响应地址卷地址 Nhomakorabea新卷值校验
例如将17号从机卷173置高(ON) 查询帧 区域名 从机地址 功能码 卷地址高 卷地址低 新卷值高 新卷值低 校验(LRC或CRC) 响应帧 区域名 从机地址 功能码 卷地址高 卷地址低 新卷值高 新卷值低 校验(LRC或CRC) 数值(十六进制) 11 05 00 AC FF 00 - 数值(十六进制) 11 05 00 AC FF 00 -
诊断码
数值
校验
地址 功能 15
地址 功能 16
起始卷
卷个数
字节数
卷个数
卷 数据
校验
校验
响应
起始卷
例:连续写10个卷到17号从机的卷20~29 位 1 1 0 0 1 1 0 1 0 0 0 0 0 0 0 1 卷 27 26 25 24 23 22 21 20 - - - - - - 29 28 要写的数据为十六进制CD 01(二进制1100 1101 0000 0001) 查询帧 区域名 从机地址 功能码 卷地址高 卷地址低 卷个数高 卷个数低 字节数 卷数据高(卷27-20) 卷数据低(卷29-28) 校验(LRC或CRC) 响应帧 区域名 从机地址 功能码 卷地址高 卷地址低 卷个数高 卷个数低 校验(LRC或CRC) 数值(十六进制) 11 0F 00 13 00 0A - 数值(十六进制) 11 0F 00 13 00 0A 02 CD 01 -
2 Modbus 消息帧
2.1 查询帧和广播帧
主控制器可以发出查询帧和广播帧。 查询帧对应一个来自网络设备的响应帧。 广播帧通 知所有设备, 不需要响应。 每一帧均有一个地址栏、 一个功能栏、 一个数据栏和一个校验栏。 地址栏
技术文件
功能栏
数据栏
校验栏
第 2 页 共 19 页
西安东风机电有限公司
变送器通讯协议
功能16:写多个保持寄存器 查询 地址 功能 起始寄存器 寄存器个数 字节数
16
技术文件
寄存器 数据
校验
校验
地址
功能 16
起始寄存器
寄存器个数
第 7 页 共 19 页
西安东风机电有限公司
变送器通讯协议
响应 例:连续写数据00 0A和01 02到寄存器40002起始的寄存器 查询帧 区域名 从机地址 功能码 寄存器地址高 寄存器地址低 寄存器个数高 寄存器个数低 字节数 寄存器数据高 寄存器数据低 寄存器数据高 寄存器数据低 校验(LRC或CRC) 响应帧 区域名 从机地址 功能码 寄存器地址高 寄存器地址低 寄存器个数高 寄存器个数低 校验(LRC或CRC) 功能17:读设备识别码 数值(十六进制) 11 10 00 01 00 02 - 数值(十六进制) 11 10 00 01 00 02 04 00 0A 01 02 -
卷值为十六进制FF00表示高(ON),0000表示低(OFF),其它值都是无效的。 功能06:写单个保持寄存器 寄存器地址 新寄存器值 功能 查询
地址
校验
06 功能 06 寄存器地址 新寄存器值
第 5 页 共 19 页
响应
地址
校验
技术文件
西安东风机电有限公司
变送器通讯协议
例如将17号从机寄存器40002写成十六进制0003 查询帧 区域名 从机地址 功能码 寄存器地址高 寄存器地址低 新寄存器值高 新寄存器值低 校验(LRC或CRC) 响应帧 区域名 从机地址 功能码 寄存器地址高 寄存器地址低 新寄存器值高 新寄存器值低 校验(LRC或CRC) 功能07:读变送器状态 功能 查询 数值(十六进制) 11 06 00 01 00 03 - 数值(十六进制) 11 06 00 01 00 03 -
技术文件 第 6 页 共 19 页
数值(十六进制) 11 07 - 数值(十六进制) 11 07 6D -
西安东风机电有限公司
变送器通讯协议
Bit #6:变送器未配置 Bit #7:实时时钟中断失败 08 功能 :循环诊断 查询