当前位置: 主页 > PLC控制

在wincc如何把浮点型数据转为四字节的十六进制

wincc如何把浮点型数据转为四字节十六进制,比如1.8转成16进制是3FE66666。我现在有几块仪表的读写都是十六进制浮点数,急需解决这个问题!

问题补充:
用的是菲尼克斯PLCDP通讯跟几个流量仪表连接。这个仪表需要读写数据,数据区是浮点型,菲尼克斯PLC没有浮点型转16进制的功能,所以我想在wincc里面把浮点型的数据转成DWORD再传送至PLC。目前读数据DWORD转浮点数已经在PLC里面解决,但是写数据浮点数转成DWORD还没有解决,已经用工具测试过,发送设置流量1.8需要传送3FE66666到仪表,问题是怎样在wincc里面把1.8转成3FE66666发送至PLC。liubing学长的答案没看懂,能不能详细说明一下?谢谢!

图片说明:

在wincc如何把浮点型数据转为四字节的十六进制1f902a7c6651d7ab8c374FC0cdc3ff57

最佳答案

仪表通讯使用的什么协议

下面代码是还原从S7-300PLC读取的WINCC原始数据类型中浮点数的代码

BYTEa[160]//原始字节数据
floatb[40];//浮点数据

GetTagRaw("a1",a,160);

for(inti=0;i<40;i++)
{
((BYTE*)&b[i])[0]=a[i*4+3];
((BYTE*)&b[i])[1]=a[i*4+2];
((BYTE*)&b[i])[2]=a[i*4+1];
((BYTE*)&b[i])[3]=a[i*4];
}

你可以参考下

提问者对于答案的评价:

最佳答案作者回复:
写浮点数的话应该不需要转换成HEX,zhangli0已经讲得很清楚了。

  • 关注微信

猜你喜欢

微信公众号