【问题标题】:How do I convert 1 word (2 bytes) to a float in Node.js?如何在 Node.js 中将 1 个字(2 个字节)转换为浮点数?
【发布时间】: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


【解决方案1】:

var msg0 = {payload:(msg.payload[1]<<16)+msg.payload[0]} 返回 msg0;

【讨论】:

    猜你喜欢
    • 2016-12-26
    • 2019-07-31
    • 1970-01-01
    • 2012-12-27
    • 2014-08-13
    • 1970-01-01
    • 2010-09-05
    相关资源
    最近更新 更多