Prośba o doradzenie systemu/języka przemysłowego

0

Hejka,

bardzo bym prosił by pomógł mi ktoś wybrać (doradził) język programowania, który by pasował do moich oczekiwań i gdyby ktoś mógł odpowiedzieć na parę pytań.

  1. Zastanawiające jest dla mnie programowanie mikrokontrolerów np AVR (chociaż bardziej plc, które zawsze dobrze mi szło) i wiem, że opiera się on na języku programowania "C", czy ucząc się c++ (ponieważ ogólnie bardziej mi się podoba), będę jednocześnie potrafił zwykły język "C" ? Teoretycznie opiera się na "C", ale czy nie ma dużej różnicy, czy jednak spora?

2.Szukam jeszcze jednego programu (języka) do nauki, generalnie moim celem jest stworzeni firmy, która będzie zajmować robieniem programów dla przemysłu oraz tworzeniem stron internetowych. Poszukiwałbym czegoś takiego, co daje duże możliwości, w miarę rozsądny czas tworzenia itd. Zależy mi by można było w tym programowaniu (dziedzinie itd) móc osiągnąć profesjonalizm. Myślałem tutaj o 2 językach
a) C#
b) Java
Szukałem dużo na internecie, ale porównanie dotyczy tylko robienia aplikacji smartfonowych, co w ogóle nie jest w polu moich zainteresowań.

  1. Ogólnie do powyższych obszarem moich zainteresowań jest automatyka i przemysł, dobrze znam programowania (PLC) w firmowych developerach, programowanie typu FBD (bramki logiczne), a juz najbardziej LAD, czyli taka wizualna drabinka, było dla mnie czymś super i sama logika programowania strasznie mi się podobała, fajnie by było, żeby ten język miał podobną logikę programowania.
0

Jeżeli chciałbyś programować AVR (czy inne) w C to po co uczyć się C++ jak może skończyć się na tym, że nie użyjesz 90% funkcjonalności C++ w uC?
Co prawda jest Arduino który jest oparty C++ ale więcej się tu nie wypowiem bo nie znam tej platformy.

0

Programowanie AVR to nie jest to, do czego chciałbym się ograniczyć, a wydaje mi się, że teraz się stopniowo już od zwykłego "C" odchodzi.

A mógłby ktoś się wypowiedzieć w temacie tych dwóch języków, na którym skupiając się czułbym się usatysfakcjonowany ?

0
Frekz napisał(a):

wydaje mi się, że teraz się stopniowo już od zwykłego "C" odchodzi.

W AVR'ach nadal króluje C.
Chyba, że myślisz o architekturze ARM na których będzie Embedded Linux co da Ci już więcej możliwości co do wyboru języka - z tego co wyczytałem da się programować w Pythonie właśnie na takim systemie.

2

Zadałeś pytanie, które wywoła wiele burzy :P Czy lepsze C czy C++. Mogę się tylko wypowiedzieć jak to z mojego punktu widzenia wygląda. Ogólnie programując mikrokontrolery takie jak avr itd. nie ma sensu pchać się w c++. Programy w C++ są nieco większe a korzyści z użycia języka obiektowego są niewielkie. Dodatkowo zwykle 75% pracy to czytanie dokumentacji jaki to rejestr masz skonfigurować, co gdzie wpisać i sam C Ci do tego wystarczy. Pozostałe 25% to właśnie ta Twoja logika programu.
Dodam jeszcze od siebie, ze jak dopiero zaczynasz przygodę z mikrokontrolerami to avr jest jak najbardziej odpowiednie bo jest prosty w swoim działaniu i wiele się nauczysz jednak biznesowe projekty w 99% korzystając z mikrokontrolerów arm. O ich zaletach znajdziesz mnóstwo informacji w internecie. Jak będziesz chciał się pobawić arm'em to polecam zacząć od mikrokontrolerów STM32. Posiadają one bardzo dobrą dokumentację i pisanie aplikacji pod nimi jest bezproblemowe. Dodatkowo STM wprowadził sobie tzw. biblioteki HAL. Stanowią one wysokopoziomowy interfejs do części sprzętowej mikrokontrolera. W praktyce oznacza to, że zamiast wpisywać do rejestrów pojedyńcze bity wykorzystujesz jedną z funkcji z biblioteka HAL, która to robi za Ciebie.
Mogę przytoczyć jeszcze jedną zaletę języka C. Jakiś czas temu miałem spotkanie z firmą, która to jest podwykonawcą dla Amerykańskiego DARPA. Zajmowali się właśnie częścią programową mikrokontrolerów i używali czystego C (dla większego bezpieczeństwa, mniejszego kodu, itp.) oraz bibliotek także napisanych w C w celu zapewnienia wielowątkowości.
Trochę inaczej ma się sprawa gdy stawiasz sobie na tym mikrokontrolerze jakieś system operacyjny jak np. RTOS. Wtedy programowanie w języku C++ jest trochę łatwiejsze bo zaczynasz pisać program trochę jakbyś pisał do wykonywania na komputerze.
Jeżeli postawisz sobie jakiegoś linuxa to twój problem się rozwiązuje bo wtedy piszesz już w czym tylko dusza zapragnie.
Podsumowując myślę, że powinieneś się skupić na języku C a jeżeli będziesz musiał napisać coś w C++ to wtedy dość prosto (mając podstawy z C) przejdziesz na niego.

Jako drugi język do nauki polecam java. Jest ona dość prosta, bardzo duże wsparcie programistów więc jak będziesz miał problem na pewno znajdziesz rozwiązanie. Choć w temacie wyższości jednego języka nad drugim nie chce się wypowiadać bo każdy z nich ma swoje zalety.
Uf ale się rozpisałem. To jeszcze w temacie PLC coś powiem :P Także na nie pisałem. Wiele firm wykorzystuje właśnie ten język drabinkowy (LD) ze względu na jego prostotę i sposób w jaki przedstawia on wykonywanie zadań. Patrząc na taką (prostą) drabinkę nawet niedoświadczona osoba (czyli np. elektryk w zakładzie) będzie wiedział mniej więcej jak to działa i jak to zwykle w bywa samemu coś poprawić jak się zepsuje :P Pamiętaj tylko, że oprócz LD mamy też SFC, FBD, St, IL oraz jak mnie pamięć nie myli ASTOR umożliwia robić wstawki w języku C (widzisz, kolejna zaleta C ). Zostają jeszcze panele HMI do oprogramowanie ale jak ogarniesz komunikację miedzy PLC a HMI co zwykle sprowadza się do "wyklikania" ustawień to samo projektowanie wizualizacji panelu zwykle opiera się na metodzie drag'n'drop

Mam nadzieję, że Ci choć trochę pomogłem i nie zamieszałem zbyt :P

0

Dzieki za dluga odpowiedz :D, a powiedz mi, uzywaja jeszcze ludzie jezyka "C" ? Bo tak ogladajac wszystkie statystyki to raczej wyglada jakby popularnosc tego jezyka malala, a tez troche uczyc sie jezyka, ktory "odchodzi do lamusa" byloby jak strzal w kolano w przypadku prowadzenia firmy i proby jako tako wyczucia rynku. O tyle o ile uczyc sie 2 jezykow programowania nie byloby dla mnie problemem o tyle proba nauki 3 jednoczesnie mogloby sie skonczyc bolem glowy, ty bardziej, ze mam dosyc napiety grafik.

Dlatego tez tak dopytuje, bo w sumie mam od jakiegos czasu zakupiona ksiazke Szkola Programowania C++ jak dobrze kojarze i zastanawiam sie, czy uczenie sie z tego duzo odbiega np od zwyklego "C" i czy lepiej jednak zakupic ksiazke do "C" i tego sie uczyc? Pytam z tego powodu, ze inwestycja pieniedzy nie jest dla mnie az takim problemem, ale inwestycja czasu w cos ,co tak naprawde w chwili gdy sie naucze bedzie powiedzmy juz troche bolesna. Bo trzeba wziac pod uwage, ze nauczenie sie programowania na poziomie, gdzie moge to "sprzedac" to licze sobie 4-5 lat, a boje sie, ze to tego czasu sie wycofaja z "C"

0

Te statystyki, które widziałeś pewnie dotyczyły ogólnie wszystkich języków programowania (tam pewnie java była na pierwszym miejscu). W wypadku mikrokontrolerów w większości przypadków spotkasz się z językiem C, którego popularność na tych platformach jest bardzo duża. Możesz sobie też pooglądać różne projekty na np. github dotyczące avr, arm itp. i sam sobie porównasz ile z nich jest w C a ile w C++. Nie chcę Cię martwić ale jak chcesz to sprzedawać to niestety musisz poznać zarówno C jak i C++ a najlepiej jakbyś jeszcze asemblera (ale to na końcu w wolnej chwili) do tego dorzucił bo jak Ci coś nie będzie działać to już jest niskopoziomowa zabawa :/
Musisz tylko znać różnice między takim standardowym proceduralnym pisaniu kodu, wymianie danych między peryferiami itp. (czyli prawie 95% to C) a wysokopoziomowym programowanie (czyli tak jak programujesz na komputerze) gdzie stawiasz sobie linuksa albo coś podobnego na klocku i tam już dusza wolna w czym będziesz pisał (choć i tak jak będziesz chciał sterować peryferiami podłączonymi do mikrokontrolera będzie to C, rzadziej C++ czasem też java bądź python albo jeszcze inny framework jak np. LUA). Podsumowując ja i tak uważam, że warto zacząć od C ale może jeszcze poczekajmy jak ktoś inny się wypowie. Fajnie byłoby gdybyś sobie znalazł jakiś staż w firmie, która zajmuje się właśnie embeddami i tam na żywo zobaczysz jak to wygląda, jak się wybiera język, technologie, sprzęt itp. Na pewno nauczysz się więcej niż z książki a dodatkowo pozwoli Ci to poznać rynek.
Jeżeli chodzi Ci o sam rynek IT i język C to jest on bardzo rzadko używany. Pytają o niego głownie na rekrutacji bo fajnie jak go znasz i jak trafi do was jakiś kod w C to sobie poradzisz. A tak to króluje (jako back-end) Java, C++, C# itd. Zresztą co chwile są udostępniane w necie nowe statystyki, który to język jest teraz na topie.
Jeszcze dodam tylko, że ta książka która kupiłeś owszem nauczy Cię podstaw C++ ale niewiele o embeddach. Jak chcesz się bawić w embeddy to znajdź coś innego bo programowanie ich jest troszkę bardziej skomplikowane niż pisanie programów na komputer. Tam prócz wykonywania cześć logicznej kodu (czyli np. wyliczanie jakieś wartości) sterujesz też licznymi peryferiami, które to musisz umieć skonfigurować i obsłużyć.

0

Warto poznać gołe C ze względu na to że jest to bardzo prosty język a jednocześnie często wykorzystywany w projektach sprzętowo-programowych.
Ale jest jeszcze kilka domen w których C jest stosowane, np. HPC.
Polecam przerobić przynajmniej jedną książkę o tym języku.
A potem co będziesz się uczył to powinno zależeć głównie od tego czym się będziesz interesował.
Java czy C++ to języki o wielu zastosowaniach, ale też raczej są to zastosowania różne.
Być może będziesz chciał je poznać potem oba. Java jest łatwiejsza, ale C++ jest bardziej zbliżony do C (jest jego nadzbiorem).
W C++ szybciej znajdziesz robotę na mikrokontrolery (czy SoC) niż w Javie.
Java obecnie na tego typu maszynkach zdarza się, ale to chyba niszowe rozwiązania (odbiorniki satelitarne, WebSphere Liberty na Raspberry Pi, możliwe że telewizory - smart TV).

Tu np. okazuje się że Smart TV można programować w JavaScript:
http://blog.atena.pl/platforma-developerska-samsung-smarttv

0
  1. C jest na drugim miejscu . https://www.tiobe.com/tiobe-index/
  2. Mikrokontroler to komputer.
0

Ja niestety niemam mozliwosci znalezienia sobie stazu w w.w branzy. Ogolnie ja mam parace na etacie jako specjalista od automatyki, ale nie jest to strikte praca, ktora chce wykonywac zawsze, a przynajmniej nie zarabiac na kogos. Do tego dochodza studia automatyczne, gdzie moge co prawda posmakowac troche zycia (programowanie i projektowanie), ale abstrachujac od tego jak patrza chlopcy na dziennych, niestety wiem, ze ta technologia i sposob, ktore nauczaja na studiach jest malo spojna z zyciem i normalna praca (mimo nawet dobrej uczelni). Najlepszy przyklad mialem po elektronice, gdzie pan po 30, doktor specjalista w swojej dziedzinie opowiadal o najnowszej technologii, ktora w prawdziwym swiecie jest juz o 50 lat przestarzala...

Co do zarobkowego posiadania firmy jesli chodzi o programowanie mysle, ze raczej bym bazowal na tworzeniu stron internetowych. Bardzo fajnie mozna zarabiac na przerabianiu sterowan maszyn produkcyjnych, gdzie koszty sa w tysiacach a zyski w setkach tysiecy, ale nie jest to najlepszy rynek na poczatek niestety, jedyne co wystarczy znac to sterownia siemensa, mitsuishi i haidenhaina zazwyczaj, poniewaz sa najpopularniejsze, chyba , ze Fanuca po kosztach xD.

Co do tego co pisales o plc ja generalnie potrafie dosc dobrze LAD, SFC, FBD, z IL jest duzo gorzej, poniewaz nigdy mi nie byl potrzebny, jedynie gdzie te rodzaj kodu spotkalem to na maszynach 40 letnich, ale nawet tutaj, zeby ktos zalaczyl program PLC bywa ciezko (zazwyczaj robia z tego tajemnie), weic znajomosc IL zawsze byla dla mnie tabu :).

Co do "C" to sprobuje :), w sumie z C++ jestem na samym poczatku (50 strona), wiec zle nie bedzie :D, ale mam tez takie moze dosc glupie pytanie, czy sam "C" da sie sprzedac? Tzn czy jest na to popyt jesli chodzi o projekty czy jakies inwestycje?

W sama jave chce wejsc bardziej ze wzgledu na robienie stron internetowych, moze tez jakies pomniejsze programy gdyby bylo zapotrzebowanie.

Mam tez takie pytanie troche z innej beczki. Gdybym chcial stworzyc program, ktory wyswietla mi "mape" i opis maszyn na hali, zrobic dla kazdej stan czesci, naprawy, przeglady itd itd w ramach programu, nie zeby sie wyswietlala lista jak w notatniku, tylko zebym mogl sobie z menu wybrac itd itd. Czy jest mozliwosc robienia podobnych programow np w C lub Javie (warto sobie ulatwiac prace :D ) ?

Ahh i jeszcze jaka ksiazka do tego "C" bedzie fajna? Podpowiem Od razu, ze probowalem juz jakis czas temu C++ z "Symfonia" jak dobrze pamietam tytul i kompletnie nie podeszlo to do mnie.. jak mi nawali 40 petli jedna po drugiej to uznalem, ze ten pan chce mnie chyba oszalec :).

0
Frekz napisał(a):

Mam tez takie pytanie troche z innej beczki. Gdybym chcial stworzyc program, ktory wyswietla mi "mape" i opis maszyn na hali, zrobic dla kazdej stan czesci, naprawy, przeglady itd itd w ramach programu, nie zeby sie wyswietlala lista jak w notatniku, tylko zebym mogl sobie z menu wybrac itd itd. Czy jest mozliwosc robienia podobnych programow np w C lub Javie (warto sobie ulatwiac prace :D ) ?

Jeśli chodzi o GUI to w Javie zrobisz to raz na kilka systemów.
W C++/Qt zrobisz to raz, ale będziesz musiał przekompilować na każdy system osobno.
W C to raczej jakieś tylko proste interfejsy (w rodzaju kasy fiskalnej czy panelu sterowania maszyny).

Do C polecam:

  • Język ANSI C. Programowanie. Wydanie II, Brian W. Kernighan, Dennis M. Ritchie (klasyka)
  • Język C. Szkoła programowania. Wydanie VI, Stephen Prata

Ew. możesz spróbować książki "łączonej":

  • "Język C dla mikrokontrolerów AVR. Od podstaw do zaawansowanych aplikacji", Tomasz Francuz (nie czytałem)

Tu masz więcej: http://helion.pl/kategorie/programowanie/c

0

Z tym IL masz rację, też się raz w życiu tylko z nim spotkałem :P ale talk z rozpędu napisałem. Samo C sprzedasz jak będziesz programował army itp. Jeżeli będziesz robił bardziej w IT to z samym C raczej się nie sprzedasz. Zobacz sobie oferty pracy tam masz przede wszystkim języki obiektowe wymagane i frameworki. Nie mówię, że nie ma sensu w C się pchać bo może Ci się trafić w nim jakieś zastany kod. Usiądź sobie na spokojnie, zobacz co najbardziej Cie interesuje czy front-end (czyli tworzenie stron internetowych) i tu masz HTML,css, bootstrap, javascript, angular, js, php, bower i setkę innych języków/frameworków czy bardziej back-end (odpowiadający za logikę,sterowanie itp.) i w tym wypadku masz tą Jave, C#, C++, Spring i inne frameworki i wszystkie takie języki. I trzecia opcja full-stack połączenie oby dwóch.
Co do tej mapy to tu już polecam języki wysokopoziomowe bo wprowadzając abstrakcje dużo łatwiej się to pisze więc możesz sobie wybrać jaki dokładnie chcesz. Od siebie jak zwykle mogę polecić Jave (bo ją uwielbiam :D) a tak poważnie zakładam, że do tej mapy chciałbyś aby miał dostęp każdy na hali aby móc wrzucać nowe informacje, zmieniać statusy itp. więc najlepiej byłoby to zrobić właśnie w formie strony internetowej. Jako back-end możesz wykorzystać Jave/Spring framework a front-end to już sam wybierzesz.
Dodam jeszcze, że dla takich celów jak Ty chcesz jest stworzony specjalny język SAP/ABAP (tworzysz za jego pomocą "program", który to służy właśnie do planowania napraw, zgłaszanie zapotrzebowań na części, planowań zatrzymania maszyny, przeglądów, generowania raportów, zarządzanie zasobami ludzkimi i całe mnóstwo innych rzeczy zależnie jaki moduł dodasz) ale to już wyższa szkołą i bez zatrudnienia się w jakiejś firmie raczej sam się tego nie nauczysz (ze względu na koszty samych licencji itp.)
Najlepiej będzie jak usiądziesz na spokojnie i zastanowisz się co chcesz robić bo widzę, że jesteś rozdarty co Ty chcesz robić w przyszłości :P

0

Z systemem Linux, Unix związany jest bardzo blisko język Python. Praktycznie jest wszędzie.

0

A moglibyście jeszcze coś podać (książki) pod Jave? I jaki język byłoby w miarę rozsądnie połączyć z "C" lub "Java" pod ten cały front-end?

0

Lua lub Python, do tego JS.

0

Czy bylby ktos w stanie podac jakies fajne ksiazki do javy? Thinking in java czytalem, ze najlepsza, ale nie dla kompletnego zera w programowaniu. Sa tutaj ludzie majacy wyprobowane tytuly i zmierzone z realiami?

0

Tak jak mówisz, Thinking in Java. Możesz też spróbować Java Podstawy i choć jest ona dość fajnie napisana to na początek może być dla Ciebie nuda. Myślę, że najlepiej będzie jak spróbujesz Java Rusz głową. Książka ta napisana jest w mało profesjonalny sposób (w sensie, rozdziały pt. wymyślmy superfotel......) ale jeżeli nic nie umiesz to na początek będzie Ci się najłatwiej czytało (wszystko wyjaśnione bardzo prostym językiem). Po niej już te co podałem

1 użytkowników online, w tym zalogowanych: 0, gości: 1