OpenPLC

Rozmowy dotyczące budowy, działania i naprawy urządzeń automatyki przemysłowej
Awatar użytkownika

Autor tematu
tuxcnc
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 8
Posty: 7781
Rejestracja: 26 lut 2011, 23:24
Lokalizacja: mazowieckie

Re: OpenPLC

#11

Post napisał: tuxcnc » 25 paź 2022, 12:32

Pod Windows udało mi się wgrać Blink do ESP32, co jest wiadomością wyjątkowo dobrą, bo to bardzo tani (~20 PLN), ale też potężny procesor, nieporównywalny w żaden sposób z ośmiobitowymi Atmelami.
Natomiast z STM32 jest problem, może to tylko niewłaściwy bootloader, ale płytka jest wykrywana przez Windows jako Maple 003, nie ma zainstalowanych sterowników i OpenPLC jej nie widzi... Tutaj to wielkiego płaczu nie ma, bo "obsługiwane" płytki to F103CB i F411CE, czyli stosunkowo drogie. Być może problem da się ominąć przez "wygeneruj tylko kod" (czy coś w tym stylu) i skompilowanie go w normalnym środowisku.

Natomiast pod LInux klęska na całym froncie.
Jak pisałem sam edytor się uruchamia i da się wgrać do Arduino na Atmega, ale na tym chyba koniec możliwości.
Problemem zapewne jest (jak zwykle) python.
Python to nie jest zwykły burdel, to jest burdel w którym każdy z gości przestawia meble po swojemu...
Mam już całkiem sporą kolekcję programów w pythonie, których uruchomić nie sposób, bo jak się jedno naprawi, to się drugie pieprzy...
Po prostu są programy, które do pracy wymagają pythona w stanie "na dzień kompilacji", a jeśli są w systemie biblioteki starsze albo nowsze, to dostajemy masę debilnych komunikatów o błędach, z których absolutnie nic nie wynika...
Tutaj chyba jest ten problem, że OpenPLC działa pod python2, ale narzędzia Espressif pod python3.
Jak już pisałem, pythony lubią się gryźć i wychodzą cuda.
Miałem kiedyś taką hecę, że program uruchamiał się w python2, ale biblioteki otwierał z python3, mimo tego że swoje miał poprawnie zainstalowane...
Zainstalowałem w Xubuntu 19.10 obsługę ESP32 w ArduinoIDE, ale wgrać na płytkę niczego nie można. Niby wyświetla jakieś błędy, ale z kategorii debilnych i niczego nie mówiących, co jest specjalnością pythona...
Natomiast w Xubuntu 22.04 (którego używam na co dzień) jest wyłącznie python3 i ESP32 w ArduinoIDE jest obsługiwane prawidłowo...
Tutaj Windows wypada lepiej, ale nie dlatego żeby był lepszy, tylko dlatego że nie ma wbudowanego pythona. Po prostu wszelkie potrzebne biblioteki pythona muszą być wbudowane w program, więc są we właściwych wersjach...

Autorzy OpenPLC pracują nad przejściem na python3, ale póki co niespecjalnie im to wychodzi i wersja developerska w żaden sposób nie nadaje się do żadnej pracy.
Ale wiele potężnych narzędzi open source zaczynało jeszcze gorzej...



Awatar użytkownika

Autor tematu
tuxcnc
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 8
Posty: 7781
Rejestracja: 26 lut 2011, 23:24
Lokalizacja: mazowieckie

Re: OpenPLC

#12

Post napisał: tuxcnc » 26 paź 2022, 22:36

Doszedłem do wniosku, że jednak trzeba spróbować jeszcze raz.
Tym razem zainstalowałem Xubuntu 20.04.5.
Najpierw uruchomiłem obsługę ESP32 na ArduinoIDE.
W tej dystrybucji standardowo jest zainstalowany python3, ale brakuje pyserial.
Trzeba najpierw zainstalować pip3, a potem za jego pomocą pyserial.
Po tej operacji ArduinoIDE obsługuje ESP32 i wgrałem bez problemu arduinowy Blink, z tym że LED_BUILTIN trzeba zastąpić cyfrą 2, bo tutaj LED jest podpięty do GPIO2.
Potem uruchomiłem skrypt instalacyjny OpenPLC, który doinstalowuje python2 i inne zależności.
Tym razem wszystko zadziałało i wgrałem Blink z przykładów OpenPLC, tylko tutaj trzeba wpisać w odpowiednie "Location" (to od blink-led) "%QX0.1" co też odpowiada pinowi GPIO2, tylko tutaj jest liczone od zera.
Natomiast STM32 nadal nie działa...
Dzisiaj więcej kombinować już nie będę.

Awatar użytkownika

Autor tematu
tuxcnc
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 8
Posty: 7781
Rejestracja: 26 lut 2011, 23:24
Lokalizacja: mazowieckie

Re: OpenPLC

#13

Post napisał: tuxcnc » 27 paź 2022, 18:18

Sukces.
Umiarkowany, ale jednak sukces.
Zacząłem dłubać w ArduinoIDE i stwierdziłem, że "płytki" STM32 są oznaczone jako "deprecated", czyli przestarzałe, oraz że zaleca się zainstalować zupełnie inne https://github.com/stm32duino/wiki/wiki/Getting-Started.
Te zupełnie inne i nowsze nie używają bootloadera, tylko programatora STlink.
W sumie to programator trzeba i tak mieć, a przynajmniej odpada szukanie właściwych bootloaderów, co jest jawnym masochizmem.
Do pracy potrzeba jeszcze zainstalować STM32CubeProgrammer https://www.st.com/en/development-tools ... eprog.html, który się instaluje z folderze /usr/local, a tam ArduinoIDE go nie szuka, więc nie widzi. Można pliki przekopiować do ~/ albo /opt, można też wyedytować odpowiedni plik (wszystko widać na zrzucie, więc pisać więcej nie będę).
Obrazek
Kiedy już STM32 zacznie działać w ArduinoIDE, można się zająć OpenPLC.
Akcja jest taka, że OpenPLC nie umie użyć STlink, więc nie ma sensu kombinować i trzeba się zadowolić opcją "Compile only".
Obrazek
Tutaj problemy są dwa.
Pierwszy, że nie możemy usunąć z ArduinoIDE tych przestarzałych "płytek", bo OpenPLC będzie chciał z nich skorzystać. (Na szczęście nowe i stare nie gryzą się ze sobą.)
Drugi, że jak wiele rzeczy w OpenPLC, funkcja kompilacji też jest popieprzona. Niby wyświetla się komunikat gdzie zapisano skompilowany program, ale znajdziemy tam tylko plik elf, natomiast nie ma ani bin, ani hex... Oczywiście te pliki są tworzone, tyle tylko że w tymczasowym folderze, o którego istnieniu użytkownik nie musi wiedzieć...
Tutaj też wszystko widać, tylko dodam, że chodzi o pliki z "Baremetal.ino" w nazwie, i że są one nadpisywane po każdej kompilacji dowolnego programu, więc trzeba je sobie skopiować w bezpieczne miejsce...
Obrazek
Jak już pisałem, w OpenPLC mamy do wyboru tylko dwie płytki, F103CB i F411CE, które są stosunkowo drogie, natomiast nie ma tanich F103C6 i F103C8 (np. oznaczanych CKS). Tutaj nie jest aż tak źle, ponieważ kiedy się używa programatora, to CB i C8 różnią się wyłącznie wielkością pamięci, więc program skompilowany na CB powinien działać na C8, jeśli tylko nie przekroczy 64 kB...
Niestety, C6 oprócz mniejszej pamięci ma jeszcze wycięte kilka narządów i działać z OpenPLC nie będzie. Podejrzewam, że program chce używać nieistniejącego timera, ale w sumie to nieistotne.

Podsumowując, użyć należy Xubuntu 20.04 Focal Fossa, a do STM32 programatora STlink.
Jeśli program wspiera ATmega, STM32 i ESP32, to już jest w zupełności wystarczający zestaw.
Jak będę miał nastrój, to sprawdzę jeszcze ESP8266. Płytkę z takim procesorem można kupić już za 10 PLN, tylko sam nie wiem czy warto aż tak dziadować, kiedy ESP32 jest tylko dyszkę droższy... Może rozsądniej jest robić wszystko na ESP32 i nie mnożyć bytów...
System działa na maszynie wirtualnej, a porty USB udostępniają się bezproblemowo.

Tym razem to Windows przegrał.
Zapewne tam też da się do wszystkiego dojść, ale teraz to już nie widzę motywacji.

Awatar użytkownika

Autor tematu
tuxcnc
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 8
Posty: 7781
Rejestracja: 26 lut 2011, 23:24
Lokalizacja: mazowieckie

Re: OpenPLC

#14

Post napisał: tuxcnc » 27 paź 2022, 23:29

Sprawdziłem ESP8266.
Wgrywa się i działa, tylko coś z pinami jest pomieszane.
LED mi miga na %QX0.0, a to jest pin GPIO16...
Podejrzewam, że w opisie podane są nie piny ESP8266, ale piny Arduino, gdzie D0 to właśnie GPIO16, ale teraz nie chce mi się sprawdzać.
W każdym razie to nie jest wielki problem i da się dojść ładu w godzinę, albo i szybciej...

Awatar użytkownika

Autor tematu
tuxcnc
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 8
Posty: 7781
Rejestracja: 26 lut 2011, 23:24
Lokalizacja: mazowieckie

Re: OpenPLC

#15

Post napisał: tuxcnc » 26 mar 2023, 21:55

Ściągnąłem dzisiaj program, zainstalowałem na Xubuntu 22.04 i działa...
Znaczy się, sprawdziłem tylko na ESP32 i ESP8266.
Co ciekawe, w paczce są pliki z datą 15 listopada, czyli niewiele późniejszą niż mój poprzedni wpis w tym temacie.

ODPOWIEDZ Poprzedni tematNastępny temat

Wróć do „Automatyka przemysłowa”