从电表获取数值到施耐德 PLC

Getting values from energy meter to Schneider PLC

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

问题是 DWORD_TO_REAL 正在尝试进行类型转换;也就是说,使 DWORD 的值与 REAL 的格式匹配。在您的情况下, MSWLSW 的内容只是一个分成两半的 IEEE754 值,只需将其强制转换为 REAL 变量的相应位即可。使用 TwinCAT (Beckhoff),我会进行直接内存复制:

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

我假设 Schneider 有类似的命令。