Raczej miałem na myśli ogólną zgodność formatu układu torów (głównie zastosowanie krzywych Beziera 3-go stopnia), która pozwoli na łatwą konwersję scenerii, niż pełną kompatybilność.
Zasady wyznaczania przebiegów, i ogólnie zasady działania urządzeń srk i logiki zależnościowej to obszerny temat, ciężko będzie wszystko wyjaśnić w kilku postach. Warto na początek zapoznać się z wytycznymi Ie-4, książką Mikulskiego, dobre pojęcie o podstawach da też książka Podstawy srk - M. D. Bajon. Same przebiegi to akurat dane ładowane przez symulator, które powinny być edytowalne dla każdej stacji (ja dla urządzeń mechanicznych przewiduję zapis w formie tablicy zależności). Pytanie jeszcze, co oznacza że ma to być zrobione "porządnie". Czy przewidujesz symulację bloków elektromechanicznych i blokady stacyjnej (współpraca różnych nastawni na stacji), blokady liniowej (współpraca stacji) zawórek, zastawek? Wspominałeś o sbl - jak widzisz interfejs nastawnicy mechanicznej do sbl?
Współpracę nastawni z symulatorem ruchu przerabiałem już wstępnie w Maszynie, zostało tam zaimplementowane zdalne wykonywanie eventów i odsyłanie potwierdzeń ich wykonania, na bazie tego można już zrobić coś sensownego. Symulator ruchu powinien obsługiwać obiekty związane z srk, takie jak:
- zwrotnice i wykolejnice,
- sygnalizatory,
- obwody torowe - po kilka określonych odcinków/zwrotnic stanowi obwód torowy, którego niezajętość można kontrolować (niezbędne dla większości typów urządzeń),
- ew. inne, zależnie od tego, co chcemy symulować: przejazdy jako całość lub oddzielnie rogatki i sygnalizatory, czujniki torowe (oddziaływanie punktowe osi, z wykryciem kierunku; głównie dla przejazdów, ale też do zwalniania utwierdzenia przebiegów w urządzeniach mechanicznych - choć to można rozwiązać obwodami torowymi), balisy (ETCS) itd.
Przesyłane komunikaty - z nastawni do symulatora ruchu przyjmę nazwę rozkazy, w drugą stronę - meldunki.
Dla zwrotnic i wykolejnic:
- rozkaz przestawienia do plus/minus (dla wykolejnic może być zamknięcie/otwarcie albo też plus/minus, z tym że plus może być położeniem otwartym),
- meldunek położenia plus/minus (lub zamknięta/otwarta); ewentualnie potwierdzenie wykonania rozkazu, jeżeli założymy, że zawsze zostanie przestawiona - tak jest w Maszynie (potwierdzenie wykonania eventu),
- meldunek utraty kontroli wskutek rozprucia, ew. z innego powodu (np. ktoś zaczął korbować napęd),
- może być meldunek utraty kontroli przy rozpoczęciu przestawiania, ale można też założyć po prostu że wraz z wysłaniem rozkazu ginie kontrola (tak to rozwiązałem dla Maszyny),
Dla zwrotnic i wykolejnic sterowanych lokalnie:
- jeżeli zwrotnica jest ręczna bez uzależnień, np. na bocznicy - może być sterowana niezależnie od nastawni,
- jeżeli zwrotnica jest sterowana centralnie i oddawana do sterowania lokalnego z nastawni, proponuję wysłanie meldunku żądania przestawienia do nastawni, a nastawnia decyduje czy można zwrotnicę przestawić (tzn. czy jest zezwolenie na pracę lokalną).
Dla sygnalizatorów:
- rozkaz ustawienia konkretnego sygnału, przy czym Sz powinien być sterowany niezależnie - czyli gdy na semaforze świeci się zezwalający, to Sz nie powinien powodować wyświetlenia stój + Sz, dodatkowo wskaźniki - minimum W24, który również powinien być sterowany niezależnie; w ostateczności może być wszystko razem (bez stanów kombinowanych),
- meldunek o kontroli sygnału, ewentualnie potwierdzenie wykonania wysłanego rozkazu,
- dodatkowa sprawa - przy utracie komunikacji wszystkie semafory powinny wrócić na "Stój",
Dla obwodów torowych:
- meldunek o zajęciu/zwolnieniu obwodu torowego,
- w sytuacjach awaryjnych może się przydać również rozkaz wysłania meldunków stanu wszystkich obwodów torowych,
Dla przejazdów:
- rozkaz zamykaj/otwieraj,
- meldunek zamknięty/otwarty (wskazane, aby był wysyłany po faktycznym zamknięciu/otwarciu),
- ewentualnie rozkazy i meldunki dla poszczególnych rogatek i sygnalizatorów,
Dla czujników:
- meldunek - przejazd osi w kierunku 1, 2, ewentualnie + prędkość; głównym zastosowaniem czujników będzie sterowanie przejazdami samoczynnymi - logika po stronie nastawni (wraz z odwzorowaniem powtarzaczy i ewentualnych uzależnień w przebiegach),
Dla balis ETCS:
- rozkaz - ustawienie komunikatu do wysłania do pojazdu, jednak tu trzeba by dokładniej pomyśleć jak symulować ETCS; w Maszynie w tym momencie teoretycznie można to zrobić, jako osobną aplikację współpracującą z nastawnią, z DMI w dodatkowym okienku.
Kolejna sprawa to nazwy obiektów (unikalne, do sterowania - te pokazywane na tabliczkach czy napędach mogą być oczywiście inne) - muszą być nadawane według jakiejś konwencji, żeby nie robił się bałagan i nie trzeba było robić jakichś tablic z przyporządkowaniami nazw po stronie symulatora i po stronie nastawni. Proponuję coś takiego:
- urządzenia na danym posterunku - "<skrót>_<nazwa>", gdzie <skrót> to unikalny (przynajmniej w skali scenerii) skrót posterunku, <nazwa> to unikalna na danym posterunku, w obrębie typu urządzenia nazwa (czyli dopuszczalne jest, aby urządzenia różnych typów - np. zwrotnica i sygnalizator - miały taką samą nazwę - choć to raczej nie będzie się zdarzać).
- urządzenia na szlaku (głównie semafory sbl, obwody torowe - To/Sp semaforów wjazdowych powinny podlegać pod posterunek) - "<skrót1>_<skrót2>_<nazwa>", przy czym skróty posterunków ograniczających szlak podane w kolejności zgodnej z kierunkiem wzrostu kilometrażu.
Nazwy urządzeń zgodnie z nazewnictwem w rzeczywistości, czyli np. zwrotnice 1, 2, 3ab, 4cd... wykolejnice Wk1, Wk2, obwody torowe It1, Iz1, it10, sygnalizatory A, ToA, SpA, Tm1 itd. Przejazdy i związane z nimi czujniki można nazywać od kilometrażu przejazdu, np. przejazd 10123, czujniki 10123c1/2/3. Balisy przed semaforami od nazw semaforów, dla ETCS L2 prawdę mówiąc nie wiem jak to wygląda - to u nas dość nowy temat i nie ma wiele publikacji.
Jeszcze jedna istotna rzecz to blokada liniowa/stacyjna. Dla stacyjnej i liniowej półsamoczynnej sprawa jest dość prosta, wystarczy przesyłanie komunikatów specyficznych dla typu blokady między posterunkami - tylko one są z nią powiązane. Dla blokady liniowej z semaforami odstępowymi trzeba zapewnić rozkazy/meldunki między systemem blokady a urządzeniami na szlaku (semafory i obwody torowe odstępów).
Ogólnie blokada liniowa składa się z modułów stacyjnych, które powinny być umieszczona razem z modułami urządzeń stacyjnych ponieważ jest z nimi dość mocno powiązana, oraz modułów posterunków odstępowych, o ile mamy podział na odstępy. Moduły posterunków odstępowych mogą być symulowane: na jednej ze stacji (wtedy ta stacja kontroluje urządzenia blokady całego szlaku), częściowo na jednej a częściowo na drugiej (wtedy każda stacja obsługuje +- połowę szlaku), albo na serwerze.