Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki

KURS HOME ASSISTANT

Chcesz zautomatyzować swój dom bez skomplikowanego kodowania?
Zastanawiasz się nad wyborem sprzętu, oprogramowania i aplikacji?
Od czego zacząć przygodę z HA w 2025? Co będzie najlepsze na start?

Nasz kurs Home Assistant nauczy Cię krok po kroku, jak łatwo zautomatyzować swój dom i oszczędzić na rachunkach za prąd i ogrzewanie. Bez chmur, bez zbędnych abonamentów. Twoja przygoda z Home Assistant zaczyna się tutaj!

↓↓↓

    Szanujemy Twoją prywatność. Możesz wypisać się w dowolnym momencie.




    Teraz jest 1 maja 2025, o 03:30


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 5 ] 
    Autor Wiadomość
    PostNapisane: 12 wrz 2018, o 15:37 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 06 gru 2013
    Posty: 121
    Pomógł: 16

    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ę.

    _________________
    http://strefapic.blogspot.com



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 12 wrz 2018, o 17:32 
    Offline
    Użytkownik

    Dołączył(a): 05 wrz 2017
    Posty: 169
    Pomógł: 31

    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 postu otrzymał pochwałę


    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 12 wrz 2018, o 19:15 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 08 maja 2013
    Posty: 175
    Lokalizacja: Kraków
    Pomógł: 9

    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.

    _________________
    Rozwój i utrzymywanie Oprogramowania



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 13 wrz 2018, o 10:17 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 06 gru 2013
    Posty: 121
    Pomógł: 16

    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ą :)

    _________________
    http://strefapic.blogspot.com



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 13 wrz 2018, o 18:14 
    Offline
    Użytkownik

    Dołączył(a): 05 wrz 2017
    Posty: 169
    Pomógł: 31

    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.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    Wyświetl posty nie starsze niż:  Sortuj wg  
    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 5 ] 

    Strefa czasowa: UTC + 1


    Kto przegląda forum

    Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 3 gości


    Nie możesz rozpoczynać nowych wątków
    Nie możesz odpowiadać w wątkach
    Nie możesz edytować swoich postów
    Nie możesz usuwać swoich postów
    Nie możesz dodawać załączników

    Szukaj:
    Skocz do:  
    cron
    Sitemap
    Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
    phpBB SEO