公司新闻
西门子PLC读取的仪表数据(浮点数)如何转换为整数
发布时间: 2024-04-07 21:46 更新时间: 2024-11-24 09:10
西门子200PLC采用MODBUS RTU协议采集多功能仪表的数据,接收的数据均是32位的单精度浮点数,我怎么在PLC程序里面实现单精度浮点数与十进制之间的转换?且问题的配图如下:问题配图结合图片看了你的问题,其实你的问题就是你接收的到的32位数据是450F9000,而且你知道这个数据其实是单精度浮点数,转换为10进制的结果是2297,你想知道在西门子200PLC中如何实现这个转换工程?来说一下解题思路吧:1:你不知道西门子200PLC中如何实现这个转换,可能的原因是你对16#450F9000如何转换为2297可能也有点不理解?2:你不知道西门子200PLC中应该用什么样的指令来实现这个转换工程!16#450F9000如何转换为2297?来先看一下计算器中的转换吧:在计算器中先研究一下数据这是我电脑win10系统中的计算器切换到程序员模式,可以看到16进制的450F 9000转换为十进制数是1158647808,和你的2297是不一样的!--但是我在BIN就是二进制这里画了红线,我想说的是你如果对西门子PLC中32位浮点数的数据格式有清楚的理解的话,你根据这段二进制值就可以推算出这个实数的值是多少,因为我(控制研究控)在之前的问答和文章中有说过这个知识点,所以这里我就不再多说了!---但是我自己计算了一下结果就是2297!这个图片就是我计算的过程PLC程序中如何将16进制的450F9000转换为十进制数?其实西门子PLC中的ROUND指令就是用来取整的将浮点数转换为整数的,西门子300和200PLC中都有这个指令,所以我都测试了一下!先看一下西门子300PLC执行的结果:STEP7项目中做的程序监控图这个图片是我在step7项目中建立的一个300CPU项目的简单程序,可以看到我把16#450F9000这串数据认为是双正式,通过DI_R指令转换的结果存储到MD10中得到的实数值是1.15865e+009,这是一个双整数转实数的指令,但是如题目所说开始的16#450F9000它本身就是浮点数格式,因此这里视为双整数是不对的!而我又用round指令,将16#450F9000这个数据转换为整数,可以看到MD20的结果就是2297,这个结果才是对的。这里就是已经认定16#450F9000这串数据代表的是32位实数,因此结果正确!再看一下西门子200PLC中的执行结果:西门子200程序模拟运行截图这个图片是我在西门子200的非官方模拟器中做的测试程序,可以看到和西门子300PLC的程序是很相似的,指令都是一样的DI_R双整数转实数,和ROUND取整指令!也可以看到他们执行的结果都是一样的,Zui重要的是通过round指令就可以实现将32位浮点数16#450F9000转换为整数2297,也就是10进制的2297!
其他新闻
- 西门子1200PLC控制1500PLC进行DP通讯! 2024-11-24
- S7-1500PLC通信原理详解 2024-11-24
- S7-1200 PLCSIM (仿真)V17及以下版本用法介绍 2024-11-24
- TIA博途如何确定1200 PLC的固件版本 2024-11-24
- STEP 7-MicroWIN SMART V2.8软件安装步骤详解 2024-11-24
- 西门子200smart用中断实时测出电机转速 2024-11-24
- 西门子1200PLC通过博图软件更新CPU固件详解 2024-11-24
- 如何使用西门子S71200 OB组织块 2024-11-24
- 两个1200 和一个HMI设备组态网络连接方法 2024-11-24
- 应用实例 | 如何实现多伺服电机同步控制? 2024-11-24
- 两台西门子1200PLC进行PN通讯全过程 2024-11-24
- 自动化PLC过程控制与运动控制有何区别? 2024-11-24
- S7-200 SMART如何通过模拟量输出控制变频器频率 2024-11-24
- 西门子PLC的几种通信方式介绍 2024-11-24
- 西门子SCL编程实例:1200/1500PLC不定长数组选择排序的运用编程! 2024-11-24
产品分类
联系方式
- 电 话:18126392341
- 联系人:梁涛
- 手 机:15267534595
- 微 信:15267534595