Работа с метками времени в потоке данных{#sect_tstp_descr} ============================================================== Режим синхронизации времени по протоколу PTP {#sect_ptp_descr} ============================================================== В модификации 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" сбрасывается и цикл ожидания минимального количества успешных синхронизаций повторяется. Работа с модулем при использовании меток времени {#sect_gen_ptp_in} ---------------------------------------------------------- Работа с метками времени из API реализована отдельно от функций управления потоком и функций получения данных из потока. 1. Включение вставки меток времени в поток данных "на ввод": X502_FpgaRegWrite(hnd, E502_REGS_ARM_TIME_CTRL, 1); 2. Установка настроек захвата: X502_FpgaRegWrite(hnd, E502_REGS_PTP_LOCK_LIMIT, (ptp_limit_ns & 0xffff) | (ptp_req_hits << 16)) 2. Узнать состояние признака "захват PTP": X502_FpgaRegRead(E502_REGS_ARM_TIME_CTRL, &status); 3. Инициализировать контекст для обработки меток времени: X502_tstp_init(&tstp_state, adc_freq, din_freq). 4. Обработка меток времени из прочитанных данных с помощью 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)