Z motyka na slonce

W poprzednim wpisie opisałem swój pomysł na stronę do nauki programowania PLC. W związku z tym, że moja wiedza w temacie jest ograniczona, zwróciłem się o pomoc do jednej z grup na Facebooku i otrzymałem następującą odpowiedź:

Oj kolego, porywasz się z motyką na słońce. Jako były pracownik jednego z koncernów, o którym wspominasz w artykule i który testował część urządzeń sieciowych i musiał kilka Ladderów napisać, wiem jak wygląda kwestia releasów poszczególnych wersji całego softu (gdzie kompilator to jedna ze składowych). Powiem w skrócie, nie dasz rady stworzyć takiego kompilatora. Problemów do rozwiązania jest cała masa: od tego, że od firm nie uzyskasz specyfikacji byte codu, do którego jest kompilowany Ladder, nie uzyskasz kluczy do podpisu tego byte codu. Reverse enginering Ci nie pomoże. Nałóż na to różnice w obsługiwanej funkcjonalności per wersja i per rodzina sprzętu (wbrew pozorom może to być zupełnie inny byte code pod spodem, pomimo że same Laddery piszesz w jednym edytorze).

Jedyne co byłbyś w stanie jako tako ogarnąć to zrobienie edytora ladderów w przeglądarce, ale pod spodem musiałbyś mieć soft od producenta, który pliki projektów zaczyta i skompiluje. Tu odbijesz się od innego problemu, czyli jak z poziomu przeglądarki wgrać soft do urządzenia. Napotkasz podobne problemy do tych, które wymieniłem powyżej.

Co do kwestii emulatora to tu też będziesz miał pewne problemy, a głównym jest architektura samego sterownika PLC i tego jak on działa. W PC masz 1 lub 2 wątki per core procesora i szybkie switchowanie wątków, które jest bardzo ułomne. W PLC masz masę wątków, działających niezależnie od siebie. Tak da się to emulować, ale szybkość nie ta i stopień skomplikowania, aby taki emulator napisać dosyć spory.

Lawina czarnych myśli

Powyższy komentarz przeczytałem na lotnisku w drodze do moich znajomych z Doncaster i mimo że wyczekiwałem na ten wyjazd, mój umysł wypełniła wizja niepowodzenia projektu, na który z nadzieją patrzyłem przez ostatnie tygodnie. W tamtym momencie jasno widziałem, że człowiek, który to napisał ma znacznie większą wiedzę ode mnie, a mój optymizm nie ma żadnych podstaw. Niepotrzebnie chcę zmarnować swój czas i pieniądze i po raz kolejny składam obietnice, których dostarczyć nie będę potrafił. Jeszcze wczoraj wydawało mi się, że mogę zrobić wszystko, jeśli tylko w to uwierzę, rozbiję problem na jak najmniejsze części i będę konsekwentnie je realizował. Teraz uświadomiłem sobie, że niczego nie potrafię dociągnąć do końca, a zmiany spowodowane psychoterapią, codzienną medytacją i doświadczeniem z Ayahuascą, są tylko iluzją.

Powrót optymizmu

Punkt zwrotny nastąpił, gdy zdecydowałem podzielić się przemyśleniami z moimi przyjaciółmi i żoną. Kilka słów otuchy wystarczyło bym zmienił perspektywę i zdał sobie sprawę, że nie zamierzam przecież łamać praw fizyki, a napisanie aplikacji webowej, to nie jest rozszczepianie atomu. Siemens na tegorocznych targach Hannover Messe ogłosił, że przenosi swoje środowisko programistyczne TIA Portal do chmury, więc wgranie programu do sterownika z poziomu przeglądarki już niedługo będzie prawdopodobnie wykonalne. Wirtualne sterowniki PLC pracujące na PC są stosowane w przemyśle już od dawna i w aplikacjach, w których je widziałem pracowały równie dobrze jak urządzenia fizyczne.

W domu, który obecnie wynajmuję wisi tabliczka z napisem: „Jeśli Twoje marzenia Cię nie przerażają, to nie są wystarczająco duże.” Przypadek?! ?

Konstruktywna krytyka

Cytowany we wstępie komentarz odnosi się głównie do akapitu opisującego moje największe marzenie, które z założenia ma być ambitne. Przypuszczam, że odpowiedź autora komentarza spowodowana była moją krytyką oprogramowania dostarczanego przez koncern, dla którego pracował. Ja jednak nie celowałem w ludzi pracujących w tych korporacjach, a w politykę firm, które delikatnie mówiąc, nie spieszą się z rozwijaniem swoich aplikacji. Czy zasłużyłem więc sobie by dostać taką odpowiedź? Być może.

Według Wikipedii konstruktywna krytyka „to rodzaj krytyki, która charakteryzuje się tym, że osoba krytykująca przedstawia lub sugeruje jednocześnie sposób lub sposoby rozwiązania problemu poddanego krytyce.” Ja takich w komentarzu nie znalazłem. Nie mam jednak żalu do autora. Mój podły nastrój po jego przeczytaniu był spowodowany bardziej przewrażliwieniem na jakąkolwiek krytykę niż jego treścią.

Wnioski

Moim pierwszorzędnym celem jest napisanie prostej aplikacji webowej, która pozwoli na stworzenie i sprawdzenie prostego programu w „Drabince” (Ladder Logic). Być może nie uda mi się dojść nawet do tego etapu, ale próbując na pewno nauczę się nowych, przydatnych rzeczy. Popełnione błędy pomogą uniknąć podobnych w przyszłości i w sumie, to nie mam niczego do stracenia.

Warto się również zastanowić zanim zaczniemy krytykować pomysły innych, nawet gdy chcemy uchronić w ten sposób drugą osobę przed porażką. Często nieświadomie możemy zabić w kimś zapał. Nie celuję tym stwierdzeniem w nikogo konkretnego. Jest ono notatką dla mnie samego, ponieważ częściej jestem tutaj sprawcą niż ofiarą. Krzywdzę w ten sposób nawet swoich najbliższych, nie szczędząc kobiet i dzieci.

Pamiętajmy też o tym, że warto otaczać się ludźmi, którzy zamiast krytykować, będą nas wspierać w naszych działaniach. Chciałbym im z tego miejsca serdecznie podziękować. Kocham was!

error

4 thoughts on “Z motyką na słońce”

  1. Nie jedna była próba wzniesienia się w powietrze. Ci, którym się nie udało stwierdzili, że to nie możliwe.
    Bracia Wright zrobili to po prostu jak należy. Powodzenia ze wszystkimi projektami! Nawet jak coś okaże się ponad siły, to będzie to lekcja a przy okazji może powstanie coś innego i lepszego. Good Luck!

  2. A tam gość pierdoli żeby Cię zniechęcić. Z tego co zrozumialem to nie masz zamiaru napisać wirtualnego sterownika tylko symulator programowania, a to dwie rozne sprawy. Na twoim miejscu na początku postarałbym sie zbudowac interpreter, który jest w wstanie skonwertować LAD na STL/SCL i na odwrót. W późniejszym czasie logikę sprawdzasz w STL (bądź jeżeli jest Ci bliższy sercu to SCL), a warstwę prezentacji robisz w LAD. Na początku zdefiniuj bloki kodu w SCL na podstawowe bloki w LAD tzn. cewkę, przełącznik, itp. A następnie dodaj interakcję jak przełącznik zwarty to podświetl cewkę itp. Jak zaczynałem naukę programowania PLC to na podobnym symulatorze sie uczyłem (nie miałem licencji na Siemens’a), który znalazłem w sieci. To nie może byc rocket science ! Powo i pozdro, Maciek

    1. Szymon Palczynski

      Siemanko. Dzięki za komentarz Macieju. 🙂 SCL wydaje się być lepszym wyborem, ponieważ według normy IEC_61131-3 STL (wersja Instruction List według Siemensa) jest już przestarzały. Kilka dni temu mój nowy wspólnik, który znalazł mnie dzięki temu blogowi, podesłał mi link do emulatora działającego w przeglądarce. Naszym zadaniem będzie dostarczenie treści zadań, które będzie można zaprogramować i przetestować w online.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *