字符串转换为实数

用的314c-2dp的CPU自由口通讯从传感器中读出来的数(如图)有什么办法能把DBB31-DBB38里面的数转换成实数.传感器测量的值是   -4347
求详细点的办法,资料看过了没看明白….

问题补充:
DBB31-DBB38怎么在符号表里面吧这个字符串定义为变量?数据格式 跟数据类型是什么样子的?
没搞过这个麻烦指教下,谢谢!

图片说明:

字符串转换为实数   

最佳答案

1、应用功能FC39将字符串直接转换为REAL数据类型格式变量,但FC39的字符串的格式不适合你的要求。可以先应用FC37 STRNG_DI转换为双字长整数,然后再转换为实数。
功能FC37将字符串转换为DINT数据类型格式变量。字符串中的第一个字符可以是符
号或数字,随后的字符必须是数字。如果字符串的长度等于零或大于11,或者字符
串中有无效字符,则不进行转换,并将状态字的二进制结果(BR)位设置为“0”。如果
转换结果超出DINT范围,则将结果限制到相应值,并将状态字的二进制结果(BR)位
设置为“0”。
2、调用FC37的方法:
先在符号表中定义DBB31-DBB38为一个符号变量。将该变量作为输入参数S。在定义一个双字长的单元来存放结果。
FC37的具体见下述手册中24-26:
<S7-300400的系统软件和标准功能>下载:
http://www.ad.siemens.com.cn/download/SearchResult.aspx?searchText=1023
3、再将转换的双字长整数转换为实数,可以应用DTR 语句将双整数(32 位)转成浮点数(32 位,IEEE-FP)。
DTR 语句的用法见:
《用于S7-300 和S7-400 的语句表(STL)编程手册》下载:
http://www.ad.siemens.com.cn/download/SearchResult.aspx?searchText= 1008
4、其实自己编程也很简单:
DBB31-DBB38:DBB31中为符号,DBB32-DBB38共7位,即百万位。编程可以取:
DBB32乘以1000000加上DBB32乘以100000加上DBB33乘以10000,,,,,,,加上DBB37乘以10加上DBB38..。相加结果就是一个整型结果,再将这个整型结果转换为实数,之后将结果赋予符号位。

提问者对于答案的评价:
谢谢指教,希望您有时间能帮忙把追加的问题指点下。

专家置评

已阅,最佳答案正确。

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc237503.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2018年12月1日
下一篇 2018年12月1日

相关推荐