200smart通过通讯读取了1个四字节位移量,第一、二个字节为整数部分,第三、四个字节为小数部分。我把这个位移变量放到VD0里,我读上来的数是12E62E00,按照通讯格式,我要把整数部分VW0=12E6H=4838;VW2/65535=2E00H/65535=11776/65535=0.18。那么读取值转换成工程值是:12E6.2E00=4838+0.18=4838.180 (mm)
现在读上来的是16进制数,我可以直接把位移量MD0=VW2/65535+VW0吗?这样在计算过程中16进制数2E00H是否会自动转换成10进制数11776?数据格式会不会冲突
最佳答案
1,首先 MD0=VW2/65535+VW0 这种方法不对的 。
你要做的是:
VW2转换双整数 而后转换成实数 (暂定存在 MD100)
VW2转换双整数 而后转换成实数 (暂定存在 MD104)
VD108是要存的工程量值
VD108=MD104+MD100/65535.0
这是改造后的程序,但也不正确 。这只是当工程量是正数的情况,即VW0是正数,
当VW0是负数时是什么情况,这也要考虑。结合字符串指令来解决比较合适。
2, 10进制,16进制 ,2进制 在数据存储上是相同的,不存在数制转换的问题 。
10进制,16进制 ,2进制这是针对书写,显示来讲的。
提问者对于答案的评价:
谢谢
原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc347930.html