Elektroda.pl
Elektroda.pl
X
BotlandBotland
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Arduino, Raspberry PI w przemyśle

dondu 29 Cze 2020 09:18 2961 74
  • #1
    dondu
    Moderator Mikrokontrolery Projektowanie
    Temat ten powstał, by przenieść część dyskusji z tematu o zarobkach w branży: https://www.elektroda.pl/rtvforum/topic3703047-60.html

    Po dziesięciu latach od napisania gdzieś na mojej stronie o Arduino, iż nie jest to środowisko dla przyszłych studentów informatyki, elektroniki, mechatroniki, itp. świat Arduino tak się rozwinął, że muszę zmienić nieco swoje zdanie :)

    Nadal oczywiście uważam, że studenci informatyki i elektroniki powinni programować mikrokontrolery bez wykorzystania uproszczonych środowisk, ale już mechatronik i im podobni, mogą wykorzystać dostępne w świecie rozwiązania dedykowane przemysłowi oparte o Arduino, czy Raspberry Pi.

    Są bowiem platformy takie jak PiXtend i Industruino:

    Platforma przemysłowa Raspberry PI: https://www.pixtend.de/


    Link


    Platforma przemysłowa Arduino: https://industruino.com/


    Link
  • BotlandBotland
  • #2
    _lazor_
    Moderator Projektowanie
    W przemyśle istotnie jest to by kod był pisany z pewnymi standardami choćby MISRA, którą może i nie wszyscy chwalą ale gdy się pisze kod pod takie urządzenie jak ACS380 czy ACS580 jest podstawą i kod musi przejść odpowiednie checkery i analizę statyczną.
    Nie mówiąc już o certyfikacie SIL, czy ktoś by taki kod na arduino certyfikował?

    Ogólnie projekty, które nie traktują poważanie certyfikatów i ja nie traktuję poważnie. Od taki projekt na własne potrzeby, który może mieć wiele niedociągnięć.
  • BotlandBotland
  • #3
    dondu
    Moderator Mikrokontrolery Projektowanie
    Oczywiście standardy są istotne, ale przemysł to nie tylko wielkie fabryki samochodów, ale także małe firmy, gdzie w szczególności liczą się niskie koszty implementacji i tani serwis za 3000zł, a nie za 13000zł miesięcznie. Mikro (96,2%), małe (2,8%) i średnie firmy (0,8%), to 99,8% wszystkich podmiotów prowadzących działalność w Polsce. Wytwarzają odpowiednio 31%, 8% i 11%, razem dokładnie 50% PKB.

    Nikt poważny nie zainstaluje tego w fabryce samochodów, ale z drugiej strony podobnie myślałem 10 lat temu o Arduino w przemyśle :D
  • #4
    Krzysztof Kamienski
    Poziom 43  
    dondu napisał:
    Nikt poważny nie zainstaluje tego w fabryce samochodów, ale z drugiej strony podobnie myślałem 10 lat temu o Arduino w przemyśle
    Sześć lat temu zastosowałem Arduino w przemyśle. Proste zastosowanie w synchronizatorze kolorów w maszynie drukarskiej. Zabezpieczone ile wlezie z każdej strony :D - in, out transoptory i SSRy. Zasilacz transformatorowy, liniowy z crowbarem. I działa sobie do dziś bezawaryjnie.
  • #5
    dondu
    Moderator Mikrokontrolery Projektowanie
    :D :D :D

    No właśnie te dodatkowe zabezpieczenia zapewne są w tych wersjach zaprezentowanych w pierwszym poście, a to jest przecież niezmiernie istotne, wręcz to "gardłowa sprawa", by sprzęt użyć w przemyśle.
  • #6
    atom1477
    Poziom 43  
    Tu nie chodzi o standardy i certyfikaty, lecz o poprawne napisanie aplikacji.
    Standardy i certyfikaty to tylko formalizmy/biurokracja. Które oczywiście potwierdzają poprawność napisania aplikacji, co jednak nie znaczy że przy ich braku aplikacja jest napisana źle.
    Oczywiście takich poprawnie napisanych aplikacji nie ma dużo, no ale zdarzają się.
    Różne cuda ludzie robią. Widziałem mikroskopy elektronowe, reaktory jądrowe czy jakieś zaawansowane sterowania do dronów. Da się zrobić to amatorsko w domu, to się i da napisać poprawną aplikację (nawet na Arduino) bez posiadania certyfikatów. Tylko trzeba chcieć, mieć profesjonalne podejście do wykonywanej roboty, i po prostu rozumieć co się robi i po co.
    I to właśnie z tym jest problem, a nie z tym że na końcu ktoś nie zrobił certyfikatu na program (zresztą sama procedura certyfikacji nic by nie dała, skoro wcześniej program by po prostu nie spełniał warunków tej certyfikacji (czyli po prostu procedura certyfikowania nie powiodła by się)).
  • #7
    khoam
    Poziom 38  
    dondu napisał:
    No właśnie te dodatkowe zabezpieczenia zapewne są w tych wersjach zaprezentowanych w pierwszym poście, a to jest przecież niezmiernie istotne, wręcz to "gardłowa sprawa", by sprzęt użyć w przemyśle.

    Te zabezpieczenia, bardzo istotne, nie mają nic wspólnego z platformą programistyczną Arduino. Trzeba się zdecydować, czy ktoś chce dyskutować na temat oprogramowania budowanego w oparciu o platformę programistyczną Arduino z użyciem C++ czy projektowaniu sprzętu spełniającego określonego wymagania dla określonych zastosowań Mieszanie dwóch różnych pojęciowo spraw nie ma sensu.

    Natomiast RPI to nie jest platforma programistyczna, to przede wszystkim rozwiązanie sprzętowe, gdzie używany jest linuks i wcale nie musi to być Raspbian.
  • #8
    dondu
    Moderator Mikrokontrolery Projektowanie
    khoam napisał:
    Te zabezpieczenia, bardzo istotne, nie mają nic wspólnego z platformą programistyczną Arduino. Trzeba się zdecydować, czy ktoś chce dyskutować na temat oprogramowania budowanego w oparciu o platformę programistyczną Arduino z użyciem C++ czy projektowaniu sprzętu spełniającego określonego wymagania dla określonych zastosowań Mieszanie dwóch różnych pojęciowo spraw nie ma sensu.

    Nic nie pisałem o platformie programistycznej.
  • #9
    khoam
    Poziom 38  
    dondu napisał:
    Nic nie pisałem o platformie programistycznej.

    I to jest zasadnicza wada tematu tego wątku i pierwszego postu. Nierozróżnianie platformy programistycznej od sprzętowej.
  • #10
    dondu
    Moderator Mikrokontrolery Projektowanie
    khoam napisał:
    dondu napisał:
    Nic nie pisałem o platformie programistycznej.

    I to jest zasadnicza wada tematu tego wątku i pierwszego postu. Nierozróżnianie platformy programistycznej od sprzętowej.

    Przecież nikt nie broni Ci o tym pisać. Ja jedynie zwracam uwagę, że cytując mnie zarzucasz mi coś, do czego się nie odnosiłem.
  • #11
    khoam
    Poziom 38  
    dondu napisał:
    studenci informatyki i elektroniki powinni programować mikrokontrolery bez wykorzystania uproszczonych środowisk

    Stosowanie "uproszczonych" środowisk, cokolwiek Autor miał na myśli, nie wyklucza stosowania bardziej zaawansowanych mechanizmów programistycznych, w tym nawet wstawek kodu w asemblerze i operowania rejestrami procesora. Jakość oprogramowania w pierwszej kolejności będzie zależała od "jakości" programisty, jego wiedzy i doświadczenia, a nie od używanych przez niego środowisk. Kierowca z prawem jazdy kategorii B, jak wsiądzie do Ferrari formuły 1 nie stanie się automatycznie kierowcą rajdowym, nawet jak będzie o tym mocno przekonany. Przezabawne są czasami komentarze, które pojawiają się regularnie na elektrodzie w stylu: "jak użyjesz Arduino, to nie będzie to dobrze działać" - nie wiadomo o co chodzi, ale jest śmiesznie.
  • #12
    dondu
    Moderator Mikrokontrolery Projektowanie
    khoam napisał:
    Stosowanie "uproszczonych" środowisk,

    khoam, czytaj proszę dokładnie do czego się odnosisz. Moja wypowiedź w tym zakresie dotyczyła studentów, a nie stosowania w przemyśle (zakres tego tematu) - patrz pierwszy wyraz cytatu, który wkleiłeś.
  • #13
    _lazor_
    Moderator Projektowanie
    khoam napisał:
    zaawansowanych mechanizmów programistycznych, w tym nawet wstawek kodu w asemblerze i operowania rejestrami procesora

    I tutaj jest problem, to są podstawy programowania embedded, Ty już piszesz że to zaawansowane mechanizmy programowania... Jednak co prawda to prawda programista programiście nie równy i to w jakich projektach się obraca kształtuje jego światopogląd.

    Wykonywanie coraz większej ilości akcji za pomocą coraz mniejszej ilości kodu oznacza często że osoba nie ma pojęcia co tak naprawdę jego kod wykonuje. Potem powstają takie potworki jak to:
    https://www.elektroda.pl/rtvforum/topic3509381.html

    Arduino to jest kolejna warstwa abstrakcji, która powoduje że osoba na tym pracująca nie ma pojęcia jak to wszystko działa. I przesuwają się znaczenia podstawowych mechanizmów programowania w kierunku zaawansowanych mechanizmów, a naprawdę zaawansowane mechanizmy zaczynają zanikać z świadomości użytkowników?
  • #14
    BlueDraco
    Specjalista - Mikrokontrolery
    Od ponad 12 lat nie popełniłem żadnej wstawki w asemblerze dla żadnego mikrokontrolera - widocznie nie znam "podstaw embedded"... ;)

    Ja bym wskazał na kilka różnych aspektów:

    1. Sprzęt. RPi Czy Ard... (niekoniecznie same płytki z MCU, ale te tysiące modułów peryferyjnych) - to tanie i bardzo elastyczne środowisko do zabaw, prototypowania i jednostkowych aplikacji o niekrytycznej niezawodności. Mechanicznie niestety nic z tego się nie ostoi - można tego użyć w biurze lub muzeum, ale już nie w garażu, warsztacie, nie w terenie itd. - styki śniedzieją, przewody i złącza wyskakują, karty SD w RPi tracą kontakt - same przyjemności. Jeśli coś ma jeździć/latać/trząść się/marznąć, to nie tędy droga, niestety.
    2. środowiska programowania - Arduino jest po prostu odmóżdzające. Uczy zabawy kolorowymi klockami, a nie projektowania, więc również nadaje się do zabawy, a nie realnych zastosowań. Niemniej można na tym zrobić jednostkowe, nietypowe urządzenie do laboratorium lub podlewania roślin na parapecie w domu.
    3. To, co w Arduino najgorsze: wpajanie chorych wzorców - loop(), delay(), zmienne zamiast stałych - czyli inaczej: jak nie projektować. Szkody, jakie loop() robi w świadomości młodych adeptów są ogromne, co widać w połowie postów na Elektrodzie - bez "pętli głównej" życie nie istnieje.
    4. Przywiązanie do archaicznej, niewydajnej i drogiej platformy AVR. Tak, wiem, środowisko Arduino obsługuje dziesiątki innych platform (w tym ESP i STM32), ale jaki procent użytkowników Ardu z nich korzysta? Zresztą nie oszukujmy się, w schemacie programowania Arduino, gdzie bez biblioteki z dziesięcioma warstwami pośrednimi nie można zaświecić diody, zabijemy wydajność każdej platformy, i tu zapętlamy się do punktu 2. powyżej.
  • #15
    dondu
    Moderator Mikrokontrolery Projektowanie
    Masz oczywiście rację, ale z drugiej strony w przemysłowym sterowaniu często liczą się zero-jedynkowe procesy, a do tego ta platforma może wystarczyć. Innymi słowy jakość wyrobu oceniana np. przez kamerę z dedykowaną do tego elektroniką daje zero-jedynkową odpowiedź do systemu - wyrób OK lub wyrób nie OK, a tę informację może dalej wykorzystać taki system jak pokazane w pierwszym poście.

    W takich zastosowaniach nawet tak nieoptymalne rozwiązania dadzą spokojnie radę sterować skomplikowanymi procesami.

    W sumie to PLC jest takim Arduino z pętlą Loop i delay-ami, i też nie mamy dostępu bezpośrednio do procesora, ale można na tym tworzyć całe fabryki :)

    Zwróciłem uwagę na pewien fenomen, że po kilkunastu latach zupełnie niedocenione przez fachowców środowisko nagle wchodzi w obszar, w którym zaczyna się rozpychać,jako alternatywa dla drogich profesjonalnych urządzeń.
  • #16
    czareqpl
    Poziom 29  
    Przy tego typu modułach warto wspomnieć o byle jakim lub całkowitym braku ochrony ESD. O ile podlewaczka na parapecie nie stanowi infrastruktury krytycznej o tyle zastosowanie "shielda" w fabryce może przysporzyć wiele problemów.

    Inną sprawą jest zgodność z normami EMC/EMI. Płytki tego typu rzadko są badane pod kątem zgodności z normami EMC/EMI dla produktów konsumenckich oraz normami medycznymi w przypadku różnych czujników parametrów fizjologicznych.

    To są zabawki (niektóre naprawdę imponujące), które ze względu na brak gruntownej wiedzy i braki kadrowe, przedsiębiorcy próbują chyba wepchnąć kolanem na rynek profesjonalny.
  • #18
    _lazor_
    Moderator Projektowanie
    BlueDraco napisał:
    Od ponad 12 lat nie popełniłem żadnej wstawki w asemblerze dla żadnego mikrokontrolera - widocznie nie znam "podstaw embedded"...


    Przez 12 lat nie modyfikowałeś żadnego startup'u lub nie wstawiłeś "nop"? ;)



    Co do tematu to czasem mam wrażenie że w Polsce mocno utrzymuje się mentalność że jak coś działa tu i teraz to znaczy że jest cacy i nikt nie myśli co z tym będzie za 5 lat, czy jak przyjdzie nie spodziewane wydarzenie i układ się zepsuje to narzekanie jaki to szmelc.
    Pikuś jak to są jakieś nie krytyczne elementy i to na użytek własny, to może i jak najbardziej może być użyte, w końcu firma która to wprowadza bierze za to odpowiedzialność. Gdy jednak robi się rzeczy na większą skalę (jak np wspomniane PLC) to renoma firmy i odpowiedzialność za sprzedany produkt jest dużo większa. No i jeśli firma chce mieć gwarancję na kupiony produkt to nie będzie się bawiła w kogoś co by im to zrobił często w cenie gotowego rozwiązania (z gwarancją działania) lub nawet większą.
  • #20
    _lazor_
    Moderator Projektowanie
    dondu napisał:
    Dochodzę do wniosku, że jeśli wykonają wreszcie IDE na poziomie innych profesjonalnych IDE, to nastąpi rewolucja


    Taa, autosar do przemysłu? Autosar idzie podobnym pomysłem, ale w tym naprawdę dobrze płacą i teraz jest ogromne zapotrzebowanie na to, ale... Ja podziękowałem za pracę w tym. Ja jednak lubię pomyśleć jak rozwiązać problem na poziomie całego systemu, a nie że cały system jest już ustalony za mnie a ja muszę dopasować się do systemu...
  • #21
    dondu
    Moderator Mikrokontrolery Projektowanie
    Problem jest jeszcze na gruncie społecznym. Sądzę, że można śmiało powiedzieć o "Pokoleniu Arduino", które niechybnie przejmie pałeczkę od "starych inżynierów", i przeniesie Arduino na część przemysłową. W sumie to już to się dzieje na naszych oczach. Ciekawie będzie spojrzeć na ten proces za kolejne 10 lat :)

    Dodano po 4 [minuty]:

    A patrząc historycznie ten sam problem był na etapie przechodzenia z assemblera na języki np. C. Też był wielki opór "starej twardej gwardii". Teraz właściwie nie ma już dyskusji w tym zakresie, ale jeszcze 10 lat temu byli wierni obrońcy assemblera - teraz zapewne używają C, itp.
  • #22
    khoam
    Poziom 38  
    dondu napisał:
    Problem jest jeszcze na gruncie społecznym. Sądzę, że można śmiało powiedzieć o "Pokoleniu Arduino", które niechybnie przejmie pałeczkę od "starych inżynierów", i przeniesie Arduino na część przemysłową. W sumie to już to się dzieje na naszych oczach.

    Na chwilę przerwę milczenie i dodam od siebie kilka słów. Jako dumny przedstawiciel "starych inżynierów" (50+), z ponad 20 letnim doświadczeniem programisty w C++ kilka lat temu postanowiłem zainwestować sporo czasu w poznawanie platformy programistycznej Arduino od tzw. środka. Robię to do dzisiaj pomimo wszechobecnych tzw. FUD na temat Arduino. Niczego nie żałuję. W tej chwili na świecie jest setki tysięcy (jeśli nie miliony) urządzeń IoT, których oprogramowanie bazuje na Arduino Core. Może być tylko więcej :)

    Miłego dnia.
  • #23
    _lazor_
    Moderator Projektowanie
    Ja bym obstawiał że to wypełni jakąś nisze, ale nie wejdzie w sprzęt bardziej zaawansowany. To że coś wygląda prosto (jak np taki panel dla ACS580), nie oznacza że jest prosty i pisząć bardzo wydajnie nie brakuje już na nim zasobów czy to pamięci czy cykli.
    A jeśli arduino by wymagało korzystania z większych i mocniejszych układów (a co za tym idzie droższych) to się nie przebije. Pamiętaj że koszt developerów jest wysoki, ale jednorazowy, a produkt będzie się sprzedawał latami i koszt elektroniki skaluje się z ilością sprzedanych urządzeń.
  • #24
    khoam
    Poziom 38  
    _lazor_ napisał:
    A jeśli arduino by wymagało korzystania z większych i mocniejszych układów (a co za tym idzie droższych) to się nie przebije.

    Już korzysta z 32 i 64-bitowych RISC-V. Dzięki zachowaniu oryginalnego Arduino Core API, łatwiej (i taniej) jest migrować biblioteki czy programy.
  • #25
    _lazor_
    Moderator Projektowanie
    Tylko RISC-V to architektura, a jaka implementacja? Jedyna implementacja embedded to z subsetem E, która jest traktowana jako mikrokontroler, pozostałe implementacje to już procesory i można na nich bez problemu uruchomić linuksa. Różnica między tymi implementacjami jest taka jak między cortex-m a cortex-a ;)

    Mogę przedstawić taki problem i jestem ciekawy jak rozwiąże go taka platforma jak arduino. ST w swoich układach dorzuca czasem taką pamięć jak CCM, jest to pamięć szybka (dostęp w jednym cyklu, bo do flash i zwykłego ramu nie jest już to zapewnione) i jak pisze sobie bez żadnej platformy to dość prosta modyfikacja linkera, trochę przepisać startup i mam już kod wykonywany z pamięci CCM. Kiedyś dzięki temu rozwiązaniu uzyskałem około 20% większą prędkość wykonywania się kodu.

    Pytanie czy platforma arduino pozwala na tego typu modyfikacje?
  • #26
    khoam
    Poziom 38  
    _lazor_ napisał:
    Pytanie czy platforma arduino pozwala na tego typu modyfikacje?

    To jest kwestia wyboru IDE. Jeżeli np. zostanie użyte PlatformIO do budowy projektu z STM32, to jest możliwość modyfikowania i pisania własnych skryptów linkera. Niezależnie od tego, czy w tym projekcie zostanie użyte Arduino HAL, czy też nie.
    https://docs.platformio.org/en/latest/projectconf/advanced_scripting.html
    https://docs.platformio.org/en/latest/platforms/ststm32.html
    Używam PIO, ale nie z STM32, więcej szczegółowych nie jestem w stanie podać.

    _lazor_ napisał:
    Tylko RISC-V to architektura, a jaka implementacja?

    Przykładowy przegląd. Bez trudu można informacje na ten temat odnaleźć w necie.
    https://www.seeedstudio.com/blog/2019/09/02/2019-risc-v-based-development-boards-collection/
  • #27
    _lazor_
    Moderator Projektowanie
    khoam napisał:

    _lazor_ napisał:
    Tylko RISC-V to architektura, a jaka implementacja?

    Przykładowy przegląd. Bez trudu można informacje na ten temat odnaleźć w necie.
    https://www.seeedstudio.com/bl...development-boards-collection/


    Uruchamiałem risc-V dla pewnej firmy na N, to co nie co się dowiedziałem o RISC-V ;) ale to była krótka przygoda z tą firmą.
    Na wiki masz dobrze opisane co znaczą literki od extension:
    https://en.wikipedia.org/wiki/RISC-V
    Implementacje składa się dość zabawnie bo podstawą jest rvXY - gdzie X to bitowość a Y to I (integer) lub E (embedded) i mniejszego risca się nie da uzyskać, a potem dopiero vendor dorzuca kolejne rozszerzenia instrukcji. Ogólnie można przeczytać w ISA (które polecam bo super jest dzięki dodanym komentarzom, tłumaczącym pewne decyzje), dlaczego wersja E ma tylko 16 rejestrów ;) . Sam rdzeń oprócz wersji E, który ma tylko poziom MACHINE co oznacza hypervisora, pozostałe implementacje powinny według ISA mieć wsparcie dla abstrakcji systemu operacyjnego i wszystkie cechy, które wspomagają np virtualizację.


    Co do modyfikowania linker script, to jeszcze nie wszystko, trzeba jeszcze przecież zmodyfikować plik startup'u aby móc przerzucić kod do odpowiedniej sekcji, gdyż jak dobrze pamiętam arduino korzysta z gcc?
  • #28
    khoam
    Poziom 38  
    _lazor_ napisał:
    Co do modyfikowania linker script, to jeszcze nie wszystko, trzeba jeszcze przecież zmodyfikować plik startup'u aby móc przerzucić kod do odpowiedniej sekcji, gdyż jak dobrze pamiętam arduino korzysta z gcc?

    Tak, korzysta z GCC. Tak, można również modyfikować startup. Bez Arduino HAL lub z nim.
  • #29
    dasej
    Poziom 32  
    Witam.

    dondu napisał:
    .......... Zwróciłem uwagę na pewien fenomen, że po kilkunastu latach zupełnie niedocenione przez fachowców środowisko nagle wchodzi w obszar, w którym zaczyna się rozpychać,jako alternatywa dla drogich profesjonalnych urządzeń.


    I to zaczyna przypominać filozofię chinczyków sprzedać klientowi cokolwiek a czy będzie działać to nie istotne.
    Profesjonalista zrobiłby by porządnie, amator zrobi to na Arduino weźmie dużo niższą kasę i gościu który za to zapłacił będzie się z tym męczył
    nie wiedząc jak by to wyglądało gdyby to było zrobione porządnie przez fachowca.

    Byle jak byle gdzie aby było. Do tego dojdzie w mikro przemyśle z powodu Arduino.
    Każdy kto ma dziurę w ....... będzie coś robił na Arduino i twierdził że niema co przepłacać tym fachowcom.

    Ogólnie poziom wiedzy i wymagań znacznie spadać liczy się tylko chwilowy zysk finansowy,
    a ludzie inteligentni to wymierający gatunek.
  • #30
    _lazor_
    Moderator Projektowanie
    @khoam Czy to:
    https://www.arduino.cc/reference/en/
    To jest to całe arduino core API?