1 / 14
文档名称:

MODBUS协议功能码及报文解析要点.pdf

格式:pdf   大小:1,231KB   页数:14页
下载后只包含 1 个 PDF 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

MODBUS协议功能码及报文解析要点.pdf

上传人:1781111**** 2024/5/11 文件大小:1.20 MB

下载得到文件列表

MODBUS协议功能码及报文解析要点.pdf

相关文档

文档介绍

文档介绍:该【MODBUS协议功能码及报文解析要点 】是由【1781111****】上传分享,文档一共【14】页,该文档可以免费在线阅读,需要了解更多关于【MODBUS协议功能码及报文解析要点 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。:..是一种串行通信协议;是于1979年;为使用可编程逻辑控制器PLC而发表的..事实上;它已经成为工业领域通信协议;并且现在是工业电子设备之间相当常用的连接方式..Modbus比其他通信协议使用的更广泛的主要原因有:公开发表并且无版税要求相对容易的工业网络部署对供应商来说;修改移动原生的位或字节没有很多限制Modbus允许多个设备连接在同一个网络上进行通信;举个例子;一个由测量温度和湿度的装置;并且将结果发送给计算机..在数据采集与监视控制系统SCADA中;Modbus通常用来连接监控计算机和remoteterminalunitRTU..Modbus协议目前存在用于串口、以太网以及其他支持互联网协议的网络的版本..大多数Modbus设备通信通过串口物理层进行..对于串行连接;存在两个变种;它们在数值数据表示不同和协议细节上略有不同..ModbusRTU是一种紧凑的;采用二进制表示数据的方式;ModbusASCII是一种人类可读的;冗长的表示方式..munication方式..RTU格式后续的命令/数据带有的校验和;而ASCII格式采用纵向冗余校验的校验和..被配置为RTU变种的节点不会和设置为ASCII变种的节点通信;反之亦然..对于通过例如的连接;存在多个Modbus/TCP变种;这种方式不需要校验和的计算..对于所有的这三种通信协议在数据模型和功能调用上都是相同的;只有封装方式是不同的..Modbus有一个扩展版本ModbusPlusModbus+或者MB+;不过此协定是Modicon专有的;和Modbus不同..它需要一个专门的协处理器来处理类似的高速令牌旋转..它使用1Mbit/s的;并且每个节点都有转换隔离装置;是一种采用转换/边缘触发而不是电压/水平触发的:....连接ModbusPlus到计算机需要特别的接口;通常是支持ISASA85;PCI或者PCMCIA总线的板卡..Modbus协议是一个master/slave架构的协议..有一个节点是master节点;其他使用Modbus协议参与通信的节点是slave节点..每一个slave设备都有一个唯一的地址..在串行和MB+网络中;只有被指定为主节点的节点可以启动一个命令在以太网上;任何一个设备都能发送一个Modbus命令;但是通常也只有一个主节点设备启动指令..一个ModBus命令包含了打算执行的设备的Modbus地址..所有设备都会收到命令;但只有指定位置的设备会执行及回应指令地址0例外;指定地址0的指令是广播指令;所有收到指令的设备都会执行;不过不回应指令..所有的Modbus命令包含了检查码;以确定到达的命令没有被破坏..基本的ModBus命令能指令一个RTU改变它的寄存器的某个值;控制或者读取一个I/O端口;以及指挥设备回送一个或者多个其寄存器中的数据..有许多modems和网关支持Modbus协议;因为Modbus协议很简单而且容易复制..它们当中一些为这个协议特别设计的..有使用有线、无线通信甚至短消息和GPRS的不同实现..不过设计者需要克服一些包括高延迟和时序的问题..MODBUS通信过程如下图MODBUSRTU报文格式起始位设备地址功能代码数据CRC校验结束符T1-T2-T3-T48Bit8Bitn个8Bit16BitT1-T2-T3-T4MODBUSASCII报文格式设备地起始位功能代码数据LRC校验结束符址1个字符2个字符2个字符n个字符2个字符2个字符MODBUSTCP报文:..协议标识报文长度设备标识功能代码数据2字节2字节1字节2字节一般为0高字节在也就是设1个字符n个字符一般为0前备地址实际上MODBUSRTU与ASCII的内容是完全相同的;不同的的ASCII方式用“:”标识帧起始;用“CRLF”标识帧结束..校验采用LRC;把RTU帧中一个字节的内容换成了2个ASCII字符..比如在RTU方式下设备地址01只有一个字节;在ASCII方式下转换成字符串“01”16进制的3031..MODBUSTCP中的设备标识;功能码等与MODBUSRTU相同;可以认为是在MODBUSRTU报文的前边加了一个头;去掉了CRC校验这个尾..MODBUS协议定义了4种基本数据类型:可读写位数据;只读位数据;只读16位数据;可读写16位数据..这些数据分别被称为线圈状态;输入状态;输入寄存器;保持寄存器..MODBUS协议中定义的这些数据都是一个从地址1开始的数组;访问时需要指明从哪个地址开始访问;访问多少个数据..下表是MODBUS的功能码..ModBus功能码功能名称作用码01读取线圈状态取得一组逻辑线圈的当前状态ON/OFF02读取输入状态取得一组开关输入的当前状态ON/OFF在一个或多个保持寄存器中取得当前的二03读取保持寄存器进制值在一个或多个输入寄存器中取得当前的二04读取输入寄存器进制值:..强置单线圈强置一个逻辑线圈的通断状态06预置单寄存器把具体二进值装入一个保持寄存器取得8个内部线圈的通断状态;这8个线圈的地址由控制器决定;用户逻辑可以将这些07读取异常状态线圈定义;以说明从机状态;短报文适宜于迅速读取状态把诊断校验报文送从机;以对通信处理进行08回送诊断校验评鉴09编程只用于484使主机模拟编程器作用;修改PC从机逻辑可使主机与一台正在执行长程序任务从机通信;探询该从机是否已完成其操作任务;10控询只用于484仅在含有功能码9的报文发送后;本功能码才发送可使主机发出单询问;并随即判定操作是否11读取事件计数成功;尤其是该命令或其他应答产生通信错误时可是主机检索每台从机的ModBus事务处理12读取通信事件记录通信事件记录..如果某项事务处理完成;记录会给出有关错误编程13可使主机模拟编程器功能修改PC从机逻辑184/38448458414探询可使主机与正在执行任务的从机通信;定期:..控询该从机是否已完成其程序操作;仅在含有功能13的报文发送后;本功能码才得发送15强置多线圈强置一串连续逻辑线圈的通断把具体的二进制值装入一串连续的保持寄16预置多寄存器存器可使主机判断编址从机的类型及该从机运17报告从机标识行指示灯的状态18884和MICRO84可使主机模拟编程功能;修改PC状态逻辑发生非可修改错误后;是从机复位于已知状19重置通信链路态;可重置顺序字节20读取通用参数584L显示扩展存储器文件中的数据信息21写入通用参数584L把通用参数写入扩展存储文件;或修改之22~保留作扩展功能备64用65~保留以备用户功能留作用户功能的扩展编码72所用73~非法功能119120~保留留作内部作用127128~保留用于异常应答:..各个功能码对应的数据类型代功能数据类型码01读位02读位03读16位整型04读16位整型05写位06写整16位整型15写位16写整16位整型MODBUS协议相当复杂;但是常用的命令也就简单的几个;01;02;03;04;05;06;15;16号命令..各个命令的功能和报文如下:01命令读取线圈状态MODBUS地址00001~MODBUS请求功能码1BYTE0X01起始地址2BYTE0X0000TO0XFFFF读取数量2BYTE1TO20000X7D0MODBUS响应功能码1BYTE0X01:..1BYTEN线圈状态nBYTEn=NorN+1N=读取数量/8如果余数不为0则N=N+1错误响应功能码1BYTE0X01+0X80错误代码1BYTE0x1or0x2or0x3or0x4举例请求响应域名称数据hex域名称数据hex功能码01功能码01起始地址高字节00字节计数03起始地址低字节1327h~20状态CD读取数量高字节0035h~28状态6B读取数量低字节1338h~36状态0502命令读取输入状态MODBUS地址10001~MODBUS请求功能码1BYTE0X02起始地址2BYTE0X0000TO0XFFFF读取数量2BYTE1TO20000X7D0MODBUS响应功能码1BYTE0X02字节计数1BYTEN输入状态nBYTEn=NorN+1N=读取数量/8如果余数不为0则N=N+1:..功能码1BYTE0X02+0X80错误代码1BYTE0x1or0x2or0x3or0x4举例请求响应域名称数据hex域名称数据hex功能码02功能码02起始地址高字节00字节计数03起始地址低字节C4204h~197状态AC读取数量高字节00212h~205状态DB读取数量低字节16218h~213状态3503读保持寄存器MODBUS地址40001~MODBUS请求功能码1BYTE0X03起始地址2BYTE0X0000TO0XFFFF读取数量2BYTE1TO1250X7DMODBUS响应功能码1BYTE0X03字节计数1BYTEN2输入状态N2BYTE错误响应功能码1BYTE0X03+0X80错误代码1BYTE0x1or0x2or0x3or0x4举例:..响应域名称数据hex域名称数据hex功能码03功能码03起始地址高字节00字节计数06起始地址低字节6B寄存器高10802读取数量高字节00寄存器低1082B读取数量低字节03寄存器高10900寄存器低10900寄存器高11000寄存器低1106404输入寄存器MODBUS地址30001~MODBUS请求功能码1BYTE0X04起始地址2BYTE0X0000TO0XFFFF读取数量2BYTE1TO1250X7DMODBUS响应功能码1BYTE0X04字节计数1BYTEN2输入状态N2BYTE错误响应功能码1BYTE0X04+0X80错误代码1BYTE0x1or0x2or0x3or0x4举例:..响应域名称数据hex域名称数据hex功能码04功能码04起始地址高字节00字节计数02起始地址低字节08输入寄存器高900读取数量高字节00输入寄存器低90A读取数量低字节0105设置单个继电器状态MODBUS请求功能码1BYTE0X05设置地址2BYTE0X0000TO0XFFFF设置内容2BYTE0x0000OR0XFF000x0000释放继电器0xff00吸合继电器MODBUS响应功能码1BYTE0X05设置地址2BYTE0X0000TO0XFFFF设置内容2BYTE0x0000OR0XFF00错误响应功能码1BYTE0X05+0X80错误代码1BYTE0x1or0x2or0x3or0x4举例吸合6号继电器请求响应:..数据hex域名称数据hex功能码05功能码05设置地址高字节00设置地址高字节00设置地址低字节05设置地址低字节05设置内容高字节FF设置内容高字节FF设置内容低字节00设置内容低字节FF06设置单个保持寄存器MODBUS请求功能码1BYTE0X06设置地址2BYTE0X0000TO0XFFFF设置内容2BYTE0x0000to0XFF00MODBUS响应功能码1BYTE0X06设置地址2BYTE0X0000TO0XFFFF设置内容2BYTE0x0000to0XFF00错误响应功能码1BYTE0X06+0X80错误代码1BYTE0x1or0x2or0x3or0x4举例设置9号保持寄存器内容为25请求响应域名称数据hex域名称数据hex功能码06功能码06:..00设置地址高字节00设置地址低字节08设置地址低字节08设置内容高字节00设置内容高字节00设置内容低字节19设置内容低字节1915设置多个继电器状态MODBUS请求功能码1BYTE0X0F设置起始地址2BYTE0X0000TO0XFFFF设置长度2BYTE0X0000TO0X7B0字节计数1BYTEN设置内容NBYTEMODBUS响应功能码1BYTE0X0F设置起始地址2BYTE0X0000TO0XFFFF设置长度2BYTE0X0000TO0X7B0错误响应功能码1BYTE0X0F+0X80错误代码1BYTE0x1or0x2or0x3or0x4举例设置继电器请求响应域名称数据hex域名称数据hex功能码0F功能码0F:..00设置地址高字节00设置地址低字节13设置地址低字节13设置数量高字节00设置数量高字节00设置数量低字节0A设置数量低字节0A字节计数02设置内容高字节CD设置内容低字节0116设置多个保持寄存器MODBUS请求功能码1BYTE0X10设置起始地址2BYTE0X0000TO0XFFFF设置长度2BYTE0X0000TO0X7B0字节计数1BYTEN2设置内容N2BYTEMODBUS响应功能码1BYTE0X10设置起始地址2BYTE0X0000TO0XFFFF设置长度2BYTE0X0000TO0X7B0错误响应功能码1BYTE0X10+0X80错误代码1BYTE0x1or0x2or0x3or0x4举例设置多个保持寄存器:..响应域名称数据hex域名称数据hex功能码10功能码0F设置地址高字节00设置地址高字节00设置地址低字节01设置地址低字节01设置数量高字节00设置数量高字节00设置数量低字节02设置数量低字节02字节计数04设置内容高字节00设置内容低字节0A设置内容高字节01设置内容低字节02MODBUS协议在智能设备中的应用上面讲述了MODBUS协议的报文以及命令;那么在智能设备中如何使用这个协议呢如果智能设备有开关量输入输出;模拟量输入输出;有计数器等..很明显开关量输入可以映射到10001地址;第一路开关量输入为10001;第二路为10002;………开关量输出映射到00001地址;第一路为00001;第二路为00002;…….模拟量输入映射到30001地址;第一路为30001;第二路为30002;……模拟量输出和计数器输入映射到40001地址;第一路为40001;第二路为40002;……当然也可以把所有的数据都放在保持寄存器中;这样对于MODBUS主设备访问时要简单;访问效率能提高;但是处理起来略显繁琐..