7.7 KiB
Работа с метками времени в потоке данных
Режим синхронизации времени по протоколу PTP
В модификации E502-P1 добавлен механизм внутренних часов с возможностью их плавной подстройки. Также добавлена поддержка протокола PTP для синхронизации времени по сети Ethernet и реализована возможность вставки меток времени в поток данных "на ввод", Таким образом при включении меток времени появилась возможность вычислять точное время для конкретных слов из потока. E502-P1 поддерживает только Peer-to-Peer режим протокола PTP, поэтому сервер реального времени с которым происходит синхронизация должен быть настроен именно на этот режим. В режиме PTP Peer-to-Peer каждый узел сети (в т.ч. коммутаторы) должен быть PTP - совместимым и учитывать задержку до ближайшего соседнего, иначе работа PTP синхронизации не возможна.
Если все условия для работы PTP соблюдены, то синхронизация внутреннего значения времени (внутренних часов) в E502-P1 должна заработать автоматически, устройство будет получать значение точного времени с сервера и корректировать внутренние часы.
Для того чтобы метки времени появились в потоке "на ввод", необходимо специально включить такой режим через соотвтствующее API, по умолчанию этот режим выключен.
Для работы с PTP в E502-P1 были добавлены несколько новых регистров. Ранее зарезервированный бит в слове "на ввод" теперь означает что слово является меткой времени и для нее вводится признак "захват PTP".
Признак "захват PTP" - атрибут слова метки времени, означает что для потока слов полученных между двумя метками времени с установленным признаком захвата можно вычислить время каждого слова с определенной точностью.
Для обеспечения требуемой точности синхронизации в E502-P1 введены несколько настроек.
-
Допустимая рассинхронизация часов, +-нс/с. При каждом получении значения точного времени от сервера, E502-P1 вычисляет разность значения внутренних часов со значением принятым от сервера. Далее эта разность делится на время прошедшее после последней синхронизации (вычисленное по внутренним часам). Вычисленное значение сравнивается с заданным параметром. Синхронизация считается успешной, если вычисленное значение не выходит за заданный интервал.
-
Минимальное кол-во успешных синхронизаций. Для того чтобы признак "захват PTP" появился, должно произойти минимальное количество успешных синхронизаций. В случае неудачной синхронизации, признак "захват PTP" сбрасывается и цикл ожидания минимального количества успешных синхронизаций повторяется.
Работа с модулем при использовании меток времени
Работа с метками времени из API реализована отдельно от функций управления потоком и функций получения данных из потока.
- Включение вставки меток времени в поток данных "на ввод": X502_FpgaRegWrite(hnd, E502_REGS_ARM_TIME_CTRL, 1);
- Установка настроек захвата: X502_FpgaRegWrite(hnd, E502_REGS_PTP_LOCK_LIMIT, (ptp_limit_ns & 0xffff) | (ptp_req_hits << 16))
- Узнать состояние признака "захват PTP": X502_FpgaRegRead(E502_REGS_ARM_TIME_CTRL, &status);
- Инициализировать контекст для обработки меток времени: X502_tstp_init(&tstp_state, adc_freq, din_freq).
- Обработка меток времени из прочитанных данных с помощью X502_tstp_process_wrd(&tstp_state, cur_wrd), где cur_wrd - очередное слово полученное с помощью X502_Recv()
Описание регистров PTP
E502_REGS_ARM_TIME_CTRL
Address: 0x110
| Bit | Name |
Access | Description | Reset Value |
|---|---|---|---|---|
| [1] | STATUS | R | признак "захват PTP" 1: признак "захват PTP" присутствует, условия захвата выплнены 0: признак "захват PTP" отсутствует |
0 |
| [0] | ENABLE | RW | 1: добавлять метки времени в поток ввода 0: поток ввода без меток времени |
0 |
E502_REGS_PTP_LOCK_LIMIT
Address: 0x706
| Bit | Name |
Access | Description | Reset Value |
|---|---|---|---|---|
| [31:16] | ENABLE | RW | Минимальное кол-во успешных синхронизаций | 0 |
| [15:0] | STATUS | R | Допустимая рассинхронизация часов, +-нс/с | 0 |
PTP-совместимое оборудование
Оборудование, совместная работа которого с E502-P1 по протоколу PTP была проверена.
Сервер времени: блок коррекции времени ЭНКС-2 производства ООО «Инженерный центр „Энергосервис“» (www.enip2.ru) Сетевой коммутатор с поддержкой PTP: блок L-VIMS-SWITCH производства ООО "Л КАРД" (www.lcard.ru)