【求助】PLC地址400001,如何用网络助手发报文读取 点击:1643 | 回复:5



江南四少

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:13帖 | 74回
  • 年度积分:0
  • 历史总积分:171
  • 注册:2017年3月17日
发表于:2021-01-28 23:04:19
楼主

有个PLC,目前已使用WINCC进行正常读取,地址400001的32位浮点数值,如下图,是WINCC中已定义好了,并且WINCC能正确读取到这个值。


    我使用MODSCAN32 ,填写正确的IP地址,以及端口,ID,地址开始等信息,获取20个字节信息,也都能正确的获得该值。对比值后发现,scan32中的 40001和40002,组合起来,能换算成真确的 32位浮点数。


   但我关闭MODSCAN32后,打开网络调试助手,填写好IP,端口,使用TCP CLIENT模式连接,发送报文

   02 03 00 00 00 14 45 F6,此条报文是使用03功能吗读取00 00 开始的 20个字节(14是十六进制),返回不正确,请各位大神指导下 。谢谢 。


如上图。




楼主最近还看过



江南四少

  • 精华:0帖
  • 求助:0帖
  • 帖子:13帖 | 74回
  • 年度积分:0
  • 历史总积分:171
  • 注册:2017年3月17日
发表于:2021-01-29 19:01:05
1楼

是不是这个问题太低级了 。

幽邈隐客

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 247回
  • 年度积分:0
  • 历史总积分:268
  • 注册:2010年3月31日
发表于:2021-01-29 21:53:26
2楼

建议好好看看基础说明文档

ruanxikun

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 44回
  • 年度积分:15
  • 历史总积分:98
  • 注册:2009年2月25日
发表于:2021-02-03 10:06:29
3楼

Modbus TCP  03功能码 读取一个或多个保持寄存器的数值
读取连续三个保持寄存器的数值
(40001=1000、40002=5000、40003=650)

发送:00 00 00 00 00 06 01 03 00 00 00 03
接收:00 00 00 00 00 09 01 03 06 03 E8 13 88 02 8A

发送详解:00 00 00 00 00 06 01 03 00 00 00 03
00 00 事务标识符
00 00 协议标识符
00 06 长度标识符
01 站号
03 功能码
00 00 首个寄存器地址
00 03 读取寄存器的个数 RTU格式 (无需CRC)
Modbus TCP 与Modbus RTU 比较就是头部多了六个字节
Modbus TCP 无需CRC校验码

接收详解:00 00 00 00 00 09 01 03 06 03 E8 13 88 02 8A
00 00 事务标识符
00 00 协议标识符
00 09 长度标识符
01 站号
03 功能码
06 读取的字节数
03 E8 读取第一个寄存器的数值
13 88 读取第二个寄存器的数值
02 8A 读取第三个寄存器的数值  RTU格式 (无需CRC)
03功能码 读取(03 E8=1000、13 88=5000、02 8A=650)

Modbus TCP  06功能码 写一个寄存器的值
(40001=10)(00 0A=10=40001)
发送:00 00 00 00 00 06 01 06 00 00 00 0A
接收:00 00 00 00 00 06 01 06 00 00 00 0A

Modbus TCP  01功能码 读取一组逻辑线圈的当前状态(ON/OFF)
读5个线圈状态:(00001=1、00002=1、00003=1、00004=1、00005=1)
返回状态:(1F=0001 1111)
发送:00 00 00 00 00 06 01 01 00 00 00 05
接收:00 00 00 00 00 04 01 01 01 1F




Modbus TCP  02功能码 读取一组开关输入的当前状态(ON/OFF)
读5个输入状态
(10001=1、10002=0、10003=1、10004=0、10005=1)
(15=0001 0101)提示15为十六进制数。
发送:00 00 00 00 00 06 01 02 00 00 00 05
接收:00 00 00 00 00 04 01 02 01 15

Modbus TCP  04功能码 读取一个或多个输入寄存器的数值
读5个输入寄存器的数值
(30001=0、30002=1、30003=2、30004=3、30005=4)
发送:00 00 00 00 00 06 01 04 00 00 00 05
接收:00 00 00 00 00 0D 01 04 0A 00 00 00 01 00 02 00 03 00 04

Modbus TCP  05功能码 强置一个逻辑线圈的通断状态
发送:00 00 00 00 00 06 01 05 00 00 FF 00
接收:00 00 00 00 00 06 01 05 00 00 FF 00

Modbus TCP  16(16进制=10码)功能码 写多(3)个寄存器的值
发送详解:00 00 00 00 00 0D 01 10 00 00 00 03 06 00 0A 00 0B 00 0F
00 00 事务标识符
00 00 协议标识符
00 0D 长度标识符
   01 站号
   10 功能码
00 00 首个寄存器通讯地址
00 03 写入的寄存器个数
06 00 写入的字节数
00 0A 写入第一个寄存器的数值
00 0B 写入第二个寄存器的数值
00 0F 写入第三个寄存器的数值

接收详解:00 00 00 00 00 06 01 10 00 00 00 03
00 00 事务标识符
00 00 协议标识符
00 06 长度标识符
01 站号
10 功能码
00 00 首个寄存器通讯地址
00 03 写入的寄存器个数

Modbus TCP  15(16进制=0F码)功能码 强置一串连续逻辑线圈的通断
发送:00 00 00 00 00 0B 01 0F 00 00 00 02 04 FF 00 00 00
发送:00 00 00 00 00 06 01 0F 00 00 00 02

a641333914

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 314回
  • 年度积分:0
  • 历史总积分:273
  • 注册:2012年10月20日
发表于:2021-02-03 13:57:08
4楼

xuexidaole

江南四少

  • 精华:0帖
  • 求助:0帖
  • 帖子:13帖 | 74回
  • 年度积分:0
  • 历史总积分:171
  • 注册:2017年3月17日
发表于:2021-02-06 19:13:33
5楼

感谢各位大佬。经过几天学习,现在已经明白了。


热门招聘
相关主题

官方公众号

智造工程师