WAŻNE:
Mechanizm arbitrażu CAN
Dowolny kontroler CAN może rozpocząć transmisję kiedy wykryje stan bezczynności magistrali.
Dwa lub więcej kontrolerów zaczną transmitować wiadomość w tym samym czasie. Konflikt jest rozwiązywany w następujący sposób:
Arbitraż jest dokonywany na całym polu arbitrażu w trakcie jego nadawania. Po zakończeniu dokładnie jeden nadajnik zostaje na magistrali. Węzeł ten kontynuuje transmisję jak gdyby nic się nie stało. Inne, potencjalne nadajniki będą mogły próbować retransmitować swoje wiadomości wówczas, gdy magistrala stanie się dostępna. Nie ma strat czasowych na proces arbitrażu. Transmitujący węzeł monitoruje magistralę w chwili wysyłania. Jeżeli wykryje poziom
dominujący wówczas, kiedy sam wysyła poziom niski, to natychmiast opuszcza proces i staje się odbiornikiem.
Producent/Konsument (Zdarzenia)
rozdziela zadania tworzące dane i analizujące je z różną szybkością. Równoległe pętle zawierają kod produkujący dane (np. DAQ) i je analizujący lub zapisujący. Kolejkowanie i buforowanie danych w pamięci pomiędzy pętlami. -produkuje dane w kolejce do wykonania. Reaguje na asynchroniczne zdarzenia interfejsu użytkownika. Rozbicie na dwie pętle (Zdarzenie, Obsługa Zdarzenia) pozwala na rozdzielenie odbioru zdarzenia od obliczeń, co nie blokuje
interfejsu użytkownika.
Standardowa Maszyna Stanów
Obsługa każdego stanu określa, na podstawie obliczeń, do jakiego stanu przejść dalej.Maszyna stanów : Zawiera pętlę While, strukturę warunkową Case wewnątrz pętli i rejestr przesuwny. Obsługa każdego stanu odbywa się w innym diagramie struktury Case. Rejestr przesuwny przekazuje nowy stan do następnego obrotu pętli. Kod podejmujący decyzję zawiera:- Funkcjonalność stanu (wykonanie), a później: Podjęcie decyzji o następnym stanie (transition).
• Master/Slave a Producent/Konsument
Pętla główna („Master”) wykonuje się zawsze. Przekazuje do pętli „Slave” (może być kilka)
polecenie (notifier) wykonania kodu. Pętla „Slave” wykonuje się do chwili zakończenia
obliczeń i ponownie czeka na polecenie. P./K. Jest używana wówczas, gdy pętla „Master” produkuje dane (zazwyczaj z różną prędkością), które muszą być analizowane wówczas, gdy są dostępne.
POZOSTAŁE I POJĘCIA:
Czas odpowiedzi systemu (oprogramowania) jest to czas pomiędzy wejściem danych do systemu, a pojawieniem się odpowiedzi na odpowiednich wyjściach z niego.
System czasu rzeczywistego jest systemem (oprogramowaniem), który musi zapewniać z góry określony czas reakcji; w przeciwnym razie funkcjonowanie systemu może grozić awarią lub poważnymi konsekwencjami.
Soft-real-time system: wydajność jest ograniczona, ale system nadal
pracuje pomimo nie utrzymania reżimu czasowego.
Hard-real-time system: praca systemu jest niemożliwa w przypadku
niedotrzymania reżimu czasowego.
Typowy system czasu rzeczywistego wykonuje zdefiniowane zadania w
określonym czasie lub odpowiada na zewnętrzne zdarzenia w określonym
lub nieokreślonym czasie. Zadania te powinny być wykonane w ściśle
określonym czasie (hard real-time system) lub w „rozsądnym” przedziale
czasowym (soft real-time system). Niedotrzymanie terminu skutkuje
odpowiednią reakcją systemu (ostrzeżenie o błędzie).
System sterowania cyfrowego okresowo, ze stałym krokiem skanowane są przetworniki sprzężenia zwrotnego, obliczane są parametry sterujące i ustawiane są wartości wyjściowe sygnałów sterujących.
Sterowanie proporcjonalne: sterowanie = wzmocnienie x odchyłka
• Sterowanie proporcjonalno-całkujące: sterowanie = wzmocnienie x
odchyłka + wzmocnienie całkujące x całka (w dziedzinie czasu) z
odchyłki
• Zazwyczaj system sterowania cyfrowego jest systemem typu hard
real-time. Cykl sterowania musi być wykonany w założonym czasie.
Programowe sterowanie kolejność instrukcji wykonywanych przez
CPU (algorytm).
• Zdarzenie: wystąpienie zjawiska powodującego zmianę kolejności
wykonywania sekwencji programowej – zmiana algorytmu.
• Zdarzenie synchroniczne występuje w przewidywalnym miejscu
algorytmu
• Zdarzenie asynchroniczne występuje w nieprzewidywalnym
momencie pracy programu
• Przerwanie (Interrupt): Sygnał dla CPU informujący o określonym
zdarzeniu asynchronicznym.
– Przerwanie softwarowe: np. dzielenie przez zero.
– Przerwanie sprzętowe: zgłaszane zewnętrznie na linii przerwań
procesora.
Determinizm — określa stopień pewności w jaki system odpowiada
na zdarzenia zewnętrzne lub wykonuje operacje w założonym czasie
(patrz jitter).
Wysoki determinizm charakteryzujący systemy czasu rzeczywistego
gwarantuje zakończenie obliczeń lub operacji w założonym czasie.
Systemy deterministyczne są przewidywalne. Systemy czasu
rzeczywistego mogą zagwarantować, że obliczenia (operacje) zawsze
zostaną wykonane w określonym czasie.
• Opóźnienie (Latency)— czas wymagany na odpowiedź na zdarzenie
lub czas pomiędzy wejściem i wyjściem. Systemy deterministyczne
nadal mogą mieć dużą latencję. Określenie największego opóźnienia
(najgorszy przypadek).
• Kod czaso-krytyczny (Time Critical Code) — kod, który musi być
wykonany w określonym czasie. Kod taki ma zazwyczaj wysoki
priorytet.
• Priorytet — charakterystyka określająca kiedy fragment kodu lub
pętla powinna się wykonać w stosunku do pozostałego programu
Wielowątkowość — zdolność do przełączania się pomiędzy
zadaniami. Pozwala na podział aplikacji na niezależne zadania (wątki)
o różnych priorytetach