Razem ze znajomym programistą (ja na programowaniu aplikacji jeszcze się nie znam ;) ) chcemy od podstaw stworzyć program odwzorowujący działanie obwodów pojazdów i będący jednocześnie ich graficznym, prostym w obsłudze edytorem, umożliwiającym wprowadzanie zmian podczas symulacji. Dzięki temu będzie można symulować różne usterki i je naprawiać - trwale lub doraźnie, aby tylko zjechać ze szlaku. Program ten ma również zastąpić obecną część fizyki pojazdów dotyczącą elektryki i rozrządczej części pneumatyki oraz wykonywać wszystkie niezbędne do tego obliczenia, a do symulatora wysyłać gotowe wartości jak pobór prądu z sieci czy moment obrotowy na zestawach kołowych. Ma także odpowiadać w całości za sterowanie prowadzonym pojazdem, ponieważ prowadzący sterować będzie bezpośrednio samymi obwodami (w przypadku hamulców na razie jedynie rękojeściami kranów czy kołem hamulca ręcznego - odwzorowanie pneumatyki być może dojdzie w przyszłości). Da to m.in. możliwość przypisania własnej konfiguracji klawiszy oraz wykorzystania portu COM do komunikacji z zewnętrznym urządzeniem takim jak pulpit, co zmniejszy koszty jego podłączenia i umożliwi znaczną rozbudowę funkcjonalności.
"Pilotażowo" pierwszą lokomotywą z odwzorowanymi obwodami będzie ET41 o tzw. niskim numerze, czyli do 084 (tak, rozróżnienie na poszczególne numery i osobne pliki obwodów dla każdego jednego pojazdu także chcielibyśmy wprowadzić). Chodzi o to, że tą wersję najłatwiej mi będzie testować. Dla pozostałych pojazdów w zasadzie będzie trzeba już tylko przerysować obwody ze schematów i dostosować ich komunikację z programem w MaSzynie, ale edytor i sposób postępowania będą już gotowe.
Oczywiście czas ukończenia prac jest nieokreślony, jak to bywa w takich projektach, a nawet nie istnieje, bo zawsze można coś ulepszyć. Chciałbym jednak, aby przynajmniej najważniejsze funkcje działały do końca sierpnia przyszłego roku, bo przez kolejne 8 miesięcy będziemy mieć raczej mało czasu na to. Liczę też na pomoc z Waszej strony, jeśli chodzi o przystosowanie samej MaSzyny do komunikacji z tym programem, choć to w drugiej kolejności, ponieważ najpierw zajmiemy się samym edytorem, bo to trudniejsza kwestia.
Poniżej przedstawiam listę założeń, jakie ten program miałby spełniać.
Jeśli ktoś ma coś ciekawego/przydatnego do dodania, to bardzo proszę o sugestie i chętnie dopiszę - głównie po to zakładam ten temat ;)1. Funkcje edytora:a) budowanie obwodów za pomocą symboli podobnych do tych ze starych książkowych schematów, bo wydaje mi się, że jest to bardziej czytelne od typowego LD - coś jak w programie
FluidSIM;
b) możliwość edycji obwodów w czasie symulacji/jazdy jak i podczas pauzy;
c) symbole układane według siatki, dla ułatwienia prostoliniowego prowadzenia przewodów;
d) konieczność opisania każdego elementu jego nazwą ze schematu (przełączniki, styki, cewki przekaźników i styczników, przewody itp.), a tym samym automatyczne przypisanie odpowiednich styków do odpowiednich urządzeń jak przekaźniki, przełączniki wielopozycyjne i wielostykowe, nastawniki itp.;
e) możliwość podparcia zarówno pojedynczego styku w pozycji otwartej (np. kliknięcie na niego LPM z wcześniej wybraną opcją podpierania) i zamkniętej (kliknięcie PPM), jak i możliwość podparcia zwory przekaźnika (wszystkich jego styków jednocześnie) także w pozycji odciągniętej lub przyciągniętej (również przez odpowiednie kliknięcie, tym razem na cewkę przekaźnika);
f) podparte styki i zwory oznaczane symbolem rolki od taśmy z Haslera (bo to chyba najpopularniejszy sposób w rzeczywistości ;) )
g) ukazywanie obecności napięcia i przepływu prądów przez oznaczenie danego elementu (przewodu, styku, cewki itp.) odpowiednio linią czerwoną cienką lub grubą;
h) możliwość przypisania dowolnego (lub prawie dowolnego, czyli np. poza Tab, Caps Lock, Print Screen itp.) klawisza lub kombinacji klawiszy ("coś" plus Schift, Ctrl, Alt) do konkretnej reakcji danego elementu, czyli np. osobno dla włączenia i osobno dla wyłączenia włącznika ze standardowymi ustawieniami domyślnymi jak w Readme MaSzyny;
i) odwzorowanie pneumatycznej części rozrządu wraz ze zużywaniem powietrza ze zbiorników głównych;
j) odtwarzanie dźwięków zadziałania poszczególnych urządzeń;
k) możliwość przyporządkowania danych obwodów konkretnemu numerowi pojazdu (2.f);
l) rejestracja i zapis przejechanej liczby kilometrów (na podstawie liczby obrotów jednego z zestawów kołowych) dla danego pojazdu (konkretnego numeru) jak i wszystkich danych z taśmy prędkościomierza;
m) odwzorowanie wartości prądów pobieranych przez poszczególne elementy obwodów rozrządu (co będzie miało znaczenie dla wyłączników samoczynnych, wskazań amperomierza NN czy poziomu rozładowania baterii), a w odleglejszej przyszłości odwzorowanie takich aspektów elektryki jak indukcyjności cewek przekaźników i styczników, rezystancji i pojemności przewodów itp.;
n) odwzorowanie zużycia powietrza przez drzwi i toalety oraz zużycia prądu przez ogrzewanie wagonów w składzie (2.f), o ile są sprzęgnięte dodatkowymi sprzęgami pneumatycznymi i sprzęgami ogrzewania (2.g).
2. Wartości i dane, które program musi otrzymywać z symulatora:a) napięcie dostarczane z sieci trakcyjnej;
b) informacja, czy dany pantograf styka się z siecią (choćby ze względu na możliwość odłączenia jednego pantografu odłącznikiem);
c) prędkości obrotowe poszczególnych zestawów kołowych (powinny być różne przy poślizgu);
d) informacja, w której części pojazdu znajduje się prowadzący (np. dla lokomotyw dwukabinowych: kabina A, przedział maszynowy czy kabina B) w celu umożliwienia np. pozostawienia włączonego przełącznika w opuszczanej kabinie, co da konsekwentne tego skutki;
e) informacja, czy w pliku konfiguracyjnym eu07.ini, przy nowej wartości (dla przykładu "LDon") wpisane jest "yes" - w przeciwnym wypadku ("no") przywrócenie obsługi obecnej fizyki pojazdu (np. gdyby coś nie domagało, to obwody będą mogły być w PC, a tylko w *.ini wyłączy się ich obsługę);
f) tekstura prowadzonego pojazdu i innych pojazdów silnikowych/sterowniczych w składzie (możliwość przyporządkowania danych obwodów konkretnemu numerowi pojazdu (1.k)) oraz wagonów osobowych (odwzorowanie zużycia powietrza przez drzwi i toalety oraz zużycia prądu przez ogrzewanie wagonów (1.n) - potrzebne dane dotyczące tych wartości dla każdego typu wagonu, na początku jakaś wartość uśredniona dla wszystkich typów wagonów (jaka?));
g) informacja o sprzęgu pomiędzy wszystkimi pojazdami w składzie (dla ukrotnienia, dodatkowych sprzęgów pneumatycznych i ogrzewania między wagonami (1.n));
h) ciśnienie w cylindrach hamulcowych, przewodzie głównym, zbiornikach głównych;
i) godzina w scenerii do odbijania na taśmie wirtualnego Haslera.
3. Wartości i dane, które program musi wysyłać do symulatora:a) pobór prądu z sieci trakcyjnej;
b) moment obrotowy każdego z zestawów kołowych;
c) informacje o animacji przełączników, przycisków, kontrolek, nastawników, mierników, reflektorów, oświetlenia mierników i kabiny;
d) położenie rękojeści kranów hamulców;
e) informacja o podniesieniu/opuszczeniu danego pantografu;
f) zużycie powietrza ze zbiorników głównych przez wszystkie urządzenia rorządu, pantografy i syreny oraz drzwi w wagonach, w których są one sterowane pneumatycznie (podczas zatrzymania przed W4) i toalety z prawdopodobieństwem 1% (?);
g) informacja o użyciu pauzy.
4. Inne funkcje programu:a) dodatkowe okno z miernikami i kontrolkami kabinowymi z możliwością dodania dodatkowych urządzeń sygnalizacyjnych działających na podstawie stanu obwodów;
b) dodatkowe okno ukazujące aktualny zapis na taśmie Haslera;
c) osobne okno obwodów, mierników i taśmy dla każdego pojazdu silnikowego/sterowniczego w składzie (jeśli oczywiście któreś z nich posiada, czyli np. dla członu B ET41 nie będzie okna zapisu na taśmie);
d) możliwość utworzenia okna z wybranymi wskaźnikami wybranych pojazdów (najpotrzebniejsze według własnego uznania);
e) możliwość zamknięcia i ponownego otwarcia każdego z okien z rozwijanego menu;
f) obsługa PoKeys i wirtualnego portu COM (praktycznie dowolny mikrokontroler komunikujący się przez USB, choć przede wszystkim płytka Arduino) z funkcją sterowania każdym jednym elementem obwodów i wysyłania informacji o jego aktualnym stanie/zmianie stanu.