SIEMENS上海市(授权)西门子一级代理商——西门子华东总代理

供应商
广东湘恒智能科技有限公司
认证
西门子总代理
PLC
西门子一级代
驱动
西门子代理商
伺服电机
联系电话
15903418770
手机号
15915421161
联系人
张经理
所在地
惠州大亚湾澳头石化大道中480号太东天地花园2栋二单元9层01号房
更新时间
2024-05-22 07:00

详细介绍

看到一个网友的问题,西门子200plc采用modbusrtu协议采集多功能仪表的数据,接收的数据均是32位的单精度浮点数,我怎么在plc程序里面实现单精度浮点数与十进制之间的转换?且问题的配图如下:问题配图结合图片看了你的问题,其实你的问题就是你接收的到的32位数据是450f9000,而且你知道这个数据其实是单精度浮点数,转换为10进制的结果是2297,你想知道在西门子200plc中如何实现这个转换工程?来说一下解题思路吧:1:你不知道西门子200plc中如何实现这个转换,可能的原因是你对16#450f9000如何转换为2297可能也有点不理解?2:你不知道西门子200plc中应该用什么样的指令来实现这个转换工程!16#450f9000如何转换为2297?来先看一下计算器中的转换吧:在计算器中先研究一下数据这是我电脑win10系统中的计算器切换到程序员模式,可以看到16进制的450f9000转换为十进制数是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取整指令!也可以看到他们执行的结果都是一样的,重要的是通过round指令就可以实现将32位浮点数16#450f9000转换为整数2297,也就是10进制的2297!

PLC,变频器,代理商,一级代理,伺服电机

展开全文

我们其他产品
我们的新闻
咨询 在线询价 拨打电话