Найти в Дзене
Геннадий Антонов

Python + Modbus = синхронизация времени

В этой статье хотел рассмотреть такой необычный способ, как синхронизацию времени в автоматическом режиме устройств через ModBus TCP или RTU.

На первый взгляд можно задаться вопросами, а зачем это вообще нужно? Сейчас уже в каждом устройстве есть синхронизация времени, протокол SNTP ….и т.д.

Ручная синхронизация времени на Sepam 80
Ручная синхронизация времени на Sepam 80
Ручная синхронизация времени на TeSys T
Ручная синхронизация времени на TeSys T

Но не торопитесь с выводами.

Мы привыкли к концепции клиент-серверной синхронизации времени, когда клиент отправляет запросы серверу и сервер на них отвечает. Я не рассматриваю здесь широковещательный режим работы SNTP, поскольку из-за низкой точности, он не используется в устройствах РЗА.

А что если сервер будет обращаться к каждому клиенту и выставлять у них точное время?

Такой подход имеет ряд преимуществ:

  • Серверу не нужно справляться с "наплывом" запросов на синхронизацию от клиентов. Сервер сам определяет к какому клиенту подключится и когда.
  • Если устройств релейной защиты очень много, например несколько сотен, данный способ позволяет сгладить "броски" траффика.
  • Бывает так, что GPS сервера просто нет, или он не настроен, или имеются какие-либо проблемы с ним.
  • Если нет сети Ethernet, а есть только сеть ModBus RTU
  • Устройство может просто не поддерживать какую либо иную синхронизацию времени кроме Modbus, например TeSys T
  • Для установки времени по ModBus не требуется каких либо настроек устройства-клиента. В большинстве устройств эта возможность включена по умолчанию. Это особенно актуально когда устройств огромное количество.

С помощью обычного компьютера и программы написанной на Python, можно выставлять время на всех необходимых устройствах в автоматическом режиме. При этом компьютеру не нужна антенна GPS, достаточно обычного соединения интернет, чтобы синхронизировать точное время с публичными серверами времени.