85022122
级别: 正式会员
精华主题: 0
发帖数量: 42 个
工控威望: 81 点
下载积分: 856 分
在线时间: 6(小时)
注册时间: 2025-04-07
最后登录: 2025-08-15
查看85022122的 主题 / 回贴
楼主  发表于: 昨天
传送的是-3000,到这里就变成了62536了,不知道什么原因
85022122
级别: 正式会员
精华主题: 0
发帖数量: 42 个
工控威望: 81 点
下载积分: 856 分
在线时间: 6(小时)
注册时间: 2025-04-07
最后登录: 2025-08-15
查看85022122的 主题 / 回贴
1楼  发表于: 昨天
图片:
再传一次图片
冠军欧洲
级别: 略有小成
精华主题: 0
发帖数量: 224 个
工控威望: 317 点
下载积分: 2701 分
在线时间: 730(小时)
注册时间: 2018-10-19
最后登录: 2025-08-15
查看冠军欧洲的 主题 / 回贴
2楼  发表于: 昨天
传送的时候要用DMOV,定位指令也用双字DDRVA
eq8zw5xb
级别: 探索解密
精华主题: 0
发帖数量: 72 个
工控威望: 142 点
下载积分: 676 分
在线时间: 8(小时)
注册时间: 2025-07-02
最后登录: 2025-08-15
查看eq8zw5xb的 主题 / 回贴
3楼  发表于: 昨天
如果你把这个补码  当作 无符号整数(unsigned short) 来看,它的值就是:

这就解释了为什么你传送的是 -3000,但接收到的是 62536 ——因为在接收端,它被当作了 无符号整数 来解释。
1105250205
级别: 家园常客
精华主题: 0
发帖数量: 66 个
工控威望: 632 点
下载积分: 647 分
在线时间: 108(小时)
注册时间: 2021-07-21
最后登录: 2025-08-15
查看1105250205的 主题 / 回贴
4楼  发表于: 昨天
mov是单字,但d=是双字。符号位不对,自然显示的数据也就不对
dalao123
级别: 论坛先锋
精华主题: 0
发帖数量: 872 个
工控威望: 1029 点
下载积分: 10558 分
在线时间: 555(小时)
注册时间: 2011-05-29
最后登录: 2025-08-15
查看dalao123的 主题 / 回贴
5楼  发表于: 昨天
引用
引用楼主85022122于2025-08-15 16:23发表的 诸公请教下,给D传了个负数,到这里数值变了怎么回事呢 :
传送的是-3000,到这里就变成了62536了,不知道什么原因

用dmov 就不会出问题,不要用mov,,因为你没有理解mov数据地址的范围。
plc
wzy4828
风流虽能惊天下,唯有闷骚动世人
级别: 家园常客
精华主题: 0
发帖数量: 67 个
工控威望: 544 点
下载积分: 2710 分
在线时间: 59(小时)
注册时间: 2024-01-16
最后登录: 2025-08-15
查看wzy4828的 主题 / 回贴
6楼  发表于: 昨天
这是PLC寄存器的一种机制,16位寄存器运算结果为负数时,寄存器监视看到的是补码后的二进制(-3000补码后的二进制转换成十进制就是62536)。运算过程为:把3000的二进制000101110111000取反→1111010001000111再+1→1111010001001000→转换成十进制→62536
wzy4828
风流虽能惊天下,唯有闷骚动世人
级别: 家园常客
精华主题: 0
发帖数量: 67 个
工控威望: 544 点
下载积分: 2710 分
在线时间: 59(小时)
注册时间: 2024-01-16
最后登录: 2025-08-15
查看wzy4828的 主题 / 回贴
7楼  发表于: 昨天
必须要理解和掌握这种机制,PLC在和8进制仪器通讯的时候,要进行频繁的转换。