电工学习网

 找回密码
 立即注册
查看: 2594|回复: 0
打印 上一主题 下一主题

PLC程序中如何将16进制的450F9000转换为十进制数?

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

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

电工学习网 ( )

GMT+8, 2024-5-11 02:25

Powered by © 2011-2022 www.diangon.com 版权所有 免责声明 不良信息举报

技术驱动未来! 电工学习网—专业电工基础知识电工技术学习网站。

栏目导航: 工控家园 | 三菱plc | 西门子plc | 欧姆龙plc | plc视频教程

快速回复 返回顶部 返回列表