欢迎来到天天文库
浏览记录
ID:11480343
大小:76.41 KB
页数:7页
时间:2018-07-12
《【转】开放型modbus-tcp规范(三)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、【转】开放型MODBUS-TCP规范(三)简介:1MBAP报文头(MBAP:ModbusApplicationProtocol,Modbus应用协议)分四个域,共7个字节,见表1。表1域长度描述客户端服务器端传输标志2字节...关键字:Modbus通信协议TCP1 MBAP报文头(MBAP:ModbusApplicationProtocol,Modbus应用协议) 分四个域,共7个字节,见表1。表1域 长度 描述客户端 服务器端 传输标志 2字节标志某个Modbus 询问/应答的传输由客户端生成 应答时复制该值 协议标志 2字节 0=M
2、odbus协议1=UNI-TE协议由客户端生成 应答时复制该值 长度2字节 后续字节计数 由客户端生成应答时由服务器 端重新生成 单元标志 1字节定义连接于目的节点的其它设备 由客户端生成 应答时复制该值 2 Modbus功能代码 共有三种类型分别为: · 公共功能代码 已定义好的功能码,保证其唯一性,由Modbus.org认可。 · 用户自定义功能代码 有两组,分别为65~72和100~110,不需要认可,但不保证代码使用的唯一性,如想变为公共代码,需要RFC认可。 ·
3、 保留的功能代码 由某些公司使用在某些传统设备的代码,不可作为公共用途。 常用公共功能代码见表2。表2 常用公共功能代码 常用公共功能代码 功能码 十进码 子码 十六进制位操作 开关量输入 读输入点 02 02 内部位或开关量输出 读线圈 01 01 写单个线圈 05 05 写多个线圈 15 0F16位操作 模拟量输入 读输入寄存器 04 04 内部寄存器或输出寄存器(模拟量输出) 读多个寄存器 03 03 写单个寄存器 06 06 写多个寄存器 16 10 读/写多个寄存器 23 17 屏蔽写寄存器 22 16
4、文件记录 读文件记录 20 6 14 封装接口 写文件记录 21 6 15 读设备标识 43 14 2B 功能代码划按应用深浅分,可分为三个类别: (1) 类别0,对于客户机/服务器最小的可用子集。 · 读多个保持寄存器(fc.3); · 写多个保持寄存器(fc.16)。 (2) 类别1,可实现基本互易操作的常用代码。 · 读线圈(fc.1); · 读开关量输入(fc.2); · 读输入寄存器(fc.4); · 写线圈(fc.5); · 写单一寄存器(fc.6)。 (3) 类别2,用于人机界面、监控系统
5、的例行操作和数据传送功能。 · 强制多个线圈(fc.15); · 读通用寄存器(fc.20); · 写通用寄存器(fc.21); · 屏蔽写寄存器(fc.22); · 读写寄存器(fc.23)。3 Modbus应用举例:读寄存器 请求 功能码 1字节 0x03 起始地址 2字节 0x0000到0xFFFF 寄存器数 2字节 1到125(0x7D) 应答 功
6、能码 1字节 0x03 字节数 1字节 2xN 寄存器的值 Nx2字节 (N为寄存器的数量) 出错 出错码 1字节 0x83 例外码 1字节 01或02或03或044 ModbusTCP请求报文举例,见表3。
7、表3 描述 大小(字节)示例 备注 MBAP传输标志Hi1 0x15传输标志用于和应答配合使用传输标志Lo10x01每对传输使用唯一的标志协议标志20x0000该域可用作寻址Modbus/Modbus+子网络的路由,这时,此值含有目的设备的地址长度20x0006单元标志20xFFModbus请求功能代码10x03读寄存器起始地址20x0005 寄存器数20x00015 ModbusTCP客户端的实现 用Connect()命令建立对目标设备TCP502端口的连接。 数据通讯的过程如下: (1) 准备Modbus报文,包括7个字节的M
8、BAP在内的请求; (2) 使用Send()命令发送; (3) 在同一连接等待应答; (4) 用recv()读报文,完成一次
此文档下载收益归作者所有