wzy4828
风流虽能惊天下,唯有闷骚动世人
级别: 家园常客
精华主题: 0
发帖数量: 47 个
工控威望: 518 点
下载积分: 1392 分
在线时间: 40(小时)
注册时间: 2024-01-16
最后登录: 2024-12-20
查看wzy4828的 主题 / 回贴
楼主  发表于: 10天前
图片:
图片:
用RS指令将PLS数据传送到数码管显示,当数据超过32767就不能正确显示,但是查看寄存器(寄存器的值是正确的,后面的数据却不对<数码管显示的居然是这个后面的数据>),寄存器最高位置1表示是负数(怎么解决这个矛盾?)如果手动设置一个超过32767的数字就能正确显示,求教怎么解决?我另外设置两个都超过±32767的值再传送都能正确显示,就是从PLS传送过来的数据不能正确显示超过±32767的值
在监控梯形图下面PLS显示的数据也是正确的,就是传送到数码管就不行!数码管只能用8位模式,modbus协议
[ 此帖被wzy4828在2024-12-10 16:15重新编辑 ]
wzy4828
风流虽能惊天下,唯有闷骚动世人
级别: 家园常客
精华主题: 0
发帖数量: 47 个
工控威望: 518 点
下载积分: 1392 分
在线时间: 40(小时)
注册时间: 2024-01-16
最后登录: 2024-12-20
查看wzy4828的 主题 / 回贴
1楼  发表于: 5天前
找到原因了,负数寄存器用的是二进制补码,要想让数码管正确显示,需要逆向补码,先减一再取反,这样得到的二进制码就能在数码管正确显示了。(貌似这种方法最大只能满足-65535)
wzy4828
风流虽能惊天下,唯有闷骚动世人
级别: 家园常客
精华主题: 0
发帖数量: 47 个
工控威望: 518 点
下载积分: 1392 分
在线时间: 40(小时)
注册时间: 2024-01-16
最后登录: 2024-12-20
查看wzy4828的 主题 / 回贴
2楼  发表于: 5天前
已经试过了超过-65535直接32位逆向补码就可以正确传送数据了。