变送器MODBUS通讯协议
功能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 -
在查询帧或广播帧中,功能栏位含有一个功能码,它表示对在数据拦中映射地址的阅读 指令,书写指令或诊断的指令。在一个响应帧中,功能栏位含有功能码用来验证装置对指令 的响应。如果在功能栏位中的最高有效位元被设定,数据拦含有异常响应用来说明在处理命 令中遇到的任何错误。 变送器使用了MODBUS功能码的一部分。包括读指令、写指令和诊断指令。 � 读指令:包括功能01(读卷状态),02(读输入状态),03(读保持寄存器),04 (读输入寄存器),17(读设备识别码)。 � 写指令:包括功能05(写卷),06(写寄存器),15(写多卷),16(写多寄存器) 。 � 诊断指令:包括功能07(读异常状态),08(循环诊断)。 下表给出变送器支持的功能。 功能码 01 02 03 04 05 06 07 08 15 16 17 类型 读 读 读 读 写 写 诊断 诊断 写 写 读 描述 读卷状态 读输入状态 读保持寄存器 读输入寄存器 写卷 写寄存器 读异常状态 循环诊断 写多卷 写多寄存器 读设备识别码 功能解释 读一个或连续卷的开关状态 读一个或连续离散量的开关状态 读一个或连续保持寄存器的二进制值 读一个或连续输入寄存器的二进制值 设置单个卷的开关状态 写二进制值到保持寄存器 读输入寄存器30125的状态位 发送一条测试消息给变送器用于评估通讯过程 设置连续卷的开关状态 写二进制值到连续的保持寄存器 返回设备类型和操作状态
技术文件 第 6 页 共 19 页
数值(十六进制) 11 07 - 数值(十六进制) 11 07 6D -
西安东风机电有限公司
变送器通讯协议
Bit #6:变送器未配置Fra Baidu bibliotekBit #7:实时时钟中断失败 08 功能 :循环诊断 查询
地址
功能 08 功能 08
诊断码
数值
校验
响应 地址 功能15:写多个卷 查询
西安东风机电有限公司
变送器通讯协议
质量流量变送器
Modbus 协议
西安东风机电有限公司 二○一一年三月
技术文件
第 1 页 共 19 页
西安东风机电有限公司
变送器通讯协议
1 轮询地址和映射地址
在一个多站网络中, 变送器模拟一台可编程逻辑控制器与兼容Modbus协议的主控制器进 行通讯。 每一台变送器都拥有1到247中的一个唯一的轮询地址。 主控制器使用轮询地址开始 与网络中的一个设备进行通讯或者使用地址0对网络中的所有设备广播一条消息。 同样变送器拥有映射地址来模拟PLC卷、离散输入、输入寄存器和保持寄存器。这样的 地址在变送器的微处理机中对应特定的存储区。 变送器同样拥有映射到与输入寄存器和保持 寄存器同样的存储区的浮点数和字符串寄存器。 主控制器通过读写一个或一串存储器来进行 通讯。 变送器支持兼容Modbus协议的主控制器所使用的标准数据类型。 变送器支持以下数据类 型: � 无符号 16 位整数,0~65535。寄存器地址为 3 XXXX 或 4 XXXX。 � 单字节和 3 字节整数,用来表示设备鉴别码或序列号。寄存器地址为 3 XXXX 或 4 XXXX。 � 8 位 ASCII 字符串,每个 16 位寄存器存储两个。寄存器地址为 5 XXXX。 � 浮点数,四字节 IEEE754 格式。寄存器地址为 2 XXXX。 下表给出变送器支持的数据类型: 映射地址 0XXXX 1XXXX 2XXXX 3XXXX 4XXXX 5XXXX 可使用的功能 01,05,15 02 03,04,06,16 04 03,06,16 03,04,06,16 地址类型 卷 离散输入 浮点寄存器 输入寄存器 保持寄存器 ASCII 字符 存取方式 读写 只读 只读/读写 只读 读写 读写 描述 每个卷表示单个开关位 每个卷表示单个开关位 两个连续 16 位寄存器表示一 个浮点数 每个寄存器表示一个 16 位无 符号整数 每个寄存器表示一个 16 位无 符号整数 每个寄存器表示两个 ASCII 字符
2.5 数据栏
在查询帧和广播帧中,数据栏包含需要从机去执行的信息。在响应帧中,数据栏包含从 机执行的结果或者异常响应。数据拦可以包含数值、位址基准、限度或异常响应。 如果从机在响应主机命令时出现错误, 那么响应帧的功能栏的最高位将被置高,数据栏 包含为什么从机不能执行命令的代码。 异常响应代码如下: 异常响应 01 02 03 06
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
3.1 ASCII 模式消息帧
在 ASCII 模式,每个消息帧都包括一个起始符、一个地址栏、一个功能栏、一个数据 栏、一个校验栏和一个结束符。 冒号符(: )作为起始符,回车符(CR)和换行符(LF)是结束符。 ASCII 模式允许在两个字符之间有最长 1 秒的时间间隔。 下图举例说明一个 ASCII 模式消息帧:
西安东风机电有限公司
变送器通讯协议
区域名 从机地址 功能码 字节数 数据高(寄存器40108) 数据低(寄存器40108) 数据高(寄存器40109) 数据低(寄存器40109) 数据高(寄存器40110) 数据低(寄存器40110) 校验(LRC或CRC) 功能05:写单个卷 查询
数值(十六进制) 11 03 06 02 2B 00 00 00 64 -
2.2 广播帧和地址 0
任何一个使用从机地址0的查询帧就是广播帧。在广播帧中只有MODBUS功能5, 6, 8, 15,和16才是有效的。
2.3 地址栏
在查询帧中地址栏为变送器的轮询地址。在响应帧中地址栏为响应设备的轮询地址。 在 广播帧中地址栏为一个0,它告诉网络上的设备不需要回答。
2.4 功能栏
2 Modbus 消息帧
2.1 查询帧和广播帧
主控制器可以发出查询帧和广播帧。 查询帧对应一个来自网络设备的响应帧。 广播帧通 知所有设备, 不需要响应。 每一帧均有一个地址栏、 一个功能栏、 一个数据栏和一个校验栏。 地址栏
技术文件
功能栏
数据栏
校验栏
第 2 页 共 19 页
西安东风机电有限公司
变送器通讯协议
地址
功能 05 功能 05
卷地址
新卷值
校验
响应
地址
卷地址
新卷值
校验
例如将17号从机卷173置高(ON) 查询帧 区域名 从机地址 功能码 卷地址高 卷地址低 新卷值高 新卷值低 校验(LRC或CRC) 响应帧 区域名 从机地址 功能码 卷地址高 卷地址低 新卷值高 新卷值低 校验(LRC或CRC) 数值(十六进制) 11 05 00 AC FF 00 - 数值(十六进制) 11 05 00 AC FF 00 -
功能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 -
技术文件
描述 无效功能 无效地址 无效数据 忙
响应解释 变送器不允许执行收到的功能 数据栏中的地址是不允许的 数据栏中的数据是不允许的 收到的消息没错,但从机正在执行一个长的程序命令
第 8 页 共 19 页
西安东风机电有限公司
变送器通讯协议
2.6 校验栏
校验栏用于检查主机与网络设备之间传送的信息是否有错。
诊断码
数值
校验
地址 功能 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 -
地址
校验 变送器状态 校验
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 -