登录
首页 串口通信 串口通信
回帖 发帖
正文

主题:关于串口通信报文回复的解释

点击:2682 回复:11

设备资料关于通讯部分的显示:
线圈地      数据                说明
10001 通道1,AL1状态值(位1 bit) 0~1,0=断开,1=吸合
… … …
10016 通道16,AL1状态值(位1 bit) 0~1,0=断开,1=吸合
10017 通道1,AL2状态值(位1 bit) 0~1,0=断开,1=吸合
… … …
10032 通道16,AL2状态值(位1 bit) 0~1,0=断开,1=吸合
10033 公共报警,AL1状态值(位1 bit) 0~1,0=断开,1=吸合
10034 公共报警,AL2状态值(位1 bit) 0~1,0=断开,1=吸合
实际情况:10033和10034的地址应该是0020和0021吧,目前通道8处于报警状态, 我读取0~9通道的显示HEX十六进制对应的是80,也就是 (省略0000)1000 0000,没错,对应的干接点公共报警输出AL1常开,而AL2是常闭。
为什么我发01 01 00 20 00 02 BC 01时显示的相应01 01 01 03 11 89 ,那么03对应的8位二进制应该是11,那岂不是对应的20和21地址都是1 ,这是否有误? 不应该是01吗?
最后修改:2018/6/7 14:54:20
18-06-07 14:46

引用 yutianhe95 在 2018/6/7 14:46:40 发言【内容省略】

10033和10034的地址应该是0020和0021吧
寄存器编号为10033和10034的实际地址是16进制的0020和0021
我读取0~9通道的显示HEX十六进制对应的是80,也就是 (省略0000)1000 0000,没错,对应的干接点公共报警输出AL1常开,而AL2是常闭。
你读取的是10个bit,那么返回数据中会有2个字节
读0-9通道(确切的说应该是读实际地址为0~9)发送的命令应该为:
01 01 00 00 00 0A ** **,这里** **为CRC校验
为什么我发01 01 00 20 00 02 BC 01时显示的相应01 01 01 03 11 89 ,那么03对应的8位二进制应该是11,那岂不是对应的20和21地址都是1 ,这是否有误? 不应该是01吗?
16进制03换算为2进制为0000 0011
即就是寄存器编号为10033和10034均为吸合状态,应该没错!
18-06-07 15:07
我刚试了下,把现有的报警给处理掉,然后相应01 01 01 00 51 88  那就是都是00 ,那先前的11应该是没错,你说得对。   那是否意味通讯时10033和10034其实都是一种类型的报警,即都是0常开类型,报警了变1.
可能是我的惯性思维题,因为设备硬线干接点输出公共报警AL1为常开和AL2为常闭,如果报警对于硬接点来说应该是AL1变常闭,AL2变常开了。
18-06-07 15:15

引用 yutianhe95 在 2018/6/7 15:15:28 发言【内容省略】

你发的不是有么:
附件 image.jpg
18-06-07 15:24
附件 微信图片_20180607152703.jpg
额,我是受了这个影响。总以为AL1和AL2状态时刻是反的
18-06-07 15:28
再给你一些Modbus文档和调试工具,我常用的!还挺好的!
附件:
[本地下载]
附件:
[本地下载]
附件:
[本地下载]
18-06-07 15:36

引用 guanyumou 在 2018/6/7 15:36:54 发言【内容省略】

啥都不说了表情表情表情表情表情,感激不尽啊!
18-06-07 15:39
版主无私奉献,精神可嘉表情表情表情
18-06-07 16:34
好资料,谢谢分享表情
18-06-07 21:20
虽然不太懂,但是还先下载下来看看
18-07-07 10:00

上一页下一页

工控新闻

更多新闻资讯