lander
级别: 探索解密
精华主题: 0
发帖数量: 110 个
工控威望: 147 点
下载积分: 760 分
在线时间: 38(小时)
注册时间: 2021-02-20
最后登录: 2023-08-18
查看lander的 主题 / 回贴
楼主  发表于: 2023-03-11 08:43
我请教一个问题,我这边需要把INT (有符号的整数 -32768----32767)转换成WORD(0-65535),编一个子程序也可以,如何操作?
圆又圆
级别: 探索解密
精华主题: 0
发帖数量: 23 个
工控威望: 102 点
下载积分: 1220 分
在线时间: 25(小时)
注册时间: 2022-05-06
最后登录: 2023-10-25
查看圆又圆的 主题 / 回贴
1楼  发表于: 2023-03-11 09:01
可以试试转成ascii,再转成十六进制
圆又圆
级别: 探索解密
精华主题: 0
发帖数量: 23 个
工控威望: 102 点
下载积分: 1220 分
在线时间: 25(小时)
注册时间: 2022-05-06
最后登录: 2023-10-25
查看圆又圆的 主题 / 回贴
2楼  发表于: 2023-03-11 11:12
引用
引用第3楼lander于2023-03-11 10:47发表的  :
我其实是在做一个modbus RTU 通讯,写入只能是一个16位的数,我输入是实数,然后我转换成整数,当我输入超过32767是,它就变负了,(-32768---+32767),然后这个负数写进去,设备就不认识了,所以我想问问如何才能写进去变成0-65535,而不是-32768-+32767  ,普通的整数VW  好像不能大于32767,大了就变负数。


看看200smart的转换指令就可以了。可以直接将你的实数转成ascii,再转成十六进制