Перейти к содержанию
    

Аппаратная поддержка протокола синхронизации времени STM32F407+LAN8720A.

Здравствуйте, товарищи!

 

Совсем запутался. Разъясните пожалуйста!

 

У Microchip поддержка PTP v2 заявлена только в многопортовых Ethernet Switch, например: KSZ8463...и других из этой серии, LA9313, LAN9355...и других, но не в микроконтроллерах, ни в PIC32MX, ни в PIC32MZ. У STM32F407 поддержка PTP v2 заявлена в самом микроконтроллере, к этому микроконтроллеру присоединена LAN8720A.

 

Не пойму, как связаны часы микроконтроллера (модуль RTC с точностью до секунд или даже до субсекнд в случае с STM32F407) и высокоточные часы в соответсвии с PTP с точностью до 20 наносекунд, в которых время хранится 32.32 (секунды.наносекунды).

 

У KSZ8463 даже есть выход 1PPS (один импульс в секунду), тактируемый через протокол PTP. Но аналогичый вывод есть и у STM32F407. Не пойму, для чего он должен использоваться? Вроде как устройства на основе MCU+KSZ8463 или на STM34F407 при использовании протокола PTP могут быть мастерами, рассылать сообщения с метками времени и выдавать импульс 1PPS? Так?

 

И еще, в описании к KSZ8463 есть упоминание про IEC61850 (протокол цифровых подстанций), там как раз используется PTP v2 и сигналы 1PPS, по этому импульсу ежесекундно корректируются (синхронизируются) внутренние часы ведомых устройств.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не пойму, как связаны часы микроконтроллера (модуль RTC с точностью до секунд или даже до субсекнд в случае с STM32F407) и высокоточные часы в соответсвии с PTP с точностью до 20 наносекунд, в которых время хранится 32.32 (секунды.наносекунды). ...

Для STM32F4.

RTC и PTP - это разные таймеры.

1PPS выход реализуется как переход PTP таймера через границу секунды.

Как корректируются часы (как PTP, так и RTC), а так же быть вам мастером или слэйвом по протоколу PTP - определите вы, когда напишите софт.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для STM32F4.

RTC и PTP - это разные таймеры.

1PPS выход реализуется как переход PTP таймера через границу секунды.

Как корректируются часы (как PTP, так и RTC), а так же быть вам мастером или слэйвом по протоколу PTP - определите вы, когда напишите софт.

Спасибо!

 

У меня есть микроконтроллер с модулем RTC,

RTC тактируется от кварца 32768 Гц,

предделители равны 16 и 2048, поэтому разрешение

по субсекундам равно 1/2048=0,5мс,

этого достаточно для фактического разрешения 1 мс,

итого в модуле RTC имеем ДД.ММ.ГГ ЧЧ:ММ:СС.sss,

где sss = 0...2048 субсекунд или 0...999мс.

 

Также в микроконтроллере есть модуль Ethernet

c поддержкой Time Stamp, в нем метки времени

в соответсвии со стандартом IEEE1588 хранятся в

виде чисел с фиксированной запятой 32.32, т.е.

32 бита для секунд (Unix time) и 32 бита для

наносекунд. Там несколько регистров для меток времени

и свое системное время System Time, возможно, что это

внутренние часы модуля IEEE1588 Ethernet, которые

тактируются частотой 50 MHz со стороны трансивера

LAN8720A. Я прав или ошибаюсь? Эти внутренние часы могут

синхронизироваться с внешними (мастер часы IEEE1588),

мой микроконтроллер в режиме Slave (PTP-клиент).

 

Не пойму еще один момент: после синхронизации

часов модуля IEEE1588 каким-то образом произойдет

(может, через прерывание) синхронизация часов модуля RTC?

 

Как они связаны? Может кто-нибудь ответить?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Про какой микроконтроллер вы говорите? Если про STM32F4, то:

1. Тактирование PTP таймера происходит от системного клока. Хотя это не имеет значения от чего. Важно, что по факту, частота тактирования PTP всегда асинхронна к истинному времени PTP таймера.

2. Синхронизацию с RTC в обе стороны напишите сами, просто занесением соответствующих значений в регистры

3. Все синхронизации высокой точности (микросекундной и субмикросекундной) внутренних процессов нужно осуществлять от PTP таймера, а не от RTC.

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У меня есть микроконтроллер с модулем RTC,

Что Вы так привязались к этому RTC??? Он Вам нужен только для хранения времени во время выключенного состояния МК. Как только МК включается, следует просто переписать время из RTC в один из системных таймеров (или PTP если там такой имеется) и брать время уже оттуда и синхронизировать уже этот таймер (корректируя соответственно и RTC конечно). А если связь по Ethernet есть всегда и не может пропадать, то RTC вообще не нужен - время будет получено после включения при первой же синхронизации.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Что Вы так привязались к этому RTC??? Он Вам нужен только для хранения времени во время выключенного состояния МК. Как только МК включается, следует просто переписать время из RTC в один из системных таймеров (или PTP если там такой имеется) и брать время уже оттуда и синхронизировать уже этот таймер (корректируя соответственно и RTC конечно). А если связь по Ethernet есть всегда и не может пропадать, то RTC вообще не нужен - время будет получено после включения при первой же синхронизации.

Просто странно как-то:

 

STM32F100 (старый МК), модуль RTC не имеет аппаратных часов-календаря, там просто 32-х разрядный таймер (Unix Time), значение которого с помощью стандартной библиотеки time.h пересчитывается в дату, время.

 

STM32F407 (новый МК ), модуль RTC имеет аппаратные часы-календарь, дату и время (с субсекндами, с разрешением по времени до примерно 30 мкс) можно брать из соответствующих регистров, при этом не нужна стандартная библиотека time.h И соответственно нет потерь времени на пересчет. Модуль RTC имеет функцию Time Stamp, т.е. метки времени с субсекундами (до 30 мкс), но это не те метки времени, которые используются в модуле Ethernet.

Я всегда брал время из регистров модуля RTC, в случае синхронизации корректировал регистр субсекунд.

 

Все путает наличие в STM32F407 модуля Ethernet c аппаратной поддержкой протокола IEEE1588 и в нем модуля TSU (Time Stamp Unit), вот эти метки времени хранятся в виде 64-х битного числа с фиксированной запятой 32.32, где старшие 32 бита - секунды (Unix Time), младшие 32 бита - наносекнды. И вроде как протокол синхронизации PTP позволяет синхронизировать время в формате 32.32, которое должно храниться где-то (как я понимаю в модуле Ethernet с поддержкой IEEE1588).

 

Если бы синхронизация часов в формате 32.32 проиводила бы к обнулению наносекунд, т.е. момент синхронизации совпадал бы с началом новой секнды, то в этот момент можно было бы синхронизировать и аппаратный RTC, у него после записи времени ЧЧ:ММ:СС обнуляется регистр субсекунд, и например, каждую секунду синхронизируем 32.32 и затем RTC. Т.е. по более точным часам синхронизируем менее точные (я использую время до 1 мс, мне наносекунды в журналах не нужны), при этом не тратим время на преобразование с помощью time.h.

 

Но я не знаю, как часто происходит синхронизация по PTP, ежесекундно или с каким -то другим периодом. Сервера точного времени с поддержкой PTP у меня нет, нет даже эмулятора протокола PTP. С тем же протоколом NTP все относительно просто - в Windows XP есть служба времени, она есть клиент для северов времени верхнего уровня и сервер для клиентов нижнего уровня. Т.е. запросы можно отправлять хоть Windows-у, хоть на какой публичный сервер в Интернете. А в случае с PTP должно быть оборудование с поддержкой этого PTP. И даже вроде как для Windows нет эмуляторов, т.к. сама Windows не есть операционная система реального времени. И спросить не у кого.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Как только МК включается, следует просто переписать время из RTC в один из системных таймеров (или PTP если там такой имеется) и брать время уже оттуда и синхронизировать уже этот таймер (корректируя соответственно и RTC конечно). А если связь по Ethernet есть всегда и не может пропадать, то RTC вообще не нужен - время будет получено после включения при первой же синхронизации.

Прецизионные часы в модуле Ethernet (PTP clock) есть и тактируются они частотой 168 МГц (вот откуда берется наносекундное разрешение по времени), а сам модуль Ethernet тактируется частотой 50 МГц, которая приходит от микросхемы LAN8720A. Т.е. PTP clock тактируются и в отсутствии подключения к интерфейсу Ethernet, с помощью этого интерфейса они синхронизируются с более точными (PTP сервер).

post-62159-1476081436_thumb.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Тогда зачем Вам вообще RTC сдался? Используйте только этот PTP- таймер и всё.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Тогда зачем Вам вообще RTC сдался? Используйте только этот PTP- таймер и всё.

Изначально я использовал RTC, который синхронизировался по RS485 (широковещательные запросы Modbus RTU). Это бюджетное решение (не требуется сервер точного времени). Затем я добавил интерфейс Ethernet, добавил протокол Modbus TCP, естественно, что пользователь, увидев интерфейс Ethernet задаст вопрос "а как синхронизировать время по при наличии сети Ethernet". Ответить "по Modbus TCP" или "широковещательными запросами по UDP от вот этой удивительной коробки с её нестандартным протоколом синхронизации, которой ни у кого нет" - будет глупостью. Да и вообще в случае интеграции девайса в какую-либо систему с наличием синхронизации в девайсе потребуется поддержка Precision Time Protocol (в промышленных сетях используется уже много лет).

Бывают случаи, когда систем синхронизации на удаленных необслуживаемых объектах нет и нет там Ethernet-а, поэтому придется брать время из RTC. Ну или добавлять в девайсы SNTP-клиенты и NTP-серверы и синхронизироваться по одним из внутренних часов девайса.

Изменено пользователем Pridnya

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1. Не надо удивительных коробок. Используйте SNTP. Сервера с SNTP доступны и недороги. Точность после 485-го вас более чем устроит.

2. Сделайте клиента SNTP на PTP таймере STM32F4. Так будет значительно проще, чем на RTC.

3. 1588 v2 - это микросекундная и субмикросекундная точность. Зачем она вам? Сервера с PTP нераспространены и дороги.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1. Не надо удивительных коробок. Используйте SNTP.

+1.

SNTP крайне прост. Сам наваял себе по-быстрому. Получилось около 150 строк.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1. Не надо удивительных коробок. Используйте SNTP. Сервера с SNTP доступны и недороги. Точность после 485-го вас более чем устроит.

2. Сделайте клиента SNTP на PTP таймере STM32F4. Так будет значительно проще, чем на RTC.

3. 1588 v2 - это микросекундная и субмикросекундная точность. Зачем она вам? Сервера с PTP нераспространены и дороги.

Спасибо! Вот уже разбираюсь с UDP-клиентом, затем перепишу его под SNTP-клиент. А таки идея хорошая (использовать PTP таймер).

Но все же нужно и PTP знать. Промышленные сети, например на цифровых подстанциях стандарта IEC61850 используют PTP для синхронизации всего оборудования, на этих подстанциях могут устанавливаться цифровые датчики тока и напряжения, которые данные (выборки сигнала) передают по оптоволокну (Ethernet), там даже сообщения о срабатывании сигнализаций, защит, каких-то событиях идут только в цифровом виде с метками времени. И без PTP в таких сетях никак.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо! Вот уже разбираюсь с UDP-клиентом, затем перепишу его под SNTP-клиент. А таки идея хорошая (использовать PTP таймер).

Но все же нужно и PTP знать. Промышленные сети, например на цифровых подстанциях стандарта IEC61850 используют PTP для синхронизации всего оборудования, на этих подстанциях могут устанавливаться цифровые датчики тока и напряжения, которые данные (выборки сигнала) передают по оптоволокну (Ethernet), там даже сообщения о срабатывании сигнализаций, защит, каких-то событиях идут только в цифровом виде с метками времени. И без PTP в таких сетях никак.

Если хотите генерить Sample Values, тогда да. Если только принимать SV от цифровых трансформаторов - тогда оно вам не нужно.

Сообщения MMS никак не связаны с PTP синхронизацией, если вы только не желаете привязать с субмикросекундной точностью что-то свое. Видимо только SV генерация, либо прием SV и совмещение его с собственными мгновенными значения аналогов потребуют PTP.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если хотите генерить Sample Values, тогда да. Если только принимать SV от цифровых трансформаторов - тогда оно вам не нужно.

Сообщения MMS никак не связаны с PTP синхронизацией, если вы только не желаете привязать с субмикросекундной точностью что-то свое. Видимо только SV генерация, либо прием SV и совмещение его с собственными мгновенными значения аналогов потребуют PTP.

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

Я что-то не пойму, а как тогда устройства защиты обмениваются сообщениями о событиях, если они не привязаны к реальному времени. Как же тогда определить последовательность событий в случае аварии?

А так вообще один из ведущих российских производителей в руководстве по синхронизации (в девайсах заявлена поддержка PTP и я сразу подумал, что точность субмикросекундная) приводит таблицу, где наносекундная точность протокола PTP "округляется" до 1 мс.

post-62159-1476275188_thumb.png

Изменено пользователем Pridnya

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Я что-то не пойму, а как тогда устройства защиты обмениваются сообщениями о событиях, если они не привязаны к реальному времени. Как же тогда определить последовательность событий в случае аварии?

А так вообще один из ведущих российских производителей в руководстве по синхронизации (в девайсах заявлена поддержка PTP и я сразу подумал, что точность субмикросекундная) приводит таблицу, где наносекундная точность протокола PTP "округляется" до 1 мс.

Для синхронизации сообщений и прочих событий в большинстве случаев достаточно точности SNTP. Точность округляется именно по этой причине - никому для синхронизации событий субмикросекундная точность не нужна. Для синхронизации мгновенных отсчетов нужна микросекундная точность, а этим в Ethernet наиболее перспективным является PTP.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...