2016-04-14 73 views
-1

私は、Modbus RTUで分析された電力から無効電力の値を読み取るプログラムを作成しています。DWORDからREALへの変換

MSbが符号を決定する間、無効電力は32ビットで表されます。プログラムは、2つの16ビットワードを読み込むのではなく、32ビット全体を読み取らない。

32ビットを読み取った後、値をREAL データ型に変換する必要があります。私は構造化テキストで以下の変換コードを書いた:

rQs: REAL := 0.0; 
rQs := DINT_TO_REAL(DWORD_TO_DINT((SHL(WORD_TO_DWORD(stLovato_power.iQ_HW),16) + WORD_TO_DWORD(stLovato_power.iQ_LW))))/100.0; 

(構造stLovato_powerは、その項目に無効電力の32ビット表現を形成する16ビット・ワードを含んで)。

読書はOKですが、変換の何かが間違っているようです。 iQ_HWとiQ_LWの値が0ではないにもかかわらず、私はまだ0になります。誰か教えてください

私は間違いを犯しましたか?

ありがとうございました。

+0

私はあなたのコードラインをテストし、変換はTwinCat3 –

答えて

0

私はただ問題を解決しました。コードは正しいが、プログラムモジュールはプロセッサによって処理されていない。ほとんどのモジュール変数はいくつかの値を持っていました(これらの値は実際には異なるモジュールで計算されていました)。すみません。

関連する問題