Извлечь метку времени из 32-битного регистра Modbus - PullRequest
0 голосов
/ 12 ноября 2018

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

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

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

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

1 Ответ

0 голосов
/ 22 ноября 2018

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

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

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

...