技成培训网 技成学习APP 技成工具箱 技成企业服务

欢迎回到技成培训网

技成培训网

电工题库宝典

技成电工课堂

PLC练习题

技成PLC课堂

变频器故障查询

技成PLC学吧

伺服驱动故障查询

技成PLC网校

当前位置:技成首页 > 文章中心 > 技成百科 > 在s7-300中怎么把十六进制转换成十进制

在s7-300中怎么把十六进制转换成十进制

郑志武 发布于2013-12-04 11:55 6 0 标签:

我现在通过485通讯把现场的流量计数据传到了plc中(300的),然后现在我想把瞬时流量和累计流量在上位机上显示,但是协议上说是16进制的,流量计是科隆的,转换器是ifc300,厂家给了计算方法:
3.获取计数器1counter1[m3]
主机发送:(皆为十六进制数)
010475440004ab00
**01代表仪表地址
**04代表获取参数命令
**7544代表获取计数器1
**00固定值
**04代表返回双精度数据,即8个数据字节
**ab00代表循环冗余码校验(csc)

ifc300响应代码:
01040840b00b02338b26960c2d
**01代表仪表地址
**04代表获取参数命令
**08代表字节数,此处为08,即后面有8个数据字节
**40b00b02338b2696代表数据区,即计数器1值
**0c2d代表循环冗余码校验(csc)

由此响应代码可以得出当前计数器1的代码为40b00b02338b2696,通过计算可以得出计数器1值为4107m3
8个字节计数器1的算法:(浮点数转十进制数)
例如:40/b0/0b/02/33/8b/26/96,如果要转换成十进制数,可按下列算法:(注:此处c(x)代表&h40或64,此处c(x+1)代表&hb0或176,依次类推)
符号位:si=((c(x)and128)/128)
si=(64and128)/128=0
阶码:ex=(c(x+1)and240)/2^4+(c(x)and15)*2^4+(c(x)and112)*2^4
ex=(176and240)/16+(64and15)/16+(64and112)/16=1035
尾数:ma=(c(x+1)and15)/2^4+c(x+2)/2^12+c(x+3)/2^20+c(x+4)/2^28+c(x+5)/2^36+c(x+6)/2^44+c(x+7)/2^52+1
ma=(176and15)/16+(11/4096)+...+1=1.0027
所以所需求的量vo=(-1)^si*2^(ex-1023)*ma
vo=(-1)0×212×1.0027=4107.36
则浮点数40/b0/0b/02/33/8b/26/96代表的值为4107.36。
但是在s7-300中计算非常麻烦,而且在数据显示有延时,大家有没有更好的方法呢?

佳答案

1、方法1:
、可以试试,看看系统标准iec功能中的fc39是否满足你的要求:
fc39strng_r:
功能fc39将字符串转换为real数据类型格式变量。字符串必须为以下格式:
±v.nnnnnnne±xx±符号
v小数点前1位
n小数点后7位
x2位指数
、有关fc39strng_r应用:
<s7-300400的系统软件和标准功能>下载:
https://www.ad.siemens.com.cn/download/searchresult.aspx?searchtext=1023
2、方法2“
在上位机上进行转换很容易。只将字符串中的有用的数据传给上位机。如果在上位机中的组态软件可以转换则以,否则可应用vb,vc来进行编脚本进行计算。例如,wincc的脚本实现较容易。

若有收获,就点个赞吧!

文章来源于网络及文献如有侵权请联系站长
分享到:

微信扫一扫分享

阅读与本文标签相同的文章

相关推荐

最新文章 热门文章
最新课程 免费课程
PLC资料下载 电工电气资料下载
应用新秀
变频器故障代码查询APP
伺服故障代码查询APP
技成
手机APP
热门标签