Witam,
Miałem okazję modyfikować ostatnio proste oprogramowanie napisane na Raspberry Pi w Pythonie do sterowania 2 silnikami krokowymi poprzez GPIO. Generalnie udało się to poskładać tak, żeby działało i spełniało swoje zadanie, ale nie jestem zadowolony z tego jak wygląda kod.
Przykładowo: chciałem, żeby po naciśnięciu przycisku “X+” napęd poruszał się tak długo jak przycisk jest wciśnięty. Na zestawie PLC + HMI takie zadanie nie stanowiłoby żadnego problemu, a tutaj miałem problem to wykonać i tymczasowo poszedłem na kompromis i zrobiłem przycisk “X +1mm”. Jak ogarnę jak to wykonać to zrobię modyfikację.
W związku z tym mam pytanie dotyczące tak jak w temacie programowania na Raspberry Pi w Pythonie lub C++ a do tego biblioteka QT - chodzi o dokumentacje, tutoriale, artykuły, wpisy na forach, biblioteki, moduły itd., które dotyczą wykonywania aplikacji sterujących znanych nam automatykom za pomocą języków programowania wysokiego poziomu - czy ktoś zna i mógłby nakierować na takie zasoby?
W szczególności chodzi mi o zagadnienia takie jak:
- wykonywanie kodu w nieskończonej pętli (OB Main z Siemensa / Programy z Codesys itd.) w poprawny sposób bez nadmiernego obciążania procesora, ale tak, żeby jak najbardziej zbliżyć się do czasu rzeczywistego,
- sprawdzanie stanu wejść cyfrowych w każdym cyklu,
- odświeżanie wizualizacji GUI co zadany czas (100ms / 1 s / …),
- sensowne połączenie wykonywania części kodu przez cały czas w nieskończonej pętli z wykonywaniem kodu w sposób sterowany zdarzeniami (wciśnięcie przycisku, zmiana stanu wejścia cyfrowego),
- zmienne podtrzymywane.
Generalnie to próbuję i będę próbował rozwiązać te powyżej wymienione problemy. Mam kilka pomysłów, bo robiłem już małe rozeznanie w sieci:
- pętla while true + sleep(),
- Multiprocessing,
- Threading,
- .txt, JSON, pickle, SQL.
Jednak wiadomo, że istnieje najlepsze i najbardziej optymalne rozwiązanie problemu, którego mogę nie znać, bo zdecydowanie nie jestem ekspertem w programowaniu w Pythonie.