1

我正在尝试从电能表中读取值,并将它们转换为 REAL(32 位浮点数)。在这种情况下,我正在读取第 1 相电压。每个值都通过两个寄存器读取。所以我收到了值17268 (MSW) 和2456 (LSW) 的 WORDS 将它们转换为 DWORD,然后在乘以 0.1 后转换为 REAL 值,但我没有得到我期望的答案。我应该得到245.0375伏。但是我得到 1.13E+08 请查看带有实时值的结构化文本的片段。 剪断

4

1 回答 1

0

问题是DWORD_TO_REAL试图进行类型转换;也就是说,使 a 的值与 aDWORD的格式匹配REAL。在您的情况下,MSWand的内容LSW只是一个 IEEE754 值分成两半,只需要强制进入REAL变量的相应位。使用 TwinCAT (Beckhoff) 我会做一个直接的内存复制:

MEMCPY(ADR(realValue)+2, ADR(MSW), 2);
MEMCPY(ADR(realValue), ADR(LSW), 2);

我会假设施耐德有类似的命令。

于 2021-08-25T16:27:31.283 回答