【发布时间】:2022-11-28 08:18:02
【问题描述】:
我正在使用 Node-RED 来读取来自 Modbus 服务器的输入,更具体地说是 MOXA ioLogik E2262 并且控制器的手册说如果你使用功能 4从 modbus 命令读取模拟信号,返回的数据类型将为“1 字”。
所以我假设Modbus Flex Getter 节点应该输出“1 个字”/“2 个字节”。我正在尝试读取一个温度值,所以我希望它是一个浮点值。不过,看看 Modbus 响应,我收到“65535”,但我不知道这是什么。
【问题讨论】:
-
edit 这个问题能否给出输入数据的示例,以及数据是小端还是大端。您还确定它是一个浮点数,只是一个需要除以 100 的整数值吗?
-
这篇 node-red 论坛帖子看起来可能有帮助(不完全是你的问题,但有很多关于类型强制的讨论)Convert modbus float array register to value
-
@hardillb 我已经编辑了我的问题并添加了更多信息。
-
@pilchard 感谢您的推荐。我将该缓冲区解析器添加到我的流程中,但是当我尝试使用它时,它显示“错误:数据不是数组或缓冲区”
-
我认为您需要多读一些关于您的 Modbus 设备的文档,如果它为模拟输入返回 2 字节值,那么它将是给定范围的缩放值。例如如果读数在 0 度和 100 度之间,则将 100 除以 2 个字节表示的 int 值。 2 个字节对于普通浮点值来说是不够的信息。
标签: javascript node.js node-red