2017-09-13 4 views
0

私はLabviewでSPSから読み込み中に取得するデータ型に関する問題があります。Labview interprete number as float

S7 read

私は、これらの値は、SPSにおける型REALであるとしてfloat値としてinterpreteする必要がS7Read_VIのうち32ビット整数値の1次元配列を得ます。

Labviewで表示される番号は1131655987で、これは243.7(floatと解釈された場合)となっています。

s7Read_VIもタイプREAL自体の読み取りを提供しますが、何らかの形でこれは機能しません(一部の同僚もその問題に気付きました)。

私はlabviewでこれらの数字(1131655987)を浮動小数点数として解釈しようとしていますが、これまでは有効な解決法が提示されていませんでした。

浮動小数点数として10進数をどのように補間することができますか?画像に示されているSGLのような変換は、numnerが既に浮動小数点として表示されているので、私は信じられません。

敬具、私はDWORDへREALからSPSにデータ型を変えた私の問題を解決するためにやった jonnyx

+2

「1131655987」は32ビット整数です。値(32ビット)を32ビット浮動小数点として解釈すると、実際には '243.7'が得られます(私はこれをチェックしました)。私はどのようにあなたがLabviewで浮動小数点数にこのような整数を投げることができるか分かりません。パスカルでは、 'IntValue:= 1131655987; myFloat:= PSingle(@Intvalue)^; '、C言語(おそらくUBですが):' int invalue = 1131655987; flood myfloat = *((float *)(void *)&intvalue); –

+0

ええ、驚いたことに、 '1131655987'は16進数で' 4373B333'です。これはfloatコンバーターで渡すことができます。 [link](https://www.h-schmidt.net/FloatConverter/IEEE754de.html) – jonnyx

答えて

3

To Single Precisionノードは、配列の各要素のキャスト演算子です。配列を単精度値の配列として解釈しません。配列を単精度値として再解析する場合は、Type Cast関数を使用し、型(中央)端子に配列を1つ、配列をx(左手)端子に配線します。
TypeCast

0

L value_REAL*1000 //REAL value like 243.7 RND T value_DWORD //now DWORD but accuracy not lost: 243700

その後、私はちょうどLabVIEWで私の値を読み込み、1000

によってそれらを分けるには、誰もがそのことを利益を得ることができることを願っています。 親切に、 jonnyx