请教200smart里读取数据转换成工程值的问题

200smart通过通讯读取了1个2字节温度值,第一个字节最高位是符号位,第6位、第5位、第4位、第3位没有定义,第2位定义为2^6(2的六次方),第1位定义为2^5,第0位定义为2^4。第二个字节最高位是2^3,第6位是2^2、第5位是2^1、第4位是2、第3位是2的负一次方  2^(-1),第2位是2^(-2),第1位是2^(-3),第0位是2^(-4)。
如果第一个字节最高位是符号位的话,需要先求补再换算。比如说VW0里读上来的数是866FH,需要先求补,然后再换算。换算就是除以16,但这个求补是如何求?

图片说明:

请教200smart里读取数据转换成工程值的问题   

最佳答案

补码=反码+1 =2^(整数)-原码数+1
高位字节3-6位没有用,不算第7位符号位,高位字节0-2位加上低位字节,可以看做是一个11位整数。866FH, 前面的8是符号,后面的66F是数值,补码=800H(2^11)-66FH+1=192H=402,再除以16,为25.125,终值=-25.125

提问者对于答案的评价:
谢谢

最佳答案作者回复:
对不起,我上面的回答有些错误,"补码=反码+1 =2^(整数)-原码数+1 ",
应该修改为:  补码=反码+1 =2^(整数位数)-1-原码数     
所以,66Fh  的补码=800H(2^11)-1-66FH=190H=400
望包涵!
如有错漏请指正!

原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc348054.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2021年7月4日
下一篇 2021年7月4日

相关推荐

发表回复

登录后才能评论