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/. Dostęp do źródeł również przez git i mercurial.