字符数组转换成实数的问题

我通过FB64接收以太网传递过来的两个实数。例如1.22,10.3
FB65接收DATA端用BYTE型数组, P#DB301.DBX0.0 BYTE100
接收到的数据在数组中的存储是
array[1]= 31,array[2]=2E  array[3]= 32   array[4]= 32 array[5]=2C
array[6]=31   array[7]= 30  array[8]=     array[9]=33   
注: 这两个实数位是不确定的。两实数之间用‘,’分隔。
我在PLC里需要用到这两个实数,请问如何将数据组中的数据转换成实数型的变量呢?

最佳答案

1、可以应用:
FC39: STRNG_R 转换数据类型转换,从STRING到REAL。
功能FC39将字符串转换为REAL数据类型格式变量。字符串必须为以下格式:
±v.nnnnnnnE±xx ± 符号
v 小数点前1位
n 小数点后7位
x 2位指数
如果字符串长度小于14,或者不是如上所示的结构,则不进行任何转换。
2、为了能够应用FC39,要将字符串符合上述要求。
详见下述文档的24-26,FC39 STRNG_R:
<S7-300400的系统软件和标准功能>下载:
http://www2.ad.siemens.com.cn/download/Upload/AS/manual/1023.pdf
3、可以自编程序,如果字符串规格化则编程也很简单:
首先对字符串要规格化,即array[0]= 十位数,array[1]=各位数  array[2]=小数点  array[3]= 十分位,array[4]= 白分位。
、取array[0]的内容,减30即为数字,例如32-30=2,再乘以10,即为20;
、取array[1]的内容,减30即为数字,例如33-30=3,即为3;
、取array[3]的内容,减30即为数字,例如34-30=4,再乘以0.1,即为0.4;
、取array[4]的内容,减30即为数字,例如35-30=5,再乘以0.01,即为0.05;
、将上述结果相加,即为23.45.。

提问者对于答案的评价:
谢谢。我在《西门子step7 编程语言与使用技巧》里找到了例程。

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

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

相关推荐