MODBUS协议(功能码及报文解析)<br/>MODBUS协议<br/>Modbus是一种串行通信协议,是Modicon于1979年,为使用可编程逻辑控制器(PLC)而发表的。事实上,它已经成为工业领域通信协议标准,并且现在是工业电子设备之间相,尤其是该命令或其他应答产生通信错误时<br/>12<br/>读取通信事件记录<br/>可是主机检索每台从机的ModBus事务处理通信事件记录。如果某项事务处理完成,记录会给出有关错误<br/>13<br/>编程(184/384 484 584)<br/>可使主机模拟编程器功能修改PC从机逻辑<br/>14<br/>探询(184/384 484 584)<br/>可使主机与正在执行任务的从机通信,定期控询该从机是否已完成其程序操作,仅在含有功能13的报文发送后,本功能码才得发送<br/>15<br/>强置多线圈<br/>强置一串连续逻辑线圈的通断<br/>16<br/>预置多寄存器<br/>把具体的二进制值装入一串连续的保持寄存器<br/>17<br/>报告从机标识<br/>可使主机判断编址从机的类型及该从机运行指示灯的状态<br/>18<br/>(884和MICRO 84)<br/>可使主机模拟编程功能,修改PC状态逻辑<br/>19<br/>重置通信链路<br/>发生非可修改错误后,是从机复位于已知状态,可重置顺序字节<br/>20<br/>读取通用参数(584L)<br/>显示扩展存储器文件中的数据信息<br/>21<br/>写入通用参数(584L)<br/>把通用参数写入扩展存储文件,或修改之<br/>22~64<br/>保留作扩展功能备用<br/> <br/>65~72<br/>保留以备用户功能所用<br/>留作用户功能的扩展编码<br/>73~119<br/>非法功能<br/> <br/>120~127<br/>保留<br/>留作内部作用<br/>128~255<br/>保留<br/>用于异常应答<br/>各个功能码对应的数据类型<br/>代码<br/>功能<br/>数据类型<br/>01<br/>读<br/>位<br/>02<br/>读<br/>位<br/>03<br/>读<br/>16位整型<br/>04<br/>读<br/>16位整型<br/>05<br/>写<br/>位<br/>06<br/>写<br/>整16位整型<br/>15<br/>写<br/>位<br/>16<br/>写<br/>整16位整型<br/>MODBUS协议相当复杂,但是常用的命令也就简单的几个,01,02,03,04,05,06,15,16号命令。<br/>各个命令的功能和报文如下:<br/>01 命令 读取线圈状态 MODBUS地址 00001~<br/>MODBUS 请求<br/>功能码<br/>1 BYTE<br/>0X01<br/>起始地址<br/>2 BYTE<br/>0X0000 TO 0XFFFF<br/>读取数量<br/>2 BYTE<br/>1 TO 2000(0X7D0)<br/>MODBUS 响应<br/>功能码<br/>1 BYTE<br/>0X01<br/>字节计数<br/>1 BYTE<br/>N<br/>线圈状态<br/>n BYTE<br/>n =N or N+1<br/>N =读取数量/8 如果余数不为0 则N=N+1<br/>错误 响应<br/>功能码<br/>1 BYTE<br/>0X01+ 0X80<br/>错误代码<br/>1 BYTE<br/>0x1 or 0x2 or 0x3 or 0x4<br/>举例<br/>请求<br/>响应<br/>域名称<br/>数据(hex)<br/>域名称<br/>数据(hex)<br/>功能码<br/>01<br/>功能码<br/>01<br/>起始地址高(字节)<br/>00<br/>字节计数<br/>03<br/>起始地址低(字节)<br/>13<br/>27(h)~20状态<br/>CD<br/>读取数量高(字节)<br/>00<br/>35(h)~28状态<br/>6B<br/>读取数量低(字节)<br/>13<br/>38(h)~36状态<br/>05<br/>02 命令 读取输入状态 MODBUS地址 10001~<br/>MODBUS 请求<br/>功能码<br/>1 BYTE<br/>0X02<br/>起始地址<br/>2 BYTE<br/>0X0000 TO 0XFFFF<br/>读取数量<br/>2 BYTE<br/>1 TO 2000(0X7D0)<br/>MODBUS 响应<br/>功能码<br/>1 BYTE<br/>0X02<br/>字节计数<br/>1 BYTE<br/>N<br/>输入状态<br/>n BYTE<br/>n =N or N+1<br/>N =读取数量/8 如果余数不为0 则N=N+1<br/>错误 响应<br/>功能码<br/>1 BYTE<br/>0X02+ 0X80<br/>错误代码<br/>1 BYTE<br/>0x1 or 0x2 or 0x3 or 0x4<br/>举例<br/>请求<br/>响应<br/>域名称<br/>数据(hex)<br/>域名称<br/>数据(hex)<br/>功能码<br/>02<br/>功能码<br/>02<br/>起始地址高(字节)<br/>00<br/>字节计数<br/>03<br/>起始地址低(字节)<br/>C4<br/>204(h)~197状态<br/>AC<br/>读取数量高(字节)<br/>00<br/>212(h)~205状态<br/>DB<br/>读取数量低(字节)<br/>16<br/>218(h)~213状态<br/>35<br/>03 读保持寄存器 MODBUS地址 40001~<br/>MODBUS 请求<br/>功能码<br/>1 BYTE<br/>0X03<br/>起始地址<br/>2 BYTE<br/>0X0000 TO 0XFFFF<br/>读取数量<br/>2 BYT
讯享网

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/194514.html