在wincc如何把浮点型数据转为四字节的十六进制,比如1.8转成16进制是3FE66666。我现在有几块仪表的读写都是十六进制浮点数,急需解决这个问题!
问题补充:
用的是菲尼克斯PLC,DP通讯跟几个流量仪表连接。这个仪表需要读写数据,数据区是浮点型,菲尼克斯PLC没有浮点型转16进制的功能,所以我想在wincc里面把浮点型的数据转成DWORD再传送至PLC。目前读数据DWORD转浮点数已经在PLC里面解决,但是写数据浮点数转成DWORD还没有解决,已经用工具测试过,发送设置流量1.8需要传送3FE66666到仪表,问题是怎样在wincc里面把1.8转成3FE66666发送至PLC。liubing学长的答案没看懂,能不能详细说明一下?谢谢!
图片说明:
最佳答案
仪表通讯使用的什么协议
下面代码是还原从S7-300PLC读取的WINCC原始数据类型中浮点数的代码
BYTE a[160] //原始字节数据
float b[40]; //浮点数据
GetTagRaw("a1",a,160);
for(int i=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 已经讲得很清楚了。
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc145012.html