ATNEL tech-forum
https://forum.atnel.pl/

Znaczniki czasowe w sieci CAN ?
https://forum.atnel.pl/topic21273.html
Strona 1 z 1

Autor:  wat1970 [ 12 wrz 2018, o 15:37 ]
Tytuł:  Znaczniki czasowe w sieci CAN ?

Witam

Przy okazji zabaw z kontrolerem CAN natrafiłem w nim na funkcjonalność nazwaną Timestaping (znaczniki czasowe) . Te znaczniki czasowe generuje w kontrolerze CAN timer 32 bitowy odpalany na życzenie użytkownika. Wartość znacznika odczytana z timera jest wysyłana z ramką CAN. Po stronie odbiorcy odczytamy sobie te wartość ale teraz pytanie do czego to wykorzystać w praktyce ? Wiem , że ogólnie synchronizacja czasowa w sieci etc ale czy byłby ktoś uprzejmy wyjaśnić to jak chłop chłopu przy piwie :)

Z góry dziękuję.

Autor:  abel11 [ 12 wrz 2018, o 17:32 ]
Tytuł:  Re: Znaczniki czasowe w sieci CAN ?

Hej.
Z tego dobrodziejstwa (jeszcze) w CAN nie korzystałem ale swego czasu w projekcie z RS485 FD dodałem właśnie znaczniki czasu, czyli stan licznika 32 bit wysyłany razem z ramką danych lub jako samodzielne dane.
Problemem, który zmusił mnie do zastosowanie timestamp'ów była synchronizacja czasu i punktu pracy kilku urządzeń. W telegraficznym skrócie kilka generatorów musiało pracować synchronicznie (lub w sterowany sposób asynchronicznie) i jakoś wymieniać się informacjami takimi jak obciążenie (żeby je równo rozłożyć), częstotliwości pracy, awaria tranzystorów mocy itp. Przy starcie urządzenia master synchronizował sobie slave z wykorzystaniem znaczników czasu (urządzenia startowały z różnym opóźnieniem), potem MST zarządzał self testy i mierzył czas wykonania dla każdego SLV (na podstawie znaczników) - zbyt długi self test wiadomo zwiastował problemy (najczęściej przewody od RS'a).
Nie pamiętam teraz jaka była dokładnie rozdzielczość licznika czasu ale coś w granicach 1-10ms przerwanie tylko z rozkazem inkrementacji rejestru i z wykorzystaniem CTXT (dodatkowe akumulatory ograniczające prolog i epilog przerwania). Częstotliwość przerwań była wymuszona wymaganą dokładnością synchronizacji.

Autor:  0livaw [ 12 wrz 2018, o 19:15 ]
Tytuł:  Re: Znaczniki czasowe w sieci CAN ?

Myślę że można by to wykorzystać do funkcji "HEARTBEAT" czyli kontroli czy dane urządzenie żyje na magistrali. Spotkałem się z taką funkcją w urządzeniach przemysłowych, np. falowniku.

Autor:  wat1970 [ 13 wrz 2018, o 10:17 ]
Tytuł:  Re: Znaczniki czasowe w sieci CAN ?

Czyli z grubsza jeśli chcemy jak zrozumiałem synchronizować urządzenia w węzłach CAN od chwili startu lub wykonania jakiejś czynności, to nadzorca czasu mierzy swój odcinek czasu od startu a urządzenie podlegające synchronizacji mierzy swój odcinek i porównuje go do nadzorcy. Z porównania wychodzi czy należy zwolnić proces czy przyspieszyć.

Dobra dziękuję chłopaki coś tam zaczyna świtać pod czaszką :)

Autor:  abel11 [ 13 wrz 2018, o 18:14 ]
Tytuł:  Re: Znaczniki czasowe w sieci CAN ?

Coś w ten deseń, chociaż jeśli chcesz sobie poćwiczyć z znacznikami czasu to proponuje "zabawę" którą sobie wymyśliłem jak nie mogłem ogarnąć synchronizacji.
1. Master i slave powinny mieć oscylatory stabilizowane kwarcem (albo dokładne wewnętrzne).
2. Master synchronizuje zegar (licznik) slave'ów z swoim.
3. Każdy rozkaz roboczy (włączenie LED itp.) jest dodatkowo powiększony o czas wykonania ("godzinę" startu).
Działało to w ten sposób, że po zsynchronizowaniu zegarów (zawartości rejestrów z danymi zliczania czasu) master do każdego rozkazu dołączał informację przy jakiej wartości licznika czasu rozkaz ma zostać wykonany. Może śmiesznie to zabrzmi ale zainspirował mnie do tego jakiś niskobudżetowy film szpiegowski gdzie bohaterzy synchronizowali zegarki przed akcją :P Do takiego algorytmu dodawałem symulowane błędy komunikacji itp. żeby sprawdzić jak długie powinno być okno wymiany danych (czas do wykonania) i w ogóle wszystkie głupoty jakie przyszły mi do głowy.
Powyższa metoda jest dosyć powolna ale skuteczna o ile nie sieć nie wpadnie w bezustanne odpytywanie uszkodzonego slave.
Powodzenia z CAN.

Strona 1 z 1 Strefa czasowa: UTC + 1
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/