wzy4828
风流虽能惊天下,唯有闷骚动世人
级别: 家园常客
精华主题: 0
发帖数量: 47 个
工控威望: 518 点
下载积分: 1382 分
在线时间: 40(小时)
注册时间: 2024-01-16
最后登录: 2024-12-19
查看wzy4828的 主题 / 回贴
楼主  发表于: 10天前
图片:
图片:
用RS指令将PLS数据传送到数码管显示,当数据超过32767就不能正确显示,但是查看寄存器(寄存器的值是正确的,后面的数据却不对<数码管显示的居然是这个后面的数据>),寄存器最高位置1表示是负数(怎么解决这个矛盾?)如果手动设置一个超过32767的数字就能正确显示,求教怎么解决?我另外设置两个都超过±32767的值再传送都能正确显示,就是从PLS传送过来的数据不能正确显示超过±32767的值
在监控梯形图下面PLS显示的数据也是正确的,就是传送到数码管就不行!数码管只能用8位模式,modbus协议
[ 此帖被wzy4828在2024-12-10 16:15重新编辑 ]
梦雨天涯
微信hui530527   &
级别: 网络英雄
精华主题: 0
发帖数量: 4306 个
工控威望: 7682 点
下载积分: 15305 分
在线时间: 2949(小时)
注册时间: 2016-10-31
最后登录: 2024-12-19
查看梦雨天涯的 主题 / 回贴
1楼  发表于: 10天前
你显示的时候,切换到32位显示就行,16位显示肯定不对啦
楼主留言:
在软元件监控里切换成32位,寄存器后面的值显示是36000,但是数码管还是29536
微信hui530527      b站账号,非标自动化谭工
请不要随意加我,不会随便通过。QQ群942493953
星球崛起
级别: 论坛先锋
精华主题: 0
发帖数量: 104 个
工控威望: 1476 点
下载积分: 324 分
在线时间: 175(小时)
注册时间: 2020-05-26
最后登录: 2024-12-19
查看星球崛起的 主题 / 回贴
2楼  发表于: 10天前
可以看看数码管通讯协议,是不是无符号16位的
努力学习
零度浪子001
级别: 正式会员
精华主题: 0
发帖数量: 33 个
工控威望: 90 点
下载积分: 885 分
在线时间: 12(小时)
注册时间: 2024-03-08
最后登录: 2024-12-16
查看零度浪子001的 主题 / 回贴
3楼  发表于: 9天前
用modbus发送D19,D20研究下,是16位发送,还是8位发送,三菱FX3u可以设置8位模式。那你发过去的D19,D20是什么样的,要和数码管通讯协议对比下
楼主留言:
是8位的,已经设置8位模式了,如果写入一个任意数传送就没问题,直接从PLS读取超过32767就会出错
wzy4828
风流虽能惊天下,唯有闷骚动世人
级别: 家园常客
精华主题: 0
发帖数量: 47 个
工控威望: 518 点
下载积分: 1382 分
在线时间: 40(小时)
注册时间: 2024-01-16
最后登录: 2024-12-19
查看wzy4828的 主题 / 回贴
4楼  发表于: 5天前
找到原因了,负数寄存器用的是二进制补码,要想让数码管正确显示,需要逆向补码,先减一再取反,这样得到的二进制码就能在数码管正确显示了。(貌似这种方法最大只能满足-65535)
wzy4828
风流虽能惊天下,唯有闷骚动世人
级别: 家园常客
精华主题: 0
发帖数量: 47 个
工控威望: 518 点
下载积分: 1382 分
在线时间: 40(小时)
注册时间: 2024-01-16
最后登录: 2024-12-19
查看wzy4828的 主题 / 回贴
5楼  发表于: 5天前
已经试过了超过-65535直接32位逆向补码就可以正确传送数据了。