DWORD 到 REAL 转换

DWORD to REAL conversion

我一直在编写一个程序,该程序从通过 Modbus RTU 分析的功率中读取无功功率值。

无功功率由 32 位表示,MSb 确定符号。程序不会读取整个 32 位,而是读取两个 16 位字。

读取 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在其项中包含16位字,形成无功功率的32位表示)。

好像读取是可以的,但是转换的时候有些地方不对。尽管 iQ_HW 和 iQ_LW 中的值不为零,但我仍然得到 0。有人可以告诉我

我哪里做错了?

谢谢。

我刚刚解决了这个问题。代码是正确的,但是程序模块没有被处理器处理。大多数模块变量都有一些值(这些值实际上是在不同的模块中计算的)并且由于我的意思是模块被处理了。打扰一下。