Symulator/MaSzyna/Forth

Z Rainsted
Skocz do: nawigacji, wyszukiwania

Implementacja języka Forth ma na celu usprawnienie sterowania z jednoczesnym zachowaniem ogromnej elastyczności i dużej szybkości działania. Programy Forth mogą być przetwarzane jako interpretowane pliki tekstowe, ale można je również skompilować w ramach samego języka. Dzięki temu będzie można wydawać polecenia również z klawiatury, jak ma to miejsce w systemach typu Ebilock.

Różnice

Podstawową różnicą implementacji względem oryginalnego języka Forth jest posługiwanie się liczbami zmiennoprzecinkowymi (liczba taka zawiera kropkę, całkowita jest bez kropki). Ze względu na cel zastosowania mogą nie być dostępne wszystkie standardowe słowa Forth, w szczególności dotyczące systemu plików, złożonych funkcji matematycznych itd.

Słowniki

Dla każdej stacji można utworzyć oddzielny słownik (jest to jakby odpowiednik namespace w C++). Oddzielny słownik gwarantuje, że dla różnych stacji mogą istnieć komendy o identycznych nazwach i nie wprowadza to niejednoznaczności.

Zwrotnice (rozjazdy)

Dla każdej zwrotnicy (nazwa) w słowniku stacji utworzona jest komenda o nazwie (nazwa)+ oraz (nazwa)-. Komenda ta pobiera daną ze stosu danych, przetwarza i rezultat umieszcza na stosie. Dana ma postać maski bitowej, część bitów jest rozkazem do wykonania, a pozostałe są rezultatem (jako suma logiczna ewentualnych kilku kolejnych komend). Możliwe operacje:

  • sprawdź, czy rozjazd nie jest zajęty
  • sprawdź, czy nie jest utwierdzony, zarezerwuj wstępnie
  • usuń wstępną rezerwację (umożliwia utwierdzenie w innym przebiegu)
  • ustaw bez utwierdzenia
  • ustaw i utwierdź
  • usuń utwierdzenie
  • zamknij indywidualnie
  • zamknij grupowo

Przebiegi

Pewną ilość komend przełożenia zwrotnic można skompilować jako przebieg. Aby ułożyć i utwierdzić drogę, należy najpierw wykonać sprawdzenie, czy na rozjazdach nic nie stoi, czy nie są utwierdzone w innym przebiegu albo zamknięte. Jeśli nie ma przeszkód, można wykonać układanie z utwierdzeniem. W przeciwnym przypadku należy usunąć wstępną rezerwację i ponowić próbę po pewnym czasie.

Żądania przebiegów

Rozkład jazdy pociągu można wzbogacić o żądania przebiegów, które są potrzebne np. do zmiany czoła (przejazd lokomotywy na drugą stronę wagonów). Żądania mogą być kategoryczne (z precyzyjnym wskazaniem miejsca docelowego) albo ogólne (np. dojazd do preferowanego peronu z opcją zmiany na inny). Algorytm zarządzający stacją albo potwierdza wykonanie przebiegu i podaje zezwolenie na jazdę, albo odmawia. W przypadku odmowy trzeba ponowić żądanie po pewnym czasie, ewentualnie spróbować innego przebiegu.

Sterowanie - Ladder diagram (LD)

Do programowania schematów elektrycznych będą używane specjalne instrukcje Fortha. Standardowo słowa Forth oddzielane są spacjami. Negację sygnalizuje się umieszczeniem znaku \ na końcu słowa

  • LD-[ LD-[\ słowo początkowe (definicja szczebla)
  • ]-[ ]-[\ iloczyn logiczny wejść
  • ]- definicja nazwy węzła (może być użyta następnie jako wejście)
  • -[ -[\ koniec definicji nazwy węzła, kontynuacja iloczynu logicznego
  • ]-( ]-(\ definicja wyjścia
  • -( -(\ koniec definicji nazwy węzła, definicja wyjścia
  • -| )-| zakończenie szczebla
  • -+ -+\ suma logiczna z podanym wejściem
  • +-[ +-( +-( +-(\ kontynuacja po sumie logicznej