- Symulator MaSzyna -
Symulator EU07 (i nie tylko) => Na warsztacie => Wątek zaczęty przez: El Mecánico w 03 Stycznia 2014, 16:56:42
-
Jakiś czas temu zabrałem się za moduł symulatora obwodów sterujących, zarówno lokomotywowych jak i USRK. Niestety z barku czasu idzie mi to jak krew z nosa;/ Jak na razie mam szkielet obiektowy (całość powstaje w C++, standard ISO C++11), obecnie powstają metody które na tych obiektach mają ładnie i szybko operować.
Założenie koncepcyjne jest, że program z postaci diagramu drabinkowego kompilowany jest na swego rodzaju zestaw map i masek binarnych. Zmiana któregoś z sygnałów wejściowych ma powodować nałożenie na mapę odpowiedniej maski, przez to błyskawicznie dostajemy odpowiedź symulatora. Tam gdzie mają występować naturalne opóźnienia działania (przekaźniki zwłoczne, urządzenia elektropneumatyczne) wystarczy w diagramie użyć elementu zwłocznego i ustawić odpowiedni czas.
Przypomina sprzętowy sterownik PLC? I tak ma być:D Różnica jest tylko taka, że diagramy nie będą przetwarzane w kółko, lecz ewaluacja będzie wyzwalana przez zmiany stanów wejść (akcja użytkownika programu, przejechanie nad rezonatorem, zajęcie/zwolnienie toru, itp) oraz po zliczeniu opóźnienia na timerze elementu zwłocznego.
Jeśli są osoby chętne przyjrzeć się temu kawałeczkowi kodu który już istnieje (trochę słabo skomentowany) i coś do niego dołożyć, to na razie proszę na PW (nie mogę się dostać do repo na symkowym serwerze).
Dodano: 07 Stycznia 2014, 13:25:52
Tymczasowo postawiłem repo projektu na SourceForge (na serwerze maszynowym ciągle nie ma dojścia). Adres: https://sourceforge.net/projects/maszynald/ (https://sourceforge.net/projects/maszynald/). Dostęp do źródeł również przez git i mercurial.
-
Piszesz program, w którym będzie można układać schematy drabinkowe obwodów dla MaSzyny i eksportować je do formatu odczytywalnego dla EXE? Pytam, bo z tych opisów, które czytałem - w zasadzie konkretnych założeń było niewiele.
-
Piszę program (a dokładniej bibliotekę dynamiczną) który będzie wykonywać te diagramy, symulując działanie obwodów elektrycznych sterujących pracą lokomotywy, stacji, szlaku, etc, łącznie z usterkami, takimi jak brak przejścia na styczniku, urwany kabelek, itp itd. Będzie oczywiście możliwość naprawienia przez mechanika (będziemy mieli automatyków USRK?:D) tego co będzie w stanie. Potrzebne będą skany schematów elektrycznych obwodów sterowania.
Co do edytora, zapewne będzie w komplecie, a na razie można używać LDmicro, na którego kodzie źródłowym się opieram, i pewnie zrobię import z niego.
Dodano: 04 Marca 2014, 17:59:31
Pojawiają się pytania jakie schematy oraz oferty od chętnych, informuję więc, że wszelkie schematy elektryczne obwodów sterujących jakie macie lub wpadną wam w łapki ładujcie na MaSzynowy upload tak jak zdjęcia na tekstury.
-
A schematy USRK też potrzebujesz? Np. Obwody świateł, sygnałowe,nastawcze,blokady itd.
Mógłbym coś podziałać w tym temacie, ale schematy takie raczej mogą służyć jako poglądowe, tutaj trzeba by było projektować całkiem nowe pod daną stację, szlak.
-
Schematy poglądowe się przydadzą, raczej nie za wiele jest na forum osób które potrafiły by "z marszu" zrobić SRK;]
Przypominam jeszcze raz, diagram drabinkowy stanowi odwzorowanie logiki obwodu, nie uwzględnia on czasu propagacji sygnału w długich liniach transmisyjnych (np stan blokady odcinka między stacjami), impedancji obwodów i cewek, natężenia i napięcia. Można te wartości jednak przekazać do LD i w nim uwzględnić, są bowiem elementy operujące na liczbach, oraz elementy zwłoczne, którymi możemy zasymulować czas propagacji. Jeśli w przyszłości EXE, ew. jakiś serwer ruchu, będzie robił sam propagację, to po prostu czasówkę z LD wystarczy usunąć.
-
Lekka zmiana podejścia do tematu oraz repo projektu. Tym razem idę trochę na łatwiznę i korzysta z "gotowca" w postaci nagłówka z LDmicro oraz przykładowej aplikacji symulującej wykonywanie LD.
Nowe repo pod adresem: https://sourceforge.net/projects/ld-module-for-maszyna/