Синхронизация времени по modbus
Синхронизация времени по modbus
Желательно, чтобы разница времени между вашим компьютером и компьютером корреспондента не превышала одной секунды! Встроенный в Windows метод синхронизации времени, не всегда позволяет достичь нужно точности. Поэтому, будем использовать внешние программы.
Узнать насколько точны часы вашего компьютера, можно на сайте time.is или ntp-servers. Обычно есть небольшое расхождение, которое потребуется скорректировать.
Встроенная команда
Для синхронизации времени встроенными средствами Windows 10 из командной строки, наберите: w32tm /resync , так вы сможете (в ручном режиме) синхронизировать время, но только когда компьютер подключен к интернету.
Синхронизация через интернет
Если ваш компьютер постоянно подключен к интернет каналу, для синхронизации проще всего использовать бесплатную программу NetTime. Зайдите на страничку, скачайте последнюю версию и запустите установку.
В программе много тонких настроек, где можно выбрать интервалы синхронизации, сервера и тд. Для мгновенной синхронизации, запустите программу и нажмите кнопку Update Now. Вы увидите на сколько было скорректировано время вашего ПК.
NetTime может работать как сервис, а значит встроенную в Windows службу корректировки времени нужно отключить.
Синхронизация через GPS/ГЛОНАСС
Если у вас нет подключения к интернету (в экспедиции и тд) синхронизируйте время по сигналам спутников, для этого потребуется USB GPS, я использую модель G-STAR IV BU-353S4. Скачайте программу Сергея Кичатова satTime, распакуйте архив в любую папку и запустите.
Подключенный GPS модуль будет имитировать COM-порт (у меня это COM3) выберите в установках программы нужный порт и скорость 4800. Для запуска нажмите Open. Через некоторое время вы увидите кол-во найденных спутников и разницу между временем вашего ПК и GPS.
Для синхронизации нажмите кнопку Sync. Если нужно чтобы время синхронизировалось автоматически, нажмите Auto Sync.
Программа ToyNtp
Создана для радиолюбителей, может синхронизироваться по сети или через GPS. Удобно, когда вы за городом, где нет интернета. Находится ToyNtp на сайте dxatlas.com.
Синхронизация через Log
Программа LogHX3 (автор RX4HX), имеет возможность точно синхронизировать часы вашего компьютера, для этого нажмите на часы правой кнопкой мышки и выберите пункт Synchronize time via Internet, время будет мгновенно скорректированно. Естественно, компьютер с логом должен быть подключен к интернету.
Конечно, есть и другие программы для синхронизации времени и среди них выделяется time-2, которая позволяет скорректировать часы в ручном режиме, без сети и gps.
Синхронизация без интернета и gps
Интересная программа, которая позволяет ручками скорректировать время в компьютере. Понятно что точность ниже, но этого достаточно, чтобы проводить QSO в JT-режимах. Страничка программы time-2.
Для работы в режимах FT8, JT9, JT65, кроме оригинальных программ WSJT и WSJT-X попробуйте JT65-HF, JTDX by UA3DJY, JT65-HF-HB9HQX-Edition, JT65-HF-Comfort by DL3VCO, JT65-HF-Comfort-4 by DL4OCE, MSHV by LZ2HV и дополнительные утилиты к ним, расширяющие возможности JT_Linker by JA2GRC, JT65toThw by JA2BQX, JT_Alert.
Настройка обмена по протоколу Modbus в CODESYS v3.5
Среда программирования CODESYS v3.5
Компания 3S-Smart Software Solutions GmbH выпустила новую версию среды программирования CODESYS v3, построенную по концептуально новому принципу: разработчики взяли за основу объектно-ориентированное программирование (ООП). В третьей версии появилась возможность создания программ процедурным методом либо на принципах стандартного ООП. Языки программирования дополнены новыми типами.
Третья версия создана в новом дизайне. Используется новый метод построения конфигурации контроллера, введена версионность библиотек, Target-файлов и других компонентов. Эти возможности обеспечиваются репозиторием устройств и библиотек.
Обновлена визуализация: добавлено множество компонентов, таких как таблицы, списки, тексты с поддержкой форматирования. Появилась возможность использования различных стилей визуализации с применением собственных методов заливки с градиентами. Введена поддержка векторной графики в формате SVG.
Создание нового проекта в среде CODESYS v3.5
В первую очередь обращаем внимание на особенности создания нового проекта. Для этих целей в среде CODESYS v2.3 использовалась вкладка Конфигурация ПЛК, в CODESYS v3.5 настройка осуществляется на вкладке Устройства (в английской версии соответственно Devices).
Контроллер, интерфейс, протокол, модуль с точки зрения CODESYS v3.5 являются программными устройствами (Devices). Любое устройство, созданное в CODESYS v3.5, имеет конкретную версию. При добавлении в проект устройств CODESYS по умолчанию использует самую старшую версию. ВЕРСИИ УСТРОЙСТВ, ИСПОЛЬЗУЮЩИЕСЯ В ПРОЕКТЕ, ДОЛЖНЫ СТРОГО СООТВЕТСТВОВАТЬ ВЕРСИИ TARGETФАЙЛА КОНТРОЛЛЕРА ИЛИ БЫТЬ МЛАДШЕ.
Рис. 1. Последовательность настройки интерфейсов
Если это условие не выполнено хотя бы для одного устройства, то возникают множественные ошибки компиляции.
Далее будет подробно рассмотрено, каким образом выбираются версии устройства и Target-файла.
Среда программирования CODESYS v3.5 и Target-файлы находятся на сайте: http://www.owen.ru/catalog/25605006 в свободном доступе.
Режимы работы в CODESYS v3.5 по протоколу Modbus
Если сравнивать режимы, которые реализованы в CODESYS v2.3 и v3.5, то в новой версии имеется ряд ограничений, которые ввела компания 3S Software. CODESYS v3.5 поддерживает режимы Modbus Master RTU/TCP и Slave RTU/ TCP, но не поддерживает Modbus ASCII. Режим ASCII реализован в библиотеке Modbus ОВЕН.
Поддерживаемые скорости обмена в CODESYS v3.5:
- 4800
- 9600
- 19200
- 38400
- 57600
- 115200
Не поддерживаемые скорости обмена[1] в CODESYS v3.5:
- 1200
- 2400
- 14400
- 28800
Нумерация портов в CODESYS v3.5
При настройке интерфейсов RS-232/485 необходимо указывать номера портов. Номер порта в CODESYS v3.5 не соответствует номеру, указанному на корпусе прибора. Соотношение номеров портов на корпусе и в CODESYS v3.5 находятся в руководстве по эксплуатации, входящем в комплект поставки оборудования. В табл. 1 приведены номера портов для панельных контроллеров серии СПК.
Номер порта на корпусе прибора
Нумерация портов в среде программирования CODESYS
Общая методика конфигурирования интерфейсов в CODESYS v3.5
Контроллеры ОВЕН оснащены универсальными интерфейсами RS-232/485. Настройка интерфейсов в CODESYS v3.5 имеет строго определенную последовательность (рис. 1).
Во-первых, необходимо выбрать интерфейс (232 или 485) и установить режим работы порта – Master или Slave. Если порт настраивается для режима Slave, то достаточно указать перечень регистров, которые будут участвовать в обмене; если в режиме Master, то необходимо описать опрашиваемые устройства и указать регистры каждого из них.
Настройка интерфейсов
Для добавления в проект интерфейса необходимо перейти на вкладку Устройства (рис. 2). В дереве объектов выбрать настраиваемый контроллер, например, СПК107 с Target-файлом 3.5.2.0. Правой кнопкой выбрать пункт и в открывшемся меню – пункт Добавить устройство (рис. 2).
Откроется диалоговое окно (рис. 3) с перечнем устройств, поддерживаемых CODESYS. Чтобы выбрать необходимую версию устройства, нужно выставить флаг на пункте . Для добавления COM-порта нужно нажать на «+» возле пункта Modbus. В меню (рис. 4) следует выделить пункт (версия 3.4.0.0 меньше версии Target-файла 3.5.2.0) и добавить устройство, в данном случае – Modbus COM. Дерево объектов имеет вид, показанный на рис. 5.
Зададим настройки COM-порта. Если дважды нажать на , откроются его настройки (рис. 5). На вкладке Конфигурация последовательного порта Modbus следует указать номер порта, скорость передачи данных и другие параметры. Для контроллеров серии СПК2хх обмен можно реализовать через Ethernet. Он добавляется аналогично COM-порту: выбирается устройство , в открывшемся меню из списка Ethernet-адаптер добавляется устройство Ethernet (рис. 6). В контроллерах СПК207-03-CS-WEB использовался Target-файл версии 3.5.0.40. Вкладка порта Ethernet не имеет активных настроек, так как используются системные настройки.
Настройка мастера сети
После добавления интерфейсов необходимо установить режимы работы устройств (Master или Slave). Настройка режимов Modbus Master или Modbus Slave для разных интерфейсов практически одинакова. Сначала следует выбрать соответствующий интерфейс (например, Ethernet, рис. 7), правой кнопкой мыши вызвать окно Добавить устройство.
Диалоговое окно порта Ethernet показано на рис. 8. Диалоговое окно COM-порта показано на рис. 9. В зависимости от выбранного порта настраивается режим мастера сети. В данном примере используется ОВЕН СПК207 версии 3.5.0.40, поэтому версию мастера для COM-порта и Ethernet можно выбрать 3.4.3.х или 3.5.0.0.
Для порта Ethernet:
После добавления режима Master (RTU, TCP) необходимо его настроить. Для этого в дереве объектов нужно дважды выбрать добавленного мастера. Откроется окно настроек, где необходимо открыть вкладку . На рис. 10 показаны настройки для Ethernet: Таймаут ответа – время ожидания мастером ответа от Slave-устройства. Если за установленное время Slave не отвечает, Master начинает опрос следующего Slave-модуля. Выбранное значение (1000, рис. 10) будет по умолчанию использоваться для всех Slave-устройств. Для каждого модуля можно задавать свое время ожидания на вкладке Конфигурация Slave. Таймаут сокета – максимальное время ожидания мастером входящих пакетов TCP/IP.
Настройка для COM-порта аналогична Ethernet, только вместо таймаут сокета используется параметр: время между фреймами – интервал между ответом (или окончанием ожидания) и следующим запросом. Этот параметр может использоваться для увеличения скорости передачи.
Настройка Slave-устройств
После добавления мастера необходимо добавить Slaveустройства. Для этого на вкладке Устройства выбирается мастер и правой кнопкой добавляются Slave-устройства (рис. 11).
В данном примере используется СПК207 с Target-файлом 3.5.0.40.
Добавление Slave-устройства для мастера Ethernet-порта: . Добавление Slave-устройства для мастера COM-порта: . После проведенных операций дерево объектов имеет вид, показанный на рис. 12. Для удобства порты можно переименовывать, на рис. 12 показано, что порт Modbus COM переименован в COM1.
Конфигурирование Slave-устройств
После добавления Slave-устройств переходим к их конфигурированию. Для этого в дереве объектов следует выбрать Slave-устройство и двойным кликом открыть окно настроек. Slave-устройство, подключенное к мастеру Ethernet-порта (рис. 13), имеет следующие настройки: IP Адрес Slave – IP адрес устройства, которое опрашивает мастер сети.
Unit — ID – сетевой адрес устройства, который может принимать значения от 1 до 247, и используется для идентификации узла в сети.
Таймаут ответа устанавливается для каждого Slave-модуля и имеет приоритет по отношению к соответствующему параметру Master.
Порт – номер порта для Slave-модуля. Slave-устройство, подключенное к мастеру COM-порта, имеет аналогичные настройки.
Добавление каналов
Дальнейшая настройка независимо от типа интерфейса сводится к заданию канало[3]в (одного или нескольких регистров) и указанию режима работы канала – чтение или запись с последующей привязкой к переменным конфигурации.
Для добавления каналов следует перейти на вкладку Канал Modbus Slave соответствующего Slave-устройства и нажать на кнопку Добавить канал (рис. 14). Откроется диалоговое окно (рис. 15) с параметрами, приведенными в табл. 2.
После того как Slave-устройству будут заданы каналы и режимы работы, следует выполнить привязку читаемых или задаваемых регистров к переменным проекта на вкладке Соотнесение входов/выходов. Для этого необходимо выбрать канал, два раза кликнув по полю с названием «Переменная» (рис. 16). После этого поле станет
Таблица 2. Параметры каналов
Группа параметров «Канал»
Чтение регистра хранения (код функции 03) Чтение входных регистров (код 04) Запись в один регистр (код 06) Запись в несколько регистров (код 16) Запись/чтение регистров (код 23)
CYCLIC: запрос выполняется периодически RISING_EDGE: запрос выполняется по переднему фронту логической переменной (для запуска сервисов Modbus из приложения в любое время необходимо установить триггер в RISING_EDGE)
Если триггер имеет значение CYCLIC: интервал между опросами в мс (должен быть равен или кратным времени цикла приложения)
Краткое описание реального смысла данных
Группа параметров «Регистр READ»
Номер регистра для чтения (0-65535)
Количество регистров (=слов), которые будут прочитаны
Обработка данных в случае возникновения ошибок соединения: «Set to ZERO» устанавливает все значения в 0. Keep last Value сохраняет предыдущее значение.
Группа параметров «Регистр WRITE»
Номер регистра для записи (0-65535)
Количество регистров (=слов), которые будут записаны
активным для редактирования, и появится кнопка . Если на нее нажать, то произойдет вызов диалога «Ассистент ввода», с помощью которого можно связать регистр с переменной проекта (рис. 17).
Если регистры привязаны к переменным, то при запуске программы на вкладке Соотнесение входов/выходов отображаются опрашиваемые значения. Если регистры к переменным не привязаны, но эти данные необходимо просмотреть, то следует выставить галочку в окне .
Если мастер сети опрашивает несколько устройств в сети, то по описанной выше методике добавляются и настраиваются очередные Slave-устройства. На рис. 18 приведен пример дерева объектов с задействованным портом Ethernet и двумя serial-портами. Все три порта настроены в режиме Master, и каждый из них опрашивает по четыре Slave-устройства.
У Slave-устройства есть вкладка Modbus Slave Init, которая предназначена для предварительной инициализации данных, например, если перед началом обмена устройству необходимо задать настройки (например, указать тип датчика). Методика добавления регистров для инициализации аналогична методике добавления каналов, есть только еще один пункт – значение инициализации.
Настройка устройства в режиме Slave
Если устройство нужно настроить на работу в режиме Slave, то после добавления интерфейсов необходимо добавить Slave-устройства. Для этого на вкладке Устройства выбирается интерфейс и правой кнопкой добавляется режим Slave: для порта Ethernet (рис. 19), для COM-порта (рис. 20).
После настройки режима Slave необходимо задать основные настройки устройств для Modbus Slave TCP (рис. 21), для Modbus Slave RTU (рис. 22).
Таймаут: время ожидания (мс) кратное 500 мс.
Slave-порт: номер порта для Slave-модуля.
ID элемента: сетевой адрес устройства Modbus.
Регистры временного хранения: число регистров, доступных только для чтения функцией 04. Входные регистры: число регистров, доступных для чтения функцией 03 и записи функцией 16.
После задания основных настроек регистры можно связать с переменными программы на вкладке «Соотнесение входов/выходов».
На рис. 23 показан пример дерева объектов для СПК207, порт Ethernet и порты COM2 и COM3 настроены на режим работы Slave.
После выполнения описанных операций необходимо подключить настраиваемое оборудование к СПК и убедиться в корректности обмена. Таким образом, настройка СПК по протоколу Modbus завершена.
[1] На этих скоростях контроллеры ОВЕН поддерживают работу в ОС Linux, но возможность работы непосредственно в среде программирования отсутствует.
[2] В СПК105 интерфейсы RS-485 и RS-232 выведены на один порт COM1, что обеспечивает возможность одновременной работы и по RS-485, и по RS-232 в отличие от остальных контроллеров серии СПК.
[3] Канал – это группа адресов, расположенных последовательно друг за другом и опрашиваемых одной функцией.
© Автоматизация и Производство, 2021. Все права защищены. Любое использование материалов допускается только с согласия редакции. За достоверность сведений, представленных в журнале, ответственность несут авторы статей.
Издание зарегистрировано Федеральной службой по надзору в сфере связи, информационных технологий и массовых коммуникаций. Свидетельство о регистрации средств массовой информации ПИ № ФС77-68720.
Как работает синхронизация времени в интернете
В прошлый раз мы рассказали, какие сложности могут ждать программистов, когда они пишут код для работы со временем. Сегодня перейдём на более сложный уровень: как компьютеры и другие устройства синхронизируют время между собой.
Зачем нужна синхронизация
От того, какое на компьютере установлено время, зависит многое:
- отображение спецпредложений и акций на сайтах;
- публикация и сортировка комментариев к статьям;
- совместная работа компьютеров в локальной сети — если время на компьютерах будет различаться, это может привести к сбоям;
- если одна база данных обслуживается с нескольких компьютеров, они должны чётко синхронизироваться во времени; иначе запрос одного компьютера может прилететь из будущего, а реальный запрос из будущего попасть в далекое прошлое;
- если вы используете телефон для двойной аутентификации, то с неправильным временем телефон будет выдавать неправильный код, и аутентификация не пройдёт;
- от времени зависят сертификаты безопасности: если ваше локальное время намного отличается от общемирового, то для вас все сертификаты безопасности будут недействительными, сайты не откроются.
В целом единственный случай, когда не нужна синхронизация, — когда компьютер работает независимо от сети, а результаты его вычислений не связаны со временем. В остальных случаях синхронизация полезна.
Как работает синхронизация
В общем виде синхронизация времени работает так:
- Устройство посылает запрос на сервер синхронизации и запоминает время, когда ушёл запрос. Запрос идёт по протоколу NTP, о нём ниже.
- Сервер получает запрос, и, если всё в порядке, — записывает, когда он его получил, и отправляет данные с точным временем на сервере.
- Устройство получает ответ от сервера и записывает, во сколько оно его получило.
- Зная время отправки и получения запроса и точное время на сервере, можно рассчитать глобальное время (но с какой-то точностью).
Это всё повторяется с какой-то периодичностью — раз в час, раз в день или с любым другим интервалом.
Что такое NTP
NTP — это сокращение от Network Time Protocol, что переводится как «протокол сетевого времени».
Протокол спроектирован так, чтобы заниматься только синхронизацией времени. Для этого используются пакеты объёмом всего 48 байт, причём 24 из них заполняет устройство, а 24 — сервер. Это значит, что для точности в 0,01 секунды достаточно один раз получить и передать 48 символов. Если размер пакета сделать слишком большим, то задержки при передаче будут больше и может пострадать точность синхронизации.
Для работы NTP нужен сервер точного времени, который ответит на наш запрос. Сервер всегда знает, какое сейчас время, и моментально реагирует на каждый запрос.
В операционной системе Windows точное время берётся с сервера time.windows.com У компании Apple сервер точного времени — time.apple.com
Какие бывают серверы синхронизации
В протоколе NTP есть несколько классов серверов точного времени, в зависимости от точности. Эти классы называются Stratum, а цифра после названия показывает уровень сервера по отношению к самому точному времени.
Stratum 1 — самые точные серверы, которые могут учитывать время с точностью в одну триллионную долю секунды. Они получают время напрямую от атомных часов либо от сервисов GRS или «Глонасс». Для запуска и обслуживания такого сервера нужно сложное оборудование, поэтому серверов первого уровня в мире мало. Большинство из них не отвечает на запросы от обычных пользователей и обслуживает только другие серверы уровнем пониже.
Stratum 2 — серверы точного времени второго уровня. Они получают данные от серверов первого уровня и работают с погрешностью примерно 0,001 секунды. Такие серверы уже могут отвечать на большинство запросов и обслуживать серверы поменьше.
Stratum 3 получают данные от серверов второго уровня, и тут уже точность может падать до 0,05 секунды. Дальше идут уровни 4, 5 и так далее, ограничений снизу нет.
Какая точность нужна для синхронизации
Если вам просто нужно «обычное» точное время с точностью до секунды (например, на телефоне или в часах), то подойдёт любой сервер синхронизации времени. Обычно это будут сервера Stratum 3, потому что их больше всего.
Если нужно что-то обрабатывать с точностью до 0,01 секунды, то нужно найти сервер второго уровня в своей стране и подключиться к нему (так будет точнее). Например, можно использовать серверы в Саратове.
Если же вам нужна точность 0,001 секунды или выше — договаривайтесь с владельцем сервера первого уровня или создавайте свой сервер.
CentOS 7: Настройка синхронизация времени по Network Time Protocol. Утилита chrony.
Chrony — это гибкая реализация протокола сетевого времени — Network Time Protocol (NTP). Используется для синхронизации системных часов с различных NTP-серверов, эталонных часов или с помощью ручного ввода.
Также можно его использовать как сервер NTPv4 для синхронизации времени других серверов в той же сети. Chrony предназначен для безупречной работы в различных условиях, таких как прерывистое сетевое подключение, перегруженные сети, изменение температуры, что может повлиять на отсчет времени в обычных компьютерах.
Chrony поставляется с двумя программами:
- chronyc — интерфейс командной строки для службы Chrony;
- chronyd — служба, которая может быть запущена во время загрузки системы.
1.1. Установка программы.
Внимание! В CentOS 7 данная утилита уже идет в комплекте даже при минимальной комплектации установщика. Устанавливать отдельно в CentOS 7 утилиту chrony не надо.
Для CentOS 8 из официальных репозиториев убрали ntp и ntpdate, поэтому для синхронизации времени нужно использовать chrony.
Основные преимущества chrony:
- высокая скорость и точность синхронизации;
- корректная работа при отсутствии доступа к эталонным часам (ntpd требуются регулярные запросы);
- по умолчанию не меняет сразу время при синхронизации, чтобы не нарушить работу программ.
Проверим есть ли на нашем сервере автоматическая синхронизация — статус службы по обновлению времени через интернет.
Для этого можно использовать указанную выше команду timedatectl без параметров.
В данном ответе CentOS 7 уже имеет синхронизацию и настроена корректно. Устанавливать утилиту chrony не надо.
Утилита timedatectl также позволяет изменить время:
# timedatectl set-time ‘2019-11-27 17:51:00’
Если по каким-либо причинам chrony у вас не установлена, то ответ будет такой, как на картинке-примере ниже. В этом случае для синхронизации времени нужно установить и использовать chrony.
Если у вас она не стоит, что видно по скриншоту, то установим и настроим вручную:
# yum -y install chrony
Как и любой другой сервис, после установки chrony нужно включить и добавить в автозагрузку:
# systemctl start chronyd
# systemctl enable chronyd
1.2. Проверка работы программы.
Для проверки статуса chrony используется следующая команда.
# systemctl status chronyd
Проверяем, нормально ли запустился:
Все в порядке, сервис настроен и работает. После запуска он автоматически синхронизирует время. Теперь наши часы будут автоматически синхронизироваться с сервером времени в интернете.
1.3. Проверка синхронизации.
Чтобы проверить, синхронизирован ли chrony на самом деле. Как и у ntp, у chrony есть интерфейс командной строки chronyc. Мы будем использовать его программу командной строки chronyc, которая имеет опцию отслеживания для предоставления соответствующей информации.
Перечисленные пункты содержат следующую информацию:
- Reference ID — идентификатор и имя, с которым компьютер в настоящее время синхронизирован.
- Stratum — количество переходов к компьютеру с установленными основными часами.
- Ref time — это время по Гринвичу, в которое было выполнено последнее измерение из эталонного источника.
- System time — задержка системных часов от синхронизированного сервера.
- Last offset — расчетное смещение последнего обновления часов.
- RMS offset — долгосрочное среднее арифметическое значения смещения.
- Frequency — это частота, на которой часы системы будут работать неправильно, если хронограф не проведет коррекцию. Она выражена в ppm, то есть ч/м (частей на миллион).
- Residual freq — остаточная частота указывает на разницу между измерениями от опорного источника и используемой в настоящее время частотой.
- Skew — расчетная погрешность, связанная с погрешностью частоты.
- Root delay — суммарная задержка сетевого пути к опорному серверу, с которым синхронизируется компьютер.
- Leap status — это статус, который может иметь одно из следующих значений: нормальное, добавить второй, удалить второй или не синхронизироваться.
1.4. Источники синхронизации.
Чтобы проверить информацию об источниках chrony, можно выполнить следующую команду:
1.5. Настройка параметров.
Конфигурационный файл chrony — /etc/chrony.conf .
В нем нужно указать список NTP серверов, которые нужно использовать для синхронизации.
Конфигурационный файл chrony находится по адресу /etc/chrony.conf .
Пример конфигурационного файла может выглядеть примерно так:
Приведенная выше конфигурация содержит следующую информацию:
- server — данная директива описывает NTP-сервер, с которым необходимо синхронизироваться.
- stratumweight — какую задержку следует добавить к источнику синхронизации для каждой группы. Значение по умолчанию: 0,0001.
- driftfile — расположение и имя файла, содержащего данные смещения.
- makestep — эта директива заставляет chrony постепенно корректировать любое смещение во времени путем снижения скорости или замедления хода часов по мере необходимости.
- logdir — путь к файлу журнала chrony.
Если нужно немедленно перейти к настройке системных часов и игнорировать текущие настройки, воспользуйтесь следующей командой:
3.6. Остановка работы программы.
Остановить работу сервиса можно вот такой обычной командой:
# systemctl stop chrony
Убрать из автозапуска этой командой:
# systemctl disable chrony
2. Возможные ошибки и их устранение.
2.1. Проблема с Local/RTC временем.
Необходимо, что бы Local/RTC время было одинаковым.
При выводе результатов работы команды timedatectl , к результату постоянно приписывается абзац:
Внимание: система настроена на считывание времени RTC в локальном часовом поясе. Этот режим не может быть полностью поддержан. Это создаст различные проблемы с изменением часового пояса и переходом на летнее время. Время RTC никогда не обновляется, оно полагается на внешние средства для его поддержания.
Если оффлайн часы сильно убегают значит не выставлен машинный таймер. Будем чинить!
Переключимся на сохранение локального, а не глобального (UTC) времени в BIOS.
# timedatectl set-local-rtc 1
Потом обновляем машинный таймер:
# hwclock —utc —systohc
И будет всё точно как швейцарские часы!
Проверить успешность переключения этой же командой без параметров:
Как видно предупреждение исчезло!
2.2. Ошибка ручной синхронизации времени (timedatectl).
Аналогичная ошибка может возникать и при работе с утилитой timedatectl:
# timedatectl set-time ‘2019-11-27 17:51:00’
Теперь нужно отключить автоматическую синхронизацию в самой утилите timedatectl :
# timedatectl set-ntp 0
И выполнить команду по установке конкретного времени:
# timedatectl set-time ‘2019-11-27 17:51:00’
Всё стало хорошо!
2.3. Ошибка: Operation not permitted.
Так при ручной синхронизации, часто бывают ошибки вида:
28 Nov 10:12:39 ntpdate[897482]: sendto(185.217.191.98): Operation not permitted
В этом случае проверьте правила firewalld или iptables, и убедитесь, что у вас на сервере открыт UDP порт 123. Так же некоторые хосты синхронизации могут быть недоступны в момент проверки.
7.15 ntpdate — утилита синхронизации времени в ОС
В РЕД ОС синхронизировать время можно следующими основными способами:
- вручную при помощи утилиты ntpdate;
- автоматически при помощи сервиса ntp.
Программа ntpdate — позволяет разово синхронизировать локальное время с эталонным сервером времени в интернете. Подобных эталонов существует достаточно много. Для примера можно воспользоваться одним из них — pool.ntp.org.
Запускаем синхронизацию времени:
Утилита провела синхронизацию, в результате которой к системному времени было добавлено число секунд, необходимое для приближения к эталонному. Если в результате работы синхронизации возникает ошибка: «no server suitable for synchronization found», то попробуйте в работе утилиты использовать непривилегированный порт. По-умолчанию ntpdate работает по 123 порту. Если он закрыт на фаерволе, то помочь в синхронизации поможет следующий параметр:
Если у вас запуск ntpdate завершается ошибкой — «the NTP socket is in use, exiting», значит у вас уже установлена и запущена служба ntpd, которая заняла необходимый udp-порт, необходимый для работы ntpdate.
Сервер времени ntp использует в своей работе одноименный протокол — Network Time Protocol, которому для работы необходим UDP-порт 123. Так что перед установкой и настройкой службы времени убедитесь, что на фаерволе открыт этот порт.
Устанавливаем сервер ntp:
Если вы используете РЕД ОС версии 7.1 или 7.2, выполните команду:
Если вы используете РЕД ОС версии 7.3 и старше, выполните команду:
Теперь отредактируем файл конфигурации /etc/ntp.conf, удалив все лишнее:
server | Список серверов для синхронизации времени. |
Driftfile | Задает адрес файла, в котором хранится история изменений времени во время синхронизации. Если по каким-то причинам синхронизация времени с внешними источниками станет невозможна, служба времени изменит системные часы в соответствии с записями в этом файле. |
Restrict 127.0.0.1 | Указывает, что пользоваться нашим сервером времени можно только непосредственно с локального интерфейса. Если вам необходимо разрешить другим компьютерам в вашей локальной сети синхронизировать время с текущей машины, то укажите в данном параметре адрес вашей сети, например: |
restrict 192.168.10.0 mask 255.255.255.0
restrict default nomodify notrap nopeer noquery — Параметры указывают на то, что клиентам данного сервиса времени запрещено изменять его настройки, получать его статус. Они могут только забрать с него значения точного времени.
disable monitor — Данный параметр повышает безопасность, предотвращая использования одной из уязвимостей сервиса ntpd, которую можно использовать для проведения DDoS атак.
Logfile — Указывает путь к файлу с логами сервиса.
После завершения редактирования файла настроек запускаем службу синхронизации времени:
Проверяем запустился ли сервер:
Все в порядке, служба слушает положенный порт 123. Проверим на всякий случай системные логи используемой ОС:
Теперь настроим автозапуск ntp вместе с загрузкой используемой ОС:
Наблюдать за работой службы ntp можно с помощью команды:
remote | Адрес удаленного эталона времени, с которого была синхронизация. |
Refid | Указывает, откуда каждый эталон получает точное время. Это могут быть другие сервера времени, система GPS и другое. |
St | Уровень (Stratum) это число от 1 до 16, которое указывает на точность эталона. 1- максимальная точность, 16 — сервер недоступен. Уровень вашего сервера будет равен уровню наименее точного удаленного эталона плюс 1. |
poll | Интервал в секундах между опросами. |
Reach | Восьмеричное представление массива из 8 бит, отражающего результаты последних восьми попыток соединения с эталоном. Бит выставлен, если удаленный сервер ответил. |
Delay | Время задержки ответа на запрос о точном времени. |
Offset | Разница между вашим и удаленным сервером |
jitter | Дисперсия (Jitter) — это мера статистических отклонений от значения смещения (поле offset) по нескольким успешным парам запрос-ответ. Чем меньше значение дисперсии, тем лучше, поскольку позволяет точнее синхронизировать время. |
Если вы нашли ошибку, пожалуйста, выделите текст и нажмите Ctrl+Enter.