MODBUS手册-中文版_VER_D.doc

上传人:good****022 文档编号:116537919 上传时间:2022-07-05 格式:DOC 页数:23 大小:223.50KB
返回 下载 相关 举报
MODBUS手册-中文版_VER_D.doc_第1页
第1页 / 共23页
MODBUS手册-中文版_VER_D.doc_第2页
第2页 / 共23页
MODBUS手册-中文版_VER_D.doc_第3页
第3页 / 共23页
点击查看更多>>
资源描述
MODBUS 协议 用户手册 Ver: D 2010-10-20 目录 1 数据传输模式数据传输模式4 2 寄存器和数据类型寄存器和数据类型5 2.1 COIL5 2.2 FLOAT5 2.3 INT.5 2.4 LONG5 3 数据帧格式定义数据帧格式定义6 3.1 CMD=0X03(读 1 个或多个寄存器).6 3.2 CMD=0X05(写 COIL 变量) .7 3.3 CMD=0X06(写单个寄存器).8 3.3 CMD=0X10(写多个寄存器).9 3.4 故障返回帧 10 4 数据帧校验算法数据帧校验算法11 4.1 LRC 校验 11 4.2 CRC16 校验12 5 仪表变量地址定义仪表变量地址定义14 6 附录附录 1:常数表:故障码:常数表:故障码.17 7 附录附录 2:常数表:流量单位:常数表:流量单位.18 8 附录附录 3:报警定义:报警定义.23 版本声明: Ver: D 支持寄存器连读功能 仪表的仪表的 modbus 通讯协议设置项处有通讯协议设置项处有 V10 版本标志版本标志 的均支持此功能的均支持此功能 2010/10/20 1 数据传输模式数据传输模式 MODBUS 采用 RTU 和 ASCII 两种方式进行数据传输。RTU 模式下,采用 8bit 二进制字符,ASCII 模式下采用 7bit ASC 字符。将 RTU 模式下的一个 字节的高 4 位和低 4 位分开,变成 2 个字节,这样就是 ASCII 模式下传输 的字节。比如 RTU 模式下的数据 0 x1A,那么 ASCII 模式下就是 0 x31 0 x41 两个字节,所以 ASCII 模式下的帧长度为 RTU 模式下的 1 倍。 RTU 传输模式的数据帧采用 CRC 校验,ASCII 模式采用 LRC 校验。 下表总结了两种传输模式的区别: 传输模式传输模式ASCII (7 bit)RTU (8 bit) 编码格式ASCII 码 (0-9 A-F)8bit 二进制 (0 x00 0 xff) 起始位 数据位 校验位 停止位 1 7、8 无、奇、偶 1、2 1 8 无、奇、偶 1、2 帧校验LRCCRC16 2 寄存器和数据类型寄存器和数据类型 下表列举了几种寄存器和数据类型 寄存器类型寄存器类型数据长度数据长度寄存器数量寄存器数量描述描述 COIL1 bit-布尔变量(ON OFF) FLOAT32 bit232 位浮点数(IEEE754 格式) INT16 bit1无符号整型(0 x0 0 xFFFF) LONG32 bit2无符号长整型(0 x0 0 xFFFFFFFF) 2.1 COIL 布尔变量 0 xFF00 - ON0 x0000 - OFF 2.2 FLOAT 使用 2 个寄存器存储单精度 IEEE754 格式的浮点数。 每个浮点数包含 4 个字节,具体定义如下: SEEEEEEE EMMMMMMM MMMMMMMM MMMMMMMM S:符号位 0-正 1-负 E:阶码 M:尾数的小数部分 例如:0 xC1480000 = -12.5 2.3 INT 使用 1 个寄存器存储无符号整型数。 例如:0 x0025 = 370 x1234 = 4660 2.4 LONG 使用 2 个寄存器存储无符号长整型数。 例如:0 x12345678 = 305419896 3 数据帧格式定义数据帧格式定义 3.1 CMD=0 x03(读读 1 个或多个寄存器个或多个寄存器) 本例数据为读取瞬时流量的数据帧,仪表地址=1。 注:瞬时流量的寄存器起始地址注:瞬时流量的寄存器起始地址=0 x0253,但数据帧中的寄存器起始地址必,但数据帧中的寄存器起始地址必 须是须是 0 x0253-0 x0001 = 0 x0252 请求帧:上位机-仪表 数据场名称数据场名称RTU 示例数据示例数据(HEX)ASC 示例数据示例数据(HEX) 包头NONE3A 仪表地址0130 31 功能码0330 33 寄存器起始地址高字节0230 32 寄存器起始地址低字节5235 32 寄存器数量高字节0030 30 寄存器数量低字节0230 32 帧校验64 6241 36 包尾NONE0D 0A 应答帧:仪表-上位机 数据场名称数据场名称RTU 示例数据示例数据(HEX)ASC 示例数据示例数据(HEX) 包头NONE3A 仪表地址0130 31 功能码0330 33 数据长度0430 34 寄存器 0 x0253 的数据高字节C143 31 寄存器 0 x0253 的数据低字节4834 38 寄存器 0 x0254 的数据高字节0030 30 寄存器 0 x0254 的数据低字节0030 30 帧校验47 D945 46 包尾NONE0D 0A 本应答帧返回的 IEEE754 格式的瞬时流量数据 C1 48 00 00 = -12.5 3.2 CMD=0 x05(写写 COIL 变量变量) 本例数据为清除累计流量的数据帧,仪表地址=1。 注:清累计流量的寄存器起始地址注:清累计流量的寄存器起始地址=0 x0003,但数据帧中的寄存器起始地址,但数据帧中的寄存器起始地址 必须是必须是 0 x0003-0 x0001 = 0 x0002 请求帧:上位机-仪表 数据场名称数据场名称RTU 示例数据示例数据(HEX)ASC 示例数据示例数据(HEX) 包头NONE3A 仪表地址0130 31 功能码0530 35 寄存器起始地址高字节0030 30 寄存器起始地址低字节0230 32 COIL 变量高字节FF46 46 COIL 变量低字节0030 30 帧校验2D FA46 39 包尾NONE0D 0A 应答帧:仪表-上位机 数据场名称数据场名称RTU 示例数据示例数据(HEX)ASC 示例数据示例数据(HEX) 包头NONE3A 仪表地址0130 31 功能码0530 35 寄存器起始地址高字节0030 30 寄存器起始地址低字节0230 32 COIL 变量高字节FF46 46 COIL 变量低字节0030 30 帧校验2D FA46 39 包尾NONE0D 0A 3.3 CMD=0 x06(写单个寄存器写单个寄存器) 本例数据为写流量单位=m3/h 的数据帧,仪表地址=1。 注:流量单位的寄存器起始地址注:流量单位的寄存器起始地址=0 x0042,但数据帧中的寄存器起始地址必,但数据帧中的寄存器起始地址必 须是须是 0 x0042-0 x0001 = 0 x0041 请求帧:上位机-仪表 数据场名称数据场名称RTU 示例数据示例数据(HEX)ASC 示例数据示例数据(HEX) 包头NONE3A 仪表地址0130 31 功能码0630 36 寄存器起始地址高字节0030 30 寄存器起始地址低字节4134 31 变量高字节0030 30 变量低字节1331 33 帧校验98 1341 35 包尾NONE0D 0A 应答帧:仪表-上位机 数据场名称数据场名称RTU 示例数据示例数据(HEX)ASC 示例数据示例数据(HEX) 包头NONE3A 仪表地址0130 31 功能码0630 36 寄存器起始地址高字节0030 30 寄存器起始地址低字节4134 31 变量高字节0030 30 变量低字节1331 33 帧校验98 1341 35 包尾NONE0D 0A 3.3 CMD=0 x10(写多个寄存器写多个寄存器) 本例数据为写阻尼时间=3s 的数据帧,仪表地址=1。 注:阻尼时间的寄存器起始地址注:阻尼时间的寄存器起始地址=0 x0189,但数据帧中的寄存器起始地址必,但数据帧中的寄存器起始地址必 须是须是 0 x0189-0 x0001 = 0 x0188 请求帧:上位机-仪表 数据场名称数据场名称RTU 示例数据示例数据(HEX)ASC 示例数据示例数据(HEX) 包头NONE3A 仪表地址0130 31 功能码1031 30 寄存器起始地址高字节0130 31 寄存器起始地址低字节8838 38 寄存器数量高字节0030 30 寄存器数量低字节0230 32 数据长度0430 34 写入寄存器 0 x0189 的高字节4034 30 写入寄存器 0 x0189 的低字节4034 30 写入寄存器 0 x018A 的高字节0030 30 写入寄存器 0 x018A 的低字节0030 30 帧校验E3 ED45 38 包尾NONE0D 0A 本例中的 4 个数据字节为 IEEE754 格式的浮点数 40 40 00 00 = 3.0 应答帧:仪表-上位机 数据场名称数据场名称RTU 示例数据示例数据(HEX)ASC 示例数据示例数据(HEX) 包头NONE3A 仪表地址0130 31 功能码1031 30 寄存器起始地址高字节0130 31 寄存器起始地址低字节8838 38 寄存器数量高字节0030 30 寄存器数量低字节0230 32 帧校验C0 1E36 43 包尾NONE0D 0A 3.4 故障返回帧故障返回帧 对于不能正确完成操作的请求帧,仪表将返回一个报告故障代码的返回帧, 以报告不能完成操作的具体原因。 比如将流量单位设置成 Hz,由于仪表不能支持 Hz 这个流量单位,所以将 返回如下的故障应答帧。 故障应答帧:仪表-上位机 数据场名称数据场名称RTU 示例数据示例数据(HEX)ASC 示例数据示例数据(HEX) 包头NONE3A 仪表地址0130 31 功能码8638 36 故障码4334 33 帧校验03 9139 31 包尾NONE0D 0A 注:注:1故障返回帧中的功能码故障返回帧中的功能码=请求帧的功能码请求帧的功能码+0 x80 2具体的故障代码请参考具体的故障代码请参考 附录附录 1:常数表:故障码:常数表:故障码 4 数据帧校验算法数据帧校验算法 4.1 LRC 校验校验 / LRC 校验范围:从校验范围:从“仪表地址仪表地址”到到 LRC 帧校验码的前一个字节帧校验码的前一个字节 void LRC(unsigned char *buf, unsigned int len) unsigned int i; LRC = 0; for (i=0; i +99.9mV) COIL:Bit 3励磁报警 EMPTY:Bit 2空管报警 Unused:Bit 1Unused MEM:Bit 0EEPROM 未安装
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 机械制造 > 模具设计


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!