Извлечь метку времени из 32-битного регистра Modbus

Итак, я пытаюсь извлечь дату и время из Modbus-устройства (Wetspec200). Я использую программу SimplyModbus, чтобы посмотреть, что написано в регистрах. В инструкции к устройству написано, что временная метка прописывается в регистрах 1013 и 1014. регистры даты/времени

Когда я смотрю значения в этих регистрах, я получаю 3 для регистра 1013 и 17961 для регистра 1014. введите здесь описание изображения

Как именно я могу получить отметку времени из этого? Я попытался объединить два регистра. Младший регистр представляет первые 16 бит, а старший регистр представляет последние 16 бит. Таким образом, значение 3 равно 00000000 00000011 в двоичном формате, а 17961 равно 01000110 00101001. Таким образом, объединенное вместе, оно станет 00000000 00000011 01000110 00101001. Но для меня это не имеет никакого смысла. У вас есть идеи, как я могу получить дату/время из этих двух регистров?

Был похожий пост о той же проблеме, но ответ не подходил для моего случая.


person NECben067    schedule 12.11.2018    source источник


Ответы (2)


Можешь поделиться мануалом? Поскольку modbus не предъявляет никаких требований к формату метки времени, каждый идет своим путем.

Если это не написано в руководстве, то попробуйте использовать его собственное программное обеспечение для извлечения данных из устройства, затем посмотрите (или поделитесь) отметкой времени, показанной в программном обеспечении, и попытайтесь найти, как оно соответствует двоичному значению (обычно это легко) .

Поскольку у нас всего 18 ненулевых битов, я предполагаю, что он хранит только дельту в секундах (или минутах) от некоторой уставки, которая хранится отдельно в другом регистре. Это обычная практика для приборов учета.

person grapes    schedule 22.11.2018

Может быть, это временная метка Unix? Объединение двух регистров и преобразование из-за формата Unix дает: 20.04.2007 @ 18:01 (UTC).

person Ilya Bakman    schedule 10.10.2020