|
其实西门子plc中的ROUND指令就是用来取整的将浮点数转换为整数的,西门子300和200PLC中都有这个指令,所以我都测试了一下!
先看一下西门子300PLC执行的结果:
这个图片是我在step7项目中建立的一个300CPU项目的简单程序,可以看到我把16#450F9000这串数据认为是双正式,通过DI_R指令转换的结果存储到MD10中得到的实数值是1.15865e+009,这是一个双整数转实数的指令,但是如题目所说开始的16#450F9000它本身就是浮点数格式,因此这里看做双整数是不对的!
而我又用round指令,将16#450F9000这个数据转换为整数,可以看到MD20的结果就是2297,这个结果才是对的。这里就是已经认定16#450F9000这串数据代表的是32位实数,因此结果正确!
再看一下西门子200PLC中的执行结果:
这个图片是我在西门子200的非官方模拟器中做的测试程序,可以看到和西门子300PLC的程序是很相似的,指令都是一样的DI_R双整数转实数,和ROUND取整指令!
也可以看到他们执行的结果都是一样的,最重要的是通过round指令就可以实现将32位浮点数16#450F9000转换为整数2297,也就是10进制的2297!
|
|