有哪位大哥能给我讲讲MODBUS通讯协议,不知道应该怎么写,网上搜来的资料看了有点懵,(
答案:2 悬赏:0 手机版
解决时间 2021-03-27 07:47
- 提问者网友:呐年旧曙光
- 2021-03-26 11:07
有哪位大哥能给我讲讲MODBUS通讯协议,不知道应该怎么写,网上搜来的资料看了有点懵,(
最佳答案
- 五星知识达人网友:轻雾山林
- 2021-03-26 12:18
MODBUS 组成: 站号 功能码 寄存器起始地址 寄存器数量 CRC (共8个字节)
例: 01 01 00 01 00 04 CRCH CRCL
01: 从站站号为1
01:读线圈
00 01:从寄存器1开始读
00 04: 读4个线圈
CRCH CRCL:CRC校验字节
具体的请参考附件!
追问怎么知道自己从站站号呢,寄存器又指的是什么,我把你上面这一串数字输入CR校验软件里面得到校验码然后在输入串口调试助手软件,PlC还是没有反应,追答怎么知道自己从站站号?
看从站设备的说操作手册,一般可以设置从站设备的站号。
寄存器又指的是什么?
通俗的讲寄存器就是存放数据的容器。
我把你上面这一串数字输入CR校验软件里面得到校验码然后在输入串口调试助手软件,PlC还是没有反应?
“01 01 00 01 00 04 CRCH CRCL” 这组协议的意思是读1号站的4个线圈状态。
“PLC还是没有反应”,这种情况有可能是西门子PLC没有配置为从站,请使用MBUS_INIT配置PLC为从站,如果我没有记错西门子PLC做从站是使用的是端口0;如果你已经配置PLC为从站,那么在使用“串口调试助手软件是勿必保持串口参数与从站西门子PLC的通信参数一致。
符:“01 01 00 01 00 04 CRCH CRCL” 读从站;(线圈状态是位变量)
主站发送: 01 01 00 00 00 04 3D C9
从站回应: 01 01 01 00 51 88 //(此时线圈没有闭合)
01: 从站地址
01: 读线圈
01:有1字节数据的线圈状态
00:线圈状态
51 88:CRC校验
追问能不能发个校验软件给我,,,,,我是刚接触这块,追答附件:MODBUS 校验。
追问就是我用串口调试发了一串数据,然后设备响应了一串数据,那我要怎么判断设备响应的这一串数据是否正确追答主站发送: 01 01 00 00 00 04 3D C9
从站回应: 01 01 01 00 51 88 (正常回应,否则都为异常) //(此时线圈没有闭合)
01: 从站地址
01: 读线圈
01:有1字节数据的线圈状态
00:线圈状态
51 88:CRC校验
反复看协议规范,上面很清楚。追问这个我 后来找到了,就是还有一个问题,如何用串口调试助手通过MODBUS来驱动西门子PLC的Q0.0或者是其他的线圈,这个该怎么弄追答把西门子PLC配置为从站,然后看Q0.0的寄存器地址。追问从站是不是用这个
指令,调试助手的那一串数字是不是这样写,01 05 00 01 00 01 CRC
追答对,CRC要校验真确,否则不能通信。追问但是好像驱动不了PLC的线圈,你能帮我写个具体的程序以及调试助手发送的那一串数字吗 ,谢谢追答你好,这个问你自己能解决(并不难),首先PLC作为从站使用的是端口0(检查一下你的端口),注意串口设置和你的PLC程序的配置要一样。
MBUS的初始化参考帮助文档里面有例程。追问就是用串口调试助手驱动西门子plc线圈,为什么只能驱动Q0.1到Q0.7,Q1.0以上的就驱动不了,这是什么原因,追答你的PLC有Q1.0以上的点?
例: 01 01 00 01 00 04 CRCH CRCL
01: 从站站号为1
01:读线圈
00 01:从寄存器1开始读
00 04: 读4个线圈
CRCH CRCL:CRC校验字节
具体的请参考附件!
看从站设备的说操作手册,一般可以设置从站设备的站号。
寄存器又指的是什么?
通俗的讲寄存器就是存放数据的容器。
我把你上面这一串数字输入CR校验软件里面得到校验码然后在输入串口调试助手软件,PlC还是没有反应?
“01 01 00 01 00 04 CRCH CRCL” 这组协议的意思是读1号站的4个线圈状态。
“PLC还是没有反应”,这种情况有可能是西门子PLC没有配置为从站,请使用MBUS_INIT配置PLC为从站,如果我没有记错西门子PLC做从站是使用的是端口0;如果你已经配置PLC为从站,那么在使用“串口调试助手软件是勿必保持串口参数与从站西门子PLC的通信参数一致。
符:“01 01 00 01 00 04 CRCH CRCL” 读从站;(线圈状态是位变量)
主站发送: 01 01 00 00 00 04 3D C9
从站回应: 01 01 01 00 51 88 //(此时线圈没有闭合)
01: 从站地址
01: 读线圈
01:有1字节数据的线圈状态
00:线圈状态
51 88:CRC校验
从站回应: 01 01 01 00 51 88 (正常回应,否则都为异常) //(此时线圈没有闭合)
01: 从站地址
01: 读线圈
01:有1字节数据的线圈状态
00:线圈状态
51 88:CRC校验
反复看协议规范,上面很清楚。追问这个我 后来找到了,就是还有一个问题,如何用串口调试助手通过MODBUS来驱动西门子PLC的Q0.0或者是其他的线圈,这个该怎么弄追答把西门子PLC配置为从站,然后看Q0.0的寄存器地址。追问从站是不是用这个
指令,调试助手的那一串数字是不是这样写,01 05 00 01 00 01 CRC
追答对,CRC要校验真确,否则不能通信。追问但是好像驱动不了PLC的线圈,你能帮我写个具体的程序以及调试助手发送的那一串数字吗 ,谢谢追答你好,这个问你自己能解决(并不难),首先PLC作为从站使用的是端口0(检查一下你的端口),注意串口设置和你的PLC程序的配置要一样。
MBUS的初始化参考帮助文档里面有例程。追问就是用串口调试助手驱动西门子plc线圈,为什么只能驱动Q0.1到Q0.7,Q1.0以上的就驱动不了,这是什么原因,追答你的PLC有Q1.0以上的点?
全部回答
- 1楼网友:酒者煙囻
- 2021-03-26 13:31
百度文库 里有 很多 modbus 文档
搜来看看
搜来看看
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯