红云123
级别: 略有小成
精华主题: 0
发帖数量: 273 个
工控威望: 343 点
下载积分: 2808 分
在线时间: 130(小时)
注册时间: 2020-09-22
最后登录: 2024-11-20
查看红云123的 主题 / 回贴
楼主  发表于: 2022-09-14 14:56
F5UJ进行modbusTCP通讯时当读取的数据是正数时,设置的读取数据长度和接收的数据长度一致,数据也没有错误。

当读取到的数据是负数时,收到的数据长度在某个位置是设置的2倍,因为负数的位置不确定所以收到的数据也无从下手去处理。
也就是负数时收到的数据地址和服务器的数据地址对应不上了。
当进行modbusTCP通讯时负数怎么处理?
真诚求助
冲出枪林弹雨
冲出枪林弹雨
级别: 家园常客
精华主题: 0
发帖数量: 143 个
工控威望: 624 点
下载积分: 354 分
在线时间: 86(小时)
注册时间: 2020-09-05
最后登录: 2024-11-25
查看冲出枪林弹雨的 主题 / 回贴
1楼  发表于: 2022-09-15 08:34
通讯时都是客户端读取服务端的寄存器,数据类型不同,占用寄存器数量不同(16位,32位,64位,字符串看长度);建议将数据转成16进制进行查看,看看是不是读取的数据高低位被调换,也可以先用tcp模拟软件进行测试。
技术交流vx: Electric973
红云123
级别: 略有小成
精华主题: 0
发帖数量: 273 个
工控威望: 343 点
下载积分: 2808 分
在线时间: 130(小时)
注册时间: 2020-09-22
最后登录: 2024-11-20
查看红云123的 主题 / 回贴
2楼  发表于: 2022-09-15 09:30
图片:
图片:
用的测试工具测试的
冲出枪林弹雨
冲出枪林弹雨
级别: 家园常客
精华主题: 0
发帖数量: 143 个
工控威望: 624 点
下载积分: 354 分
在线时间: 86(小时)
注册时间: 2020-09-05
最后登录: 2024-11-25
查看冲出枪林弹雨的 主题 / 回贴
3楼  发表于: 2022-09-15 10:05
引用
引用第2楼红云123于2022-09-15 09:30发表的  :
用的测试工具测试的

读取寄存器个数改为4,PLC监视数据使用16进制查看
技术交流vx: Electric973
冲出枪林弹雨
冲出枪林弹雨
级别: 家园常客
精华主题: 0
发帖数量: 143 个
工控威望: 624 点
下载积分: 354 分
在线时间: 86(小时)
注册时间: 2020-09-05
最后登录: 2024-11-25
查看冲出枪林弹雨的 主题 / 回贴
4楼  发表于: 2022-09-15 10:16
好吧,说下这个正数和负数
值为5它在计算机中表示为:
00000000 00000000 00000000 00000101
5转换成二制是101,不过int类型的数占用4字节(32位),前面填了一堆0
-5在计算机中,负数以原码的补码形式表达。
原码:
一个正数,按照绝对值大小转换成的二进制数就是正数的原码
一个负数,按照绝对值大小转换成的二进制数,然后最高位补1,就是负数的原码
比如
00000000 00000000 00000000 00000101 是5的原码。
10000000 00000000 00000000 00000101 是-5的原码。
补码
正数的补码与原码相同
负数的补码为对该数的原码除符号位外各位取反,然后在最后一位加1
比如:
10000000 00000000 00000000 00000101 的反码
是:11111111 11111111 11111111 11111010
那么,补码为:
11111111 11111111 11111111 11111010 + 1 = 11111111 11111111 11111111 11111011
-5 在计算机中表达为:11111111 11111111 11111111 11111011
转换为十六进制:0xFFFFFFFB
楼主留言:
道理倒是明白,关键是收到数据后怎么处理。收到的数据有正数也有负数时,怎么才知道自己收到的是负数,负数在哪个寄存器里。
技术交流vx: Electric973
红云123
级别: 略有小成
精华主题: 0
发帖数量: 273 个
工控威望: 343 点
下载积分: 2808 分
在线时间: 130(小时)
注册时间: 2020-09-22
最后登录: 2024-11-20
查看红云123的 主题 / 回贴
5楼  发表于: 2022-09-15 10:30
图片:
和是否使用16进制无关。为什么读取1个保持寄存器,收到的数据却占两个寄存器。
冲出枪林弹雨
冲出枪林弹雨
级别: 家园常客
精华主题: 0
发帖数量: 143 个
工控威望: 624 点
下载积分: 354 分
在线时间: 86(小时)
注册时间: 2020-09-05
最后登录: 2024-11-25
查看冲出枪林弹雨的 主题 / 回贴
6楼  发表于: 2022-09-15 12:54
图片:
图片:
看了你图中发送内容,你用的工具多发了两个字节内容
技术交流vx: Electric973
红云123
级别: 略有小成
精华主题: 0
发帖数量: 273 个
工控威望: 343 点
下载积分: 2808 分
在线时间: 130(小时)
注册时间: 2020-09-22
最后登录: 2024-11-20
查看红云123的 主题 / 回贴
7楼  发表于: 2022-09-15 13:11
有可能是测试工具的问题
投湖自尽的鱼
级别: 略有小成
精华主题: 0
发帖数量: 313 个
工控威望: 360 点
下载积分: 1291 分
在线时间: 301(小时)
注册时间: 2020-10-23
最后登录: 2024-11-26
查看投湖自尽的鱼的 主题 / 回贴
8楼  发表于: 2022-09-16 08:41
换个调试软件直接自己写负数的报文,看看是不是还会多出来字节
投湖自尽的鱼
级别: 略有小成
精华主题: 0
发帖数量: 313 个
工控威望: 360 点
下载积分: 1291 分
在线时间: 301(小时)
注册时间: 2020-10-23
最后登录: 2024-11-26
查看投湖自尽的鱼的 主题 / 回贴
9楼  发表于: 2022-09-16 08:43
你用这个软件试试,也是这个网站里面的
楼主留言:
真诚感谢!
附件: TCP和MODBUS-TCP通讯调试软件V1.2_Wince_Winxp_通用版.zip (138 K) 下载次数:131
网站提示: 请不要用迅雷下载附件,容易出错