Slow-scan, a sterowanie i kontrola urządzeń na kolei (raz jeszcze)
Funkcje i opis systemu
Na polecenie operatora dostosowywać ustawienie semaforów i punktów, tak
by zapewnić bezpieczny przejazd pociągów. System ma również uchronić
operatora przed takim skierowaniem pociągów, które mogłoby doprowadzić
do kolizji.
Rys. 1
SSI (Solid State Interlocking) - system kontrolujacy
TFM (Track-side Functional Modules) - moduły przytorowe (sterujace
mechanizami, np. semaforem, zwrotnica)
Wymagania stawiane systemowi
Ze względów bezpieczeństawa wymagane jest, by SSI szybko wykrywał
uszkodzenia, zarówno na łączu, jak i w modułach przytorowych.
Jak to działa?
SSI odpytuje wszystkie moduly w ustalonej kolejności raz na sekunde.
SSI wysyła wiadomość (TFM-adres, stan) i czeka kilka milisekund na
potwierdzenie. Taki sposób działania zapewnia szybkie wykrywanie błędów,
jednak wymaga szybkiego łącza.
Problem
Ze względu na duże odległości pomiędzy modułami przytorowymi,
połączenie ich szybkim łączem jest bardzo kosztowne. W związku z tym
rozpoczęto prace nad zastąpieniem szybkiego łącza wolniejszym i
tańszym łączem. System ten nazwano Slow-Scan.
Rozwiązanie
Rys. 2
SPC - konwerter protokołu po stronie SSI
TPC - konwerter protokołu po stronie modułów
Funkcje SPC:
- odebrać wiadomość od SSI
- porównać wiadomość z zapmietanym stanem, jeśli się zmieniła to
zapamietać i przesłać wolnym łączem do TPC
- odpowiedzieć SSI ze stanem z pamięci lokalnej.
- sprawdzić poprawność działania wolnego łącza
Funkcje TPC:
- odebrać wiadomości ze stanem przez wolne łącze i przechowywać je
- emulować SSI, czyli wysyłać wszystkie przechowywane wiadomości,
przy tyknięciu zegara
- odbierać wiadomości od modułów przytorowych, porównywać z
zapisanym stanem, a ewentualne zmiany przekazywać do SPC wolnym
łączem
- sprawdzić poprawność działania wolnego łącza
To była (mam nadzieję szybka) powtórka :)
Modelowanie w UPPAALu
Zegar:
Czemu jednak zegar się przydaje?
SSI (Solid State Interlocking):
TFM (Track Functional Module):
TPC (TFM-side Protocol Converter):
SPC (SSI-side Protocol Converter):
A w CWB potrzebne były 3 oddzielne procesy:
I łącze:
Wrażenia z modelowania:
- Pewne wady interfejsu użytkownika - prowadzą do łatwego
popełniania głupich błędów
- Bardzo prosto wyszukuje się błędy w systemie w trakcie
budowy. Podstawą dla powyższego systemu był brak zakleszczeń
(deadlocków). Sprawdzenie własności w weryfikatorze, następnie
przejrzenie błędnego przebiegu.
- Dzięki zegartestowy, udało mi się wychwycić niepożądane
zachowanie systemu (zbędne ruchy czasu do przodu)
- Kłopot z dodaniem nowego miejsca. Przerabianie strzałek.
To co zrobilem:
Automaty
Weryfikacja