【问题标题】:Extract timestamp from 32-bit modbus-register从 32 位 modbus 寄存器中提取时间戳
【发布时间】:2020-10-11 06:42:03
【问题描述】:

所以我试图从 Modbus 设备 (Wetspec200) 中提取日期和时间。 我正在使用 simpleModbus 软件来查看寄存器中写入的内容。设备手册上说,时间戳写在寄存器 1013 和 1014 中。

当我查看这些寄存器中的值时,我得到寄存器 1013 的 3 和寄存器 1014 的 17961

我究竟怎样才能从中得到时间戳?我试图将两个寄存器放在一起。低位寄存器代表前 16 位,高位寄存器代表后 16 位。所以值 3 在二进制中是 00000000 00000011,而 17961 是 01000110 00101001。 所以合并在一起它会变成00000000 00000011 01000110 00101001。但这对我来说没有任何意义。您知道如何从这两个寄存器中获取日期/时间吗?

有一篇关于同样问题的类似帖子,但答案不适合我的情况。

【问题讨论】:

    标签: date time modbus-tcp


    【解决方案1】:

    可以分享一下说明书吗?至于modbus对时间戳格式没有规定任何要求,大家各行其道。

    如果不是手动写的,那么尝试使用自己的软件从设备中提取数据,然后查看(或共享)时间戳,显示在软件中并尝试找到它与二进制值的对应关系(通常是简单)。

    就我们只有 18 个非零位而言,我猜它仅存储某个设定点的秒(或分钟)增量,该增量单独存储在另一个寄存器中。这是计量设备的常见做法

    【讨论】:

      【解决方案2】:

      可能是 Unix 时间戳? 将两个寄存器放在一起并根据 Unix 格式进行转换给出:04/20/2007 @ 6:01pm (UTC)。

      【讨论】:

        猜你喜欢
        • 2012-04-11
        • 1970-01-01
        • 2017-03-01
        • 1970-01-01
        • 2014-11-18
        • 2020-11-21
        • 1970-01-01
        相关资源
        最近更新 更多