Implementacja protokołu PTP IEEE 1588 V2 na mikrokontrolerze Kinetis K60
W niniejszym artykule opisana została implementacja protokołu PTP (Precision Time Protocol) IEEE 1588 V2 na mikrokontrolerze Kinetis K60 firmy Freescale. Użytą platformą sprzętową jest zestaw ewaluacyjny TWR-K60N512-KIT. Oprogramowanie demonstracyjne działa pod systemem operacyjnym czasu rzeczywistego Freescale MQX i wykorzystuje bibliotekę Freescale MQX IEEE 1588 Communication Library. Biblioteka oparta jest na protokole IEEE 1588 V2 autorstwa firmy IXXAT Automation Gmbh.
W artykule zostały omówione następujące zagadnienia:
- Podstawy protokołu IEEE 1588
- Implementacja protokołu IEEE 1588 w układzie Kinetis K60 oparta na bibliotece MQX1588
- Opis aplikacji demonstracyjnej IEEE 1588 przeznaczonej dla zestawu TWR-K60N512.
Opis standardu IEEE 1588
Standard IEEE znany jest jako protokół precyzyjnej synchronizacji zegara dla sieciowych systemów kontrolno-pomiarowych, a także jako protokół czasu precyzyjnego (Precision Time Protocol – PTP). IEEE 1588 PTP umożliwia osiągnięcie dokładnej synchronizacji zegara rozprowadzanego poprzez sieć Ethernet. Odbywa się to za pomocą procesu, podczas którego rozproszone węzły wymieniają wiadomości z informacją o czasie.
Technologia zawarta w tym standardzie została pierwotnie opracowana przez Agilent Technologies i była wykorzystywana w rozproszonych systemach pomiarowo-kontrolnych. Wyzwaniem okazała się wzajemna synchronizacja urządzeń pomiarowych połączonych siecią pod względem czasu, umożliwiając im zapisanie zmierzonych danych w momencie odniesionym do czasu całego systemu. Na podstawie tego czasu zmierzone wartości mogą zostać ze sobą powiązane czasowo.
Typowe zastosowania synchronizacji czasu z IEEE 1588 obejmują:
- Wrażliwe czasowo usługi telekomunikacyjne, które wymagają precyzyjnej synchronizacji czasu między węzłami sieci.
- Przełączniki sieci przemysłowej, które synchronizują czujniki i urządzenia wykonawcze za pomocą jednego przewodu, kontrolując automatyczny proces montażu w fabrykach.
- Systemy przesyłowe, które synchronizują przełączanie rozproszonych sieci wysokiego napięcia w celu płynnego przesyłu mocy.
- Urządzenia pomiarowo-testowe, które muszą utrzymać precyzyjną synchronizację czasową z urządzeniami podlegającymi testom w wielu różnych środowiskach pracy.
- Drukarki, współpracujące ze sobą systemy robotyki
W tych zastosowaniach wymagana jest precyzyjna synchronizacja między urządzeniami o dokładności poniżej mikrosekundy. Wyróżniającą cechą protokołu IEEE 1588 jest fakt, iż tak wysoka precyzja jest osiągana przy pomocy zwykłej sieci Ethernet przy wykorzystaniu standardowych ramek.
To rozwiązanie pozwala niemal dowolnemu urządzeniu pracować w sieciach o wysokim stopniu synchronizacji, które są proste w obsłudze i konfiguracji.
Inne istotne zalety protokołu IEEE 1588 obejmują:
- Czasy zbieżności poniżej minuty dla synchronizacji lepszej od jednej mikrosekundy pomiędzy zewnętrznymi, rozproszonymi urządzeniami o różnych zegarach, rozdzielczości i stabilności
- Automatyczna konfiguracja i segmentacja. Każdy węzeł wykorzystuje algorytm BMC (Best Master Clock) do ustalenia najlepszego zegara w swym segmencie. W każdym węźle PTP przechowywany jest określony zbiór informacji o nim. Dane te są przesyłane do innych węzłów za pomocą pakietów synchronizacyjnych. Na ich podstawie pozostałe węzły są w stanie zsynchronizować własną bazę danych z parametrami bieżącego węzła nadrzędnego i dostroić zegary. Cykliczne wykonywanie BMC pozwala również na dynamiczną rekonfigurację sieci – możliwe jest dołączanie i usuwanie węzłów w czasie pracy.
- Prosta konfiguracja i praca przy niskich nakładach obliczeniowych i niewielkim obciążeniu sieci
Zasada synchronizacji
Zegary sieci są zorganizowane w hierarchię master-slave. IEEE 1588 wyróżnia zegar nadrzędny (master), a następnie tworzy dwukierunkowe połączenie, przez które węzeł nadrzędny wysyła wiadomości do węzłów podrzędnych, by zainicjalizować synchronizację. Ta sekwencja jest powtarzana w dalszej części sieci, by uzyskać i utrzymać synchronizację zegarów.
Proces rozpoczyna się, gdy jeden z węzłów (zegar nadrzędny) przesyła pakiet synchronizacyjny zawierający oczekiwany czas transmisji. Dokładny czas transmisji pakietu synchronizacyjnego jest przechwytywany przez zegar i transmitowany w następnym pakiecie. Odbiorca może wówczas porównać informacje o czasie nadania zawartym w obu pakietach z własnym zegarem i oszacować różnicę między zegarem nadrzędnym, a własnym zegarem (rysunek 1). Wiadomości synchronizacyjne i następujące po nich są wysyłane jako multicast. Niektóre systemy zgodne z IEEE 1588 umożliwiają sprzętowy pomiar czasu i umieszczanie wyników w wiadomości synchronizującej. W tym wypadku drugi pakiet nie jest potrzebny. Jest to tak zwany jednokrokowy (one-step) tryb pracy.
Rys. 1. Pomiar przesunięcia i opóźnienia – wiadomość synchronizująca i następująca po niej druga wiadomość
Czas propagacji pakietu jest określany cyklicznie w drugim procesie transmisyjnym pomiędzy modułem podrzędnym a nadrzędnym (pakiety opóźnienia). Moduł podrzędny może skorygować swój zegar i dostosować go do aktualnego czasu propagacji na magistrali (rysunek 2). Wiadomości delay_req oraz delay_resp są transmitowane od punktu do punktu, ale nadawane w trybie multicast dla uproszczenia.
Rys. 2. Pomiar przesunięcia i opóźnienia – wiadomości o opóźnieniu
Na rysunku 3 opisano przykładowy scenariusz synchronizacji IEEE 1588 (jeden cykl) i obliczanie chwilowego przesunięcia i opóźnienia pomiędzy węzłem nadrzędnym a podrzędnym.
Rys. 3. Sekwencja wiadomości synchronizacyjnych IEEE 1588
Więcej informacji o standardzie IEEE 1588 można uzyskać na stronie internetowej National Institute of Standards and Technology.