Sterowanie urządzeniami w czasie rzeczywistym przez Ethernet. Część 2

| Technika

Ethernet to w przemyśle, w tym w zastosowaniach wymagających transmisji w czasie rzeczywistym, bardzo popularny rodzaj sieci komunikacyjnej. W pierwszej części poświęconego mu artykułu omówione zostały przykłady układów sterowania oraz zasady działania wybranych sieci real-time. Jako kontynuację przedstawiamy opis technologii synchronizacji z wykorzystaniem Precision Time Protocol oraz możliwości pracy synchronicznej urządzeń.

Sterowanie urządzeniami w czasie rzeczywistym przez Ethernet. Część 2

SPOSOBY NA CZAS RZECZYWISTY

Kilka zabiegów technicznych pozwoliło uczynić z Ethernetu sieć zbliżoną w charakterze do deterministycznej. Pierwszym z nich jest implementacja komunikacji master-slave lub klient-serwer na poziomie aplikacji. Przykładem takiego rozwiązania jest sieć Ethernet POWERLINK. Drugim sposobem jest redukcja kolizji poprzez zastosowanie wielu switchy oraz nadawania priorytetów ramkom - te o wyższych priorytetach będą przesyłane znacznie szybciej, a więc w sposób bliższy deterministycznemu, o ile tylko przepustowość łącza pozwala na sprawny ich transfer.

Jedynym sposobem, aby upewnić się, że tak jest, są testy praktyczne już po instalacji urządzeń. Obliczenie maksymalnego czasu transferu po zastosowaniu priorytetów polega na zmierzeniu maksymalnego czasu, jaki potrzebny jest na przesłanie ramki o niskim priorytecie (pomijając czas oczekiwania) pomiędzy danymi punktami sieci i dodaniu go do maksymalnego czasu przesyłania ramki o wysokim priorytecie pomiędzy danymi węzłami sieci.

Wynika to z faktu, że ramka o wyższym priorytecie będzie oczekiwała na przesłanie tylko wtedy, gdy ramka o niższym będzie już w trakcie wysyłania. Jeżeli w urządzeniu zbuforowane zostanie kilka ramek, niezależnie od kolejności ich nadejścia pierwszą wysyłaną zaraz po zwolnieniu łącza będzie ramka o najwyższym priorytecie.

Naturalnie przy liczeniu czasu transmisji należy uwzględnić wszystkie opóźnienia wprowadzane przez switche będące na drodze pomiędzy uwzględnianymi końcówkami sieci. Priorytety stosowane są w sieciach Ethernet/IP, a użycie switchy w celu rozproszenia ruchu i skrócenia wspólnych odcinków sieciowych dla wielu urządzeń możliwe jest w dowolnej sieci Ethernet.

Ostatnią z metod jest zastosowanie specjalizowanych układów ASIC lub odpowiednio zaprogramowanych FPGA, które wprowadzają podział czasu przesyłu danych na okna czasowe dla pakietów o różnych priorytetach. Przykładem takich rozwiązań są sieci Sercos III i Profinet. W przypadku tej drugiej zastosowano trzy okna czasowe - jedno dla danych asynchronicznych przesyłanych natychmiastowo, jedno dla danych synchronicznych, które przesyłane są w regularnych odstępach czasowych i okno dla standardowych pakietów ethernetowych.

Jednakże sprawność tego mechanizmu zależy od poprawnego przydzielenia typów komunikatów poszczególnym przesyłanym danym. Naturalnie zastosowanie Profinetu, w którym wszystkie pakiety przesyłane by były w trybie asynchronicznym (IRT), będzie mijało się z celem.

Precision Time Protocol

Rys. 1. Przebieg standardowego procesu synchronizacji w protokole PTP

IEEE1588, określany także jako Precision Time Protocol (PTP), to standard określający parametry synchronizacji urządzeń podłączonych do sieci Ethernet. Został on opracowany przez amerykański NIST i umożliwia precyzyjną synchronizację z dokładnością do okresów nanosekundowych.

Procedura wykorzystywana w PTP polega na wyznaczeniu jednego urządzenia jako zegara nadrzędnego, który służy do przekazywania informacji o aktualnym czasie wszystkim pozostałym urządzeniom w sieci. Przewidziano w niej automatyczny wybór najlepszego zegara w sieci, bazując na skategoryzowanych klasach zegarów zapisanych w pamięci urządzeń zgodnych z PTP.

Urządzenie z najbardziej dokładnym czasomierzem nadaje pakiety typu multicast, które odbierane są przez wszystkie wymagające synchronizacji urządzenia podrzędne. Na początku przeprowadzana jest korekcja offsetu (przesunięcia) pomiędzy zegarem nadrzędnym (master), a zegarem urządzenia podrzędnego (slave). Odbywa się to zgodnie ze schematem przedstawionym na rysunku 3.

Urządzenie master cyklicznie nadaje unikalne komunikaty synchronizacyjne z określonymi interwałami czasowymi, których długość domyślnie wynosi 2 sekundy. Wiadomości te zawierają przybliżoną wartość dokładnego czasu nadawania komunikatów. Następnie drugi mechanizm koryguje uzyskaną synchronizację poprzez kalkulację opóźnień w odbiorze przesyłanych wiadomości. Precyzja, z jaką dokonywane są te obliczenia, zależy od zastosowanego sprzętu i sposobu implementacji protokołu.

Im w wyższej warstwie został on umieszczony, tym mniej dokładna będzie synchronizacja. Drugi wspomniany mechanizm polega na wysłaniu pakietu z danymi na temat dokładnego czasu nadania pierwszej wiadomości synchronizacyjnej. Dokładny czas mierzony jest na podstawie zegara urządzenia master i zależy od tego, jak długo pakiet musiał oczekiwać na dostęp do łącza sieciowego.

Rys. 2. Proces synchronizacji PTP z pomiarem opóźnienia

Po odebraniu obydwu wiadomości urządzenia podrzędne obliczają ponownie opóźnienia i korygują swój zegar. Zegary wszystkich urządzeń w sieci są od teraz zsynchronizowane z dokładnością do czasu, jaki był potrzebny, aby pakiety dotarły do poszczególnych odbiorców.

Kolejna faza synchronizacji polega na redukcji opóźnienia wprowadzanego przez samo łącze. W tym celu urządzenia slave wysyłają pakiet delay request, który jest żądaniem potwierdzenia ze strony zegara nadrzędnego. Urządzenie master odpowiada na ten pakiet, a czas, jaki upływa od momentu wysłania żądania do uzyskania odpowiedzi, dzielony jest przez dwa i uznawany za okres trwania przesyłu pakietu w jedną stronę.

W tym samym czasie urządzenie podrzędne oblicza dokładny czas, w którym nadane zostało żądanie, a urządzenie master umieszcza w komunikacie zwrotnym informację o dokładnym momencie obioru pakietu z żądaniem.

Pomiar czasu przesyłu pakietów dokonywany jest nieregularnie, z większymi odstępami czasowymi najczęściej losowanymi z zakresu od 4 do 60 sekund. Zbyt częste obliczanie tego czasu wymagałoby poświęcenia dosyć dużego pasma sieci i mocy obliczeniowej podłączonych urządzeń.

Warto zaznaczyć, że w metodzie tej zakłada się, że opóźnienia w przesyle komunikatów w jedną i w drugą stronę są mniej więcej identyczne. W przeciwnym wypadku dokładność synchronizacji będzie mniejsza. Istotna jest też minimalizacja wszelkich nieregularnych opóźnień w przetwarzaniu danych wysyłanych i odbieranych przez sieć - stąd implementacje na najniższych poziomach oferują największą precyzję pomiarów.

PRACA SYNCHRONICZNA

Kolejnym problemem do rozwiązania jest wymuszenie pracy synchronicznej dla wszystkich sterowanych urządzeń. Jest rzeczą niezbędną, aby każdy z elementów wykonawczych pracował w odniesieniu do tego samego czasu - bez tego poprawna koordynacja ruchu nie byłaby możliwa. Przykładowo w przypadku drukowania z prędkością 600 m na minutę przy dokładności nie gorszej niż 10 μm maksymalne różnice w czasie synchronizacji nie mogą przekroczyć 1 μs.

Synchronizacja jest typowo realizowana na jeden z dwóch sposobów. Pierwszy polega na wysyłaniu specjalnej ramki lub ramek z odpowiednim wzorcem w określonych odstępach czasowych. Odebranie takiej ramki generuje impuls zegarowy, którego niedokładność jest dodatkowo redukowana poprzez filtrację za pomocą pętli fazowej PLL. Rozwiązanie to stosowane jest w sieciach Sercos III i Ethernet POWERLINK.

Drugim, dosyć popularnym sposobem jest skorzystanie z protokołu IEEE1588, który teoretycznie ma pozwalać na synchronizację czasu z dokładnością do nanosekund. Protokół ten polega na synchronizacji wszystkich urządzeń za pomocą zegara nadrzędnego. Zadanie to może być realizowane na różnych poziomach, począwszy od najniższego - sprzętowego, a na warstwie aplikacji kończąc. Naturalnie najbardziej dokładne są rozwiązania bazujące na warstwie sprzętowej, gdyż czas potrzebny na dodatkowe obliczenia związane z korekcją sygnału zegarowego jest najkrótszy. Szczegółowy opis protokołu IEEE1588 zamieszczony został w ramce.

CZAS TRANSMISJI

Ostatnią kwestią do rozważenia w przypadku stosowania sieci Ethernet w aplikacjach czasu rzeczywistego jest oszacowanie całkowitego czasu transmisji, który definiowany jest jako czas od momentu wysłania danych do ich otrzymania przez odbiorcę. Jak zostało to dotąd pokazane, istnieje wiele przyczyn powstawania opóźnień w transmisji.

W przypadku systemów, gdzie wymagane są dane zwrotne na temat aktualnego stanu urządzeń tylko w celach informacyjnych, przykładowo po to, aby dane wyświetlić na ekranie lub wykryć ewentualną usterkę, czas transmisji nie jest aż tak istotny. Dużo bardziej wymagające są układy regulacji, czyli te, które działają w zamkniętej pętli sprzężenia zwrotnego. Dla tych drugich konieczne może być niekiedy zastosowanie łączy o wyższych prędkościach transmisji - np. interfejsów do sieci gigabitowych, które są coraz częściej dostępne na rynku automatyki przemysłowej.

Podsumowując, zdolność Ethernetu do pracy w systemach real-time może wymagać zastosowania kilku rozwiązań technologicznych. Zaimplementowanie komunikacji master-slave w przypadku łączy pracujących w trybie half-duplex, czyli takich, na których transmisja może odbywać się tylko w jedną stronę naraz jest dobrym sposobem na uzyskanie pracy synchronicznej. Świetną metodą jest skorzystanie z protokołu IEEE1588, szczególnie gdy dostępne urządzenia mają zaimplementowaną jego obsługę sprzętową.

Zastosowanie priorytetów ramek nie jest kosztowne, ale nie w pełni redukuje wszystkie opóźnienia związane z oczekiwaniem na przesłanie mniej ważnych pakietów. Niemniej wszystkie te metody stosowane mogą być równocześnie, co powinno pozwolić w pełni dostosować sieć Ethernet nawet do najbardziej ostrych wymagań komunikacji w czasie rzeczywistym i wykorzystania jej w różnorodnych tego typu aplikacjach.

Marcin Karbowniczek,
Zbigniew Piątek