Skąd pomysł na projekt?
Od czasów szkoły średniej uwielbiałem programować sterowniki PLC. Powodem takiego stanu rzeczy był fakt, że chodziłem do technikum mechatronicznego i intensywnie pracowaliśmy na sterownikach PLC ze względu na nadchodzący egzamin zawodowy. Również kadra nauczycielska, która posiadała wykształcenie elektryczne, potrafiła posługiwać się głównie tylko graficznymi językami programowania, czyli np. językiem drabinkowym.
Na moich studiach dodatkowo wkręciłem się w „konwencjonalne” programowanie, czyli języki C/C++. Dlatego, gdy przyszedł czas wyboru tematu pracy inżynierskiej, po wcześniejszym pobieżnym research’u w wyniki którego nie znalazłem podobnego rozwiązania, postanowiłem opracować aplikację dla układów Arduino pozwalającą na programowanie w języku drabinkowym.
O aplikacji
Zadaniem aplikacji jest umożliwienie programowania układów Arduino (Leonardo, Nano, Mega) w języku drabinkowym, który stosowany jest głównie przy programowaniu sterowników PLC. PLCino do działania wymaga uprawnień administratora, ponieważ umożliwia kompilowanie kodu i programowanie układów Arduino z poziomu edytora.
Zaimplementowane elementy języka drabinkowego to:
- styki,
- cewki,
- liczniki,
- timery,
- operatory porównania.
Aplikacja została opracowana z wykorzystaniem bibliotek Qt w wersji 5.9.1. Przy próbach kompilacji za pomocą nowszych wersji występowały wyjątki przy korzystaniu z funkcji dostarczanych przez biblioteki.
Wadą aplikacji było opracowywanie jej w czasach, gdy prowadzący nie widzieli problemów z nazewnictwem zmiennych czy funkcji w języku polskim (do dzisiaj te długie nazwy kłują mnie po oczach).
Innym problemem była biblioteka Qt. Wtedy wydawało mi się, że jest to coś idealnego dla języka C++, ponieważ pozwalała wykorzystać wspomniany język w operacjach niskopoziomowych jak i wysokopoziomowych (czyli w tym przypadku dobrze wyglądającym GUI – nie to co Windows Forms). Wartością dodaną miała być wieloplatformowość pozwalająca na proste przeniesienie aplikacji PLCino na systemy linux. Niestety ze względu na wykorzystanie aplikacji avrdude nie było to możliwe – gdy chciałem rozbudowywać mój projekt okazało się, że Qt staje się coraz mniej open source i przez to nieznana była przyszłość tych bibliotek, więc postanowiłem wstrzymać się z dalszymi pracami i poczekać, aż sytuacja się wyjaśni.
Aplikacja w obecnej postaci pozwala na programowanie układów Arduino (bezpośrednio z poziomu edytora):
- Leonardo,
- Nano,
- Mega.
TODO
- Dodanie obsługi kolejnych układów Arduino
- Dodanie obsługi kolejnych elementów języka drabinkowego
- Oczyszczenie aplikacji avrdude ze zbędnych bibliotek i kodów źródłowych
Jak używać aplikacji?
Na moim GitHub’ie można znaleźć instalator aplikacji, który jak zawsze został opracowany za pomocą kreatora Inno Setup. Instaluje w systemie operacyjnym aplikację PLCino wraz z niezbędnymi bibliotekami. W przypadku problemów z działaniem należy uruchomić aplikację z uprawnieniami administracyjnymi.
W katalogu „przyklady” (znajdującym się w tym samym katalogu co plik wykonywalny PLCino.exe) można znaleźć przykładowe programy, które prezentują funkcjonalność aplikacji.
Do obwodów tworzonych w aplikacji elementy drabinki dodaje się poprzez wykorzystanie techniki przeciągnij&upuść (drag&drop). Edycji właściwości elementu można dokonać poprzez dwukrotne kliknięcie LPM (lewym przyciskiem myszy) na elemencie w wybranym obwodzie.