Trwa weekend rabatów! Zamów zestaw do kursu Forbota i zacznij naukę w praktyce. Sprawdź listę zestawów i e-booków »

Przemysłowe komputery SBC – jak zacząć, co warto wiedzieć

Przemysłowe komputery SBC – jak zacząć, co warto wiedzieć

Komputery jednopłytkowe (SBC) stają się coraz popularniejsze – duża w tym zasługa kultowego Raspberry Pi. Warto jednak wiedzieć, jak wygląda praca z przemysłowymi komputerami SBC.

Jakie mają parametry? Jakie wsparcie otrzymamy od producenta? Gdzie się przydają? Sprawdźmy to na przykładzie komputerów MOXA.

Na naszym blogu najczęściej koncentrujemy się na projektach, które bazują na popularnych w gronie hobbystów platformach, takich jak Raspberry Pi czy Arduino. Sporo osób zastanawia się jednak nad możliwością użycia takich płytek w bardziej profesjonalnych, wręcz przemysłowych rozwiązaniach.

Dlatego tym razem, dzięki współpracy z Elmark Automatyka SA, postanowiliśmy sprawdzić, czym są jednopłytkowe komputery przemysłowe firmy MOXA i co odróżnia je od rozwiązań amatorskich – od wyciągnięcia z pudełka, przez zapoznanie się z modułem i realizację przykładowego projektu, aż do przytoczenia prawdziwych przykładów zastosowań dla tego typu układów.

Czym jest system/komputer wbudowany?

System wbudowany (ang. embedded system) różni się od typowego PC tym, że ma dokładnie określone zastosowanie oraz zakres funkcjonalności. Na naszym domowym komputerze możemy napisać dokument tekstowy, zagrać w grę, poczytać ciekawostki na Forbocie lub robić jeszcze setki, tysiące innych rzeczy.

Oczywiście w dzisiejszych czasach systemy wbudowane potrafią mieć bardzo rozbudowane funkcje i nikogo nie zaskoczy ekspres do kawy z graficznym, dotykowym interfejsem czy też kamerą rozpoznającą użytkownika. Jednak nadal w takim rozbudowanym ekspresie będzie widoczne jedno konkretne zadanie dla wbudowanego tam komputera.

Rozwiązania amatorskie vs. profesjonalne

Następne ważne rozróżnienie to podział na systemy amatorskie oraz profesjonalne. Pierwsze bardzo dobrze znamy i łatwo jest nam szybko wymienić ich cechy: po pierwsze muszą być tanie, bo jako uczniowie, studenci albo po prostu entuzjaści elektroniki mamy ograniczone zasoby finansowe. Po drugie mają być możliwie uniwersalne – bo chcielibyśmy móc zbudować z ich pomocą właściwie dowolne urządzenie. Ich obsługa nie może być zbyt trudna, a do tego przynajmniej podstawowa dokumentacja powinna być dostępna bez np. dodatkowych umów o poufności (NDA).

Zastosowania komputerów przemysłowych w nowoczesnych fabrykach

Zastosowania komputerów przemysłowych w nowoczesnych fabrykach

Zastosowania przemysłowe dla SBC to przede wszystkim sterowanie procesami oraz zbieranie danych. W obu przypadkach awaria takiego systemu związana jest ze znacznymi kosztami, a czasem nawet zagrożeniem dla życia lub zdrowia. Cena systemu ma oczywiście znaczenie, ale często ważniejsza jest bezawaryjność. Tutaj istotny jest też dostęp do dokumentacji, jednak duże znaczenie ma dodatkowe wsparcie producenta, np. pomoc w tworzeniu oprogramowania, doradztwo techniczne czy pomoc w przypadku awarii systemu lub w naprawie urządzeń.

Komputery przemysłowe firmy MOXA

Firma MOXA specjalizuje się w produkcji przemysłowych urządzeń komunikacyjnych. W jej ofercie znajdziemy routery, switche ethernetowe, serwery portów szeregowych, komputery jednopłytkowe oraz mnóstwo innych urządzeń używanych w takich sektorach jak energetyka, kolej czy inteligentne miasta.

Producent komputerów przemysłowych

Producent komputerów przemysłowych

Nas interesowały komputery wbudowane, a dokładnie komputery z procesorami ARM (dostępne są też wersje wyposażone w procesory firmy Intel). Liczba dostępnych modeli może być dla niektórych wręcz przytłaczająca, ale dzięki temu można znaleźć urządzenie, które oferuje zestaw interfejsów niezbędnych podczas praktycznie każdego zastosowania.

Więcej informacji na temat dostępnych rozwiązań znaleźć można na stronie produktowej polskiego dystrybutora oraz na blogu, który w całości został poświęcony rozwiązaniom firmy MOXA.

Testowane komputery MOXA

Do testów otrzymaliśmy dwa urządzenia firmy MOXA: UC-2101-LX oraz UC-2104-LX. W materiałach producenta urządzenia te określane są jako IIoT-Gateway. Termin IoT, czyli popularny internet rzeczy (ang. internet of things), jest chyba wszystkim znany. Ta dodatkowa litera I na początku pochodzi od słowa industrial. W tym przypadku mamy więc do czynienia z czymś jeszcze bardziej rozbudowanym –mowa bowiem o IIoT, czyli industrial internet of things

Pewnie trochę „mniej marketingową” nazwą takiego urządzenia byłby po prostu „router”. Warto jednak zwrócić uwagę na dodatkowe funkcjonalności wymienione po prawej stronie poniższej ilustracji. Jak widać, nasz gateway jest jednak pełnoprawnym komputerem wbudowanym, więc poza funkcją routera może oferować wiele dodatków, jak chociażby zbieranie danych w lokalnej bazie czy też ich przetwarzanie.

Przykładowe zastosowania dla IIoT

Przykładowe zastosowania dla IIoT

Co w pudełku z komputerem MOXA?

Po otwarciu pudełka pierwsze wrażenie jest bardzo pozytywne. Urządzenia są solidnie zapakowane. Poza samymi modułami w opakowaniu znajdziemy krótką informację o gwarancji oraz spełnianych normach, przewód do połączenia z konsolą systemową za pomocą interfejsu RS-232, a także przejściówkę pozwalającą na użycie zasilacza wtyczkowego. Jeden z komputerów posiadał od razu zainstalowany modem LTE, który można dokupić jako dodatkowe akcesorium.

Zawartość opakowania na przykładzie komputera UC-2101-LX

Zawartość opakowania na przykładzie komputera UC-2101-LX

Po wyjęciu modułów z pudełka pojawia się pierwsze zaskoczenie – są bardzo, bardzo małe. Szczególnie UC-2101 wydaje się wręcz mikroskopijny. Gdy w sprzedaży pojawiało się pierwsze Raspberry Pi, to wszyscy byli zachwyceni jego wymiarami odpowiadającymi wielkością karcie kredytowej. Okazuje się jednak, że profesjonalne urządzenie może być nawet mniejsze.

Porównanie rozmiarów: UC-2101-LX vs. Raspberry Pi 4

Porównanie rozmiarów: UC-2101-LX vs. Raspberry Pi 4

Podstawowe parametry testowanych komputerów:

  • Procesor ARMv7 Cortex-A8 600 MHz
  • 256 MB pamięci DDR3 SDRAM
  • 8 GB eMMC flash z zainstalowanym systemem operacyjnym
  • Moxa Industrial Linux (z 10-letnim wsparciem) – szczegóły programu wsparcia 
  • Port Ethernet 10/100 Mbps
  • UC-2101: port RS-232/422/485 obsługujące wszystkie sygnały
  • UC-2104: gniazdo mini PCIe na moduł Wi-Fi / komórkowy
  • Zegar czasu rzeczywistego
  • Zewnętrzny układ watchdoga
  • Obsługa TPM v2.0 (opcjonalnie)
  • Napięcie wejściowe: od 9 do 48 V
  • Temperatura robocza: od 10 do 60°C (UC-2101), od 10 do 70°C (UC-2104)
  • Spełniane normy:
    • bezpieczeństwo: UL 60950-1, IEC 60950-1, EN 60950-1
    • EMC: 55032/24, RCM, VCCI, EAC
    • EMI: CISPR 32, FCC Part 15B, klasa A
    • IEC 61000-4-2 ESD: styk: 4 kV; powietrze: 8 kV 
    • IEC 61000-4-3 RS: 80 MHz do 1 GHz, 3 V / m
    • IEC 61000-4-4 EFT: moc: 1 kV; sygnał: 0,5 kV 
    • IEC 61000-4-5 Skok: moc prądu stałego: 0,5 kV; sygnał: 1 kV 
    • IEC 61000-4-6 CS: 3 V
    • IEC 61000-4-8 PFMF: 1 A / m
    • RoHS, CRoHS, WEEE…

Pełna lista spełnianych norm jest o wiele dłuższa, więcej informacji na ten temat można znaleźć w dokumentacji. Powyżej przytoczyliśmy tylko część z nich, aby pokazać wyraźnie jedną z różnic między rozwiązaniami profesjonalnymi a amatorskimi. Na forum toczyliśmy długą dyskusję o konieczności oznaczania budowanych przez siebie urządzeń znakiem CE – w przypadku urządzeń profesjonalnych jest to oczywiste, a lista zastosowanych norm jest tutaj wręcz imponująca.

Jak wyglądają komputery MOXA od środka?

Zanim przystąpimy do opisu działania płytek, zajrzyjmy do środka. Obudowa urządzenia jest solidna, ale po odkręceniu 4 śrubek możemy zobaczyć, co kryje się w jej wnętrzu. Co ważne, te komputery nie posiadają plomb gwarancyjnych, więc zaglądając do środka, nie traci się wsparcia ze strony producenta. W tym miejscu warto też wspomnieć, że komputery MOXA są objęte 5-letnią gwarancją, która w tym przypadku jest realizowana w Polsce (w autoryzowanym serwisie Elmark Automatyka w Warszawie).

Wnętrze komputera MOXA UC-2101-LX

Wnętrze komputera MOXA UC-2101-LX

Co ciekawe, szybko okazuje się, że nie jest to do końca SBC, czyli komputer jednopłytkowy, bo składa się z dwóch płytek… Oczywiście wszystko podyktowane jest chęcią miniaturyzacji. Do tego w naszym przypadku UC-2104 ma jeszcze wpiętą kartę rozszerzeń, czyli modem podłączony do gniazda PCI-e.

Na tym etapie warto optycznie porównać rozwiązania przemysłowe z RPi. Już sama liczba użytych komponentów jest imponująco większa. Na wstępie napisaliśmy, że w przypadku płytek amatorskich najważniejszym parametrem jest niska cena, a mniejsza liczba elementów pozwala na jej obniżenie.

Możemy się tylko domyślać, na czym dokładnie polegają oszczędności w przypadku RPi, ale już samo porównanie układu zasilania chyba jest dobrym punktem wyjścia – to, co najłatwiej usunąć z projektu, to zabezpieczenia. W tym przypadku sama sekcja zasilania MOXA bije na głowę to, co jest na malince.

Pierwsze uruchomienie modułu UC-2104-LX

Czas podłączyć opisywane urządzenia. Na pierwszy ogień wybraliśmy moduł UC-2104-LX, czyli większy – ten z modemem komórkowym. Zanim cokolwiek zrobimy, warto zapoznać się z dokumentacją, która jest publicznie dostępna na stronie producenta, z kolei w osobnym pliku znajdziemy opis instalacji oraz podstawowego podłączenia układu.

Instrukcja opisująca samą część sprzętową jest dość obszerna – ma 21 stron. Znajdziemy w niej opis gniazd, sposób podłączania zasilania, wymiary urządzeń, sposób mocowania oraz kody sygnalizowane za pomocą diod świecących. Wszystko zostało dokładnie i przystępnie opisane, nie zabrakło również rysunków i schematów. Takie materiały na pewno doceni każdy, kto np. próbował zrobić coś większego na bazie „potężnych SBC” od chińskich producentów, którzy chcieli podbić ten rynek, ale niestety jakoś „zapominali” o przygotowaniu sensownej dokumentacji.

Pierwsze podłączenie urządzenia to nic skomplikowanego. Przykręcamy dwie anteny, szykujemy kartę SIM, podłączamy przewody (zasilający i komunikacyjny) i gotowe. Najbardziej zaskakują jednak anteny – nie dość, że dwie, to jeszcze ogromne (miały po 30 cm – nie zmieściły się nawet w całości na zdjęciu). Do podłączenia zasilania użyliśmy wspomnianej wcześniej przejściówki oraz standardowego zasilacza 12 V (którego nie ma w zestawie).

Podczas pierwszego uruchomienia oraz do rozwiązywania ewentualnych problemów bardzo przydaje się dostęp do konsoli systemowej. Do urządzeń dołączone są przejściówki do standardu RS-232, jednak ten interfejs jest coraz rzadziej obecny we współczesnych komputerach PC. Musimy więc podłączyć przejściówkę, tym razem z RS-232 na USB. 

Tutaj ciekawostka: zarówno gniazdo karty SIM, jak i złącze UART są osłonięte bardzo solidną klapką. Co więcej, gdy odkręcimy śrubkę mocującą, szybko zobaczymy, jak producent zadbał o to, abyśmy nie podłączyli odwrotnie wtyczki. Złącze UART nie ma jednego pinu, a wtyczka ma w tym miejscu zaślepkę, więc odwrotnie wtyczki mechanicznie nie da się włożyć. Proste i skuteczne, a ile nerwów mogłoby oszczędzić w płytkach DIY…

Proste, ale skuteczne zabezpieczenie przed odwrotnym podłączeniem przewodu

Proste, ale skuteczne zabezpieczenie przed odwrotnym podłączeniem przewodu

Dedykowany system operacyjny

Czas uruchomić nasze urządzenie. Na stronie producenta znajdziemy jeszcze jeden ważny plik PDF – tym razem jest to dokumentacja do oprogramowania, która jest nawet dłuższa od dokumentacji sprzętu! Aktualnie dostępna wersja ma 74 strony i można śmiało potraktować ją jako kurs obsługi Linuksa. Postępując zgodnie z instrukcją, po chwili łączymy się z systemem.

Okno powitalne po połączeniu z komputerem MOXA

Okno powitalne po połączeniu z komputerem MOXA

Bazą zainstalowanego systemu operacyjnego jest Debian 9, warto jednak zwrócić uwagę, że dostajemy go od razu ze wszystkimi sterownikami, odpowiednio skonfigurowany i gotowy do pracy. Do instalacji dodatkowego oprogramowania wykorzystujemy polecenie apt oraz pakiety znane z innych platform.

Oprócz tego producent dostarcza pakiety, które są przeznaczone konkretnie do komputerów MOXA – wszystkie znajdziemy w osobnym repozytorium. Taki Debian, który dozbrojono sterownikami i pomocniczymi programami, nazywa się Moxa Industrial Linux.

(Bez)awaryjność pamięci?

W przypadku rozwiązań amatorskich wiele osób narzeka na awaryjność kart microSD, na których jest zainstalowany system operacyjny. W rozwiązaniach przemysłowych coś takiego byłoby zbyt ryzykowne, więc producent wyposażył testowane moduły w pamięć eMMC o pojemności 8 GB

Jednak nie chodzi tylko o zastosowany sprzęt. Pierwsza bardzo ważna różnica to brak partycji lub pliku wymiany (tzw. swap). Dzięki temu „system nie psuje pamięci flash” ciągłym zapisywaniem do niej tymczasowych danych.

Druga różnica to użycie systemu overlay-fs. Jest to bardzo interesujące rozwiązanie, często używane w urządzeniach przemysłowych. Mamy tu bazowy system plików zapisany w trybie „tylko do odczytu”, możemy jednak dokonywać zmian w plikach. Podczas modyfikacji system w tle kopiuje wersję tylko do odczytu do nowego miejsca, gdzie możemy modyfikować pliki. Oryginalny, bazowy obraz pozostaje więc niezmienny, a zmiany lub nowe pliki niejako nadpisują dane w wyższej warstwie.

Istnieje również możliwość tworzenia kilku warstw bazowych. A zatem moglibyśmy mieć czystego Debiana, na nim warstwę z własną, domyślną konfiguracją i oprogramowaniem, a dopiero w najwyższej warstwie moglibyśmy trzymać zmiany wprowadzone w konkretnym urządzeniu (np. logi lub aktualnie zebrane dane z czujników).

Połączenie z Internetem

Tak jak wspomnieliśmy wcześniej, jedną z dużych zalet komputerów MOXA jest to, że producent wraz z systemem operacyjnym dostarcza komplet sterowników i przydatnych programów (a wiadomo, że w przypadku Linuksa brak sterowników może być czasami dużą przeszkodą).

Jako przykład niezwykle przydatnego skryptu dostarczanego z płytką możemy wypróbować program cell_mgmt (dokładnie opisany w instrukcji). Wystarczy, że wydamy polecenie:

I po chwili mamy już działające połączenie z Internetem przez modem komórkowy.

Dostęp do Internetu przez wbudowany modem

Dostęp do Internetu przez wbudowany modem

Jak widać, ustawienie połączenia z Internetem przez modem to banał. Jeśli nie chcemy, to nie musimy się przejmować warstwą sprzętową, konkretnym modelem modemu itd. Chcąc wykorzystać moduł jak prawdziwy gateway, powinniśmy teraz podłączyć do niego za pomocą Ethernetu lokalne urządzenia, skonfigurować połączenie i ewentualnie uruchomić własną aplikację.

Przykładowy projekt na UC-2101-LX

W ramach kolejnego testu postanowiliśmy wykorzystać mniejszy z komputerków do budowy prostego projektu. UC-2101, poza interfejsem UART, służącym do konfiguracji urządzenia, oferuje dwa interfejsy:

  • Ethernet do połączenia z siecią lokalną lub Internetem,
  • RS-232/422/485 do połączenia z czujnikami lub innymi urządzeniami.

Takie rozwiązanie wydało nam się bardzo interesujące, szczególnie że wiele projektów opisywanych na naszym forum wykorzystuje komunikację przez port szeregowy.

W dolnej części modułu znajdziemy typowe złącze DB9, dawniej obecne w każdym komputerze PC, teraz niemal zupełnie zastąpione przez USB. Jednak w zastosowaniach przemysłowych jest ono nadal popularne.

Trzeba jednak pamiętać, że moduł firmy MOXA obsługuje nie tylko RS-232, ale też RS-422 i RS-485. Zanim przejdziemy dalej, warto wrócić do dokumentacji i przyjrzeć się wyprowadzeniom interfejsu:

Fragment dokumentacji na temat łączenia przez port szeregowy

Fragment dokumentacji na temat łączenia przez port szeregowy

Często używamy „uproszczonej” wersji RS-232, która przestaje wówczas być już zgodna ze standardem. Po pierwsze zamiast napięć wymaganych standardem (czyli +11 V/11 V) używamy napięć używanych przez nasz układ (czyli 3,3 V lub 5 V), po drugie wykorzystujemy tylko linie RX, TX oraz GND.

Moduł firmy MOXA umożliwia jednak również użycie dodatkowych linii, które pozwalają np. na kontrolę transmisji (mając tylko RX/TX, możemy gubić dane, jeśli nadajnik będzie je wysyłał szybciej, niż może przyjmować odbiornik).

RS-232, RS-422, RS-485 – co wybrać?

W zastosowaniach przemysłowych RS-232 jest używany głównie do komunikacji na małe odległości, np. do konfiguracji lub testowania urządzeń. Ma on kilka poważnych ograniczeń. Po pierwsze pozwala na podłączenie tylko dwóch urządzeń ze sobą, po drugie jest mało odporny na zakłócenia.

Wad tych pozbawione są pozostałe dostępne interfejsy, czyli RS-422 oraz RS-485. Do komunikacji wykorzystywane są w nich sygnały różnicowe, co bardzo poprawia odporność na zakłócenia, można też łączyć więcej niż dwa urządzenia ze sobą.

Zapewne nie wszyscy czytelnicy znają RS-485, więc dla formalności kilka najważniejszych informacji:

  • prędkość transmisji do 35 Mbit/s na odległość 10 m,
  • przy prędkości 100 kbit/s zasięg aż do 1200 m,
  • wysoka odporność na zakłócenia elektromagnetyczne,
  • możliwość pracy w trybie half-duplex (dwuprzewodowa) lub full-duplex (czteroprzewodowa),
  • obsługa do 32 urządzeń na jednej magistrali,
  • najczęściej stosowany interfejs w przewodowych sieciach przemysłowych.

Tym razem jako przykład wybraliśmy RS-485 w konfiguracji dwuprzewodowej (tzw. half-duplex). Zakończenia par przewodów interfejsu powinny być połączone rezystorem o typowej wartości 120 Ω. W przypadku modułu UC-2101 odpowiedni rezystor jest już zamontowany, wystarczy odkręcić dwie śrubki w spodniej części urządzenia i ustawić odpowiednio mikroprzełączniki.

Dostęp do przełącznika konfiguracyjnego ułatwia odkręcana klapka

Dostęp do przełącznika konfiguracyjnego ułatwia odkręcana klapka

Większym problemem okazało się znalezienie urządzenia, które będzie miało interfejs RS-485 i posłuży nam do testów. W przemysłowych zastosowaniach jest to bardzo popularny interfejs, ale w przypadku hobbystów już niekoniecznie. Na szczęście z pomocą przyszło nam małe Arduino oraz shield MKR 485. Do tego podłączyliśmy czujnik temperatury z serii Grove (znanej np. z kursu micro:bita).

Główny bohater testu, czyli UC-2101-LX, oraz Arduino z niezbędnymi shieldami i moduł czujnika temperatury

Główny bohater testu, czyli UC-2101-LX, oraz Arduino z niezbędnymi shieldami i moduł czujnika temperatury

Obsługa RS-485 przez Arduino jest oczywiście bardzo łatwa – wszystko dzięki gotowej bibliotece. Taki zestaw pozwolił nam na bardzo szybkie zbudowanie czujnika temperatury, który komunikuje się przez potrzebny do dalszych testów interfejs RS-485.

Do sprawdzenia komunikacji musimy jeszcze skonfigurować port szeregowy w module UC-2101. Na szczęście producent ułatwia nam to zadanie, dostarczając program o nazwie mx-uart-ctl. Pozwala on na odczyt oraz ustawienie trybu pracy portu szeregowego:

Program do konfiguracji pracy portu szeregowego

Program do konfiguracji pracy portu szeregowego

Aplikacja testowa dla czujnika

Mając możliwość przesyłania danych przez RS-485, możemy przystąpić do pisania testowej aplikacji. Moglibyśmy opracować własny protokół komunikacyjny, jednak skoro testujemy moduły przemysłowe, warto użyć protokołu popularnego w przemysłowych zastosowaniach. Nasz wybór padł na protokół Modbus (więcej informacji znajdziemy np. na angielskiej wersji Wikipedii).

Jest to otwarty standard, dość już dojrzały, bo ponad 40-letni. Można go jednak spotkać bardzo często w zastosowaniach przemysłowych. Dla Arduino znajdziemy gotową bibliotekę, która implementuje protokół Modbus i – co więcej – działa z RS-485, czyli mamy praktycznie gotowca.

Modbus – co warto wiedzieć?

Urządzenia podłączone za pomocą Modbusa mają przypisane adresy, dzięki czemu moglibyśmy podłączyć więcej czujników jednocześnie. Protokół pozwala na reprezentowanie 4 typów danych:

  • coil – 1 bit, do odczytu i zapisu,
  • discrete input – 1 bit, tylko do odczytu,
  • input register – 16 bitów, tylko do odczytu,
  • holding register – 16 bitów, do odczytu i zapisu.

Dla każdego typu można utworzyć do 10 000 rejestrów, które są również adresowane. W związku z tym, że mamy jeden moduł, przypiszemy mu po prostu adres 1. Chcemy odczytywać temperaturę, więc 16-bitowy typ input register idealnie do tego pasuje. Każdy rejestr ma także swój adres – tutaj wybieramy znowu wartość 1.

Jak widać, do uruchomienia komunikacji po stronie Arduino wystarczy kilka linijek kodu. Omówimy je krótko, bo dla wielu osób użycie RS-485 oraz Modbusa może być pewną nowością.

Na samym początku funkcji setup() uruchamiamy serwer pracujący z protokołem Modbus. Jej pierwszy parametr to adres urządzenia, a drugi to wybrana prędkość transmisji. Z kolei druga linijka tworzy tzw. input-register – jej pierwszym parametrem jest numer rejestru, a drugim liczba tworzonych rejestrów.

W pętli głównej odczytujemy dane z czujnika, przeliczamy na stopnie Celsjusza (na bazie przykładów Grove), a następnie wynik umieszczamy w rejestrze. Skrócona wersja kodu wygląda następująco:

Wywołanie funkcji poll() odpowiada za całą komunikację za pomocą protokołu Modbus. Jedyne, co musimy zrobić, to zapisać aktualny wynik pomiaru do rejestru, czyli wywołać inputRegisterWrite(). Parametry tej funkcji to numer rejestru i wartość (którą przekazujemy w setnych stopnia Celsjusza).

Jak pamiętamy, rejestr jest tylko do odczytu, co oznacza, że moduł zbierający dane, czyli UC-2101, będzie tylko odczytywał wartości z rejestru. Jednak wartość trzeba jakoś uzyskać, dlatego kod naszego czujnika zapisuje wartość, chociaż rejestr jest niby tylko do odczytu.

Program na komputer przemysłowy

Teraz, gdy mamy gotowy czujnik temperatury z interfejsem RS-485 i protokołem Modbus, czas wrócić do naszego modułu głównego i odczytać zmierzoną wartość. Moduł UC-2101 działa pod kontrolą pełnego systemu operacyjnego, więc możemy zainstalować potrzebne nam biblioteki, a program sterujący napisać, używając właściwie dowolnego języka programowania.

Gotowy układ testowy, w którym Arduino symuluje przemysłowy czujnik korzystający z Modbusa

Gotowy układ testowy, w którym Arduino symuluje przemysłowy czujnik korzystający z Modbusa

Program na potrzeby tego przykładu powstał w Pythonie, a do nawiązania komunikacji użyta została popularna biblioteka PyModbus. Wcześniej widzieliśmy, jak zmienić tryb pracy portu szeregowego na RS-485 za pomocą programu mx-uart-ctl. Teraz wystarczy więc uruchomić interpreter Pythona i wykonać instrukcje widoczne na poniższym zrzucie ekranu.

Komunikacja z czujnikiem przez Modbusa

Komunikacja z czujnikiem przez Modbusa

W pierwszej kolejności importujemy moduł ModbusSerialClient. Następnie tworzymy klienta, bo na Arduino pisaliśmy program serwera. Całość wygląda więc następująco:

Port szeregowy jest dostępny jako urządzenie /dev/ttyM0, prędkość poprzednio ustawiliśmy na 9600, więc teraz musimy wybrać taką samą wartość.

Na koniec możemy odczytać wartość, wywołując client.read_input_registers(1, unit=1). Pierwszy parametr to numer rejestru, a jako unit podajemy adres urządzenia. W wyniku otrzymujemy obiekt typu ReadInputRegistersResponse, z którego odczytujemy wartość odczytaną z rejestru metodą getRegister(0). Potem dzielimy wynik przez 100, aby otrzymać wartość w stopniach Celsjusza.

Opisywany projekt jest bardzo prosty, ale chcieliśmy pokazać, jak można komunikować się z czujnikami lub układami wykonawczymi, wykorzystując interfejs RS-485 oraz protokół Modbus. Oczywiście w profesjonalnym zastosowaniu małe Arduino zostałoby zastąpione czujnikiem przemysłowym.

Inne języki programowania?

Aplikacje działające na komputerze przemysłowym nie muszą być oczywiście tworzone w Pythonie. Zainstalowany na urządzeniu Debian pozwala na użycie praktycznie dowolnego języka programowania, możemy np. wykorzystać C/C++, Javę, Rust czy JS.

Zamiast tego lepiej kompilować aplikację na komputerze PC, a gotowy program instalować prosto na urządzeniu. W instrukcji użytkownika znajdziemy dokładny opis całego procesu, warto wspomnieć też o możliwości użycia Dockera.

W repozytorium MOXA na GitHubie znajdziemy plik konfiguracyjny dla Dockera, dzięki któremu łatwo przygotujemy obraz zawierający kompilator (gcc) oraz niezbędne biblioteki, czyli wszystko, co jest nam niezbędne do tworzenia programów w C lub C++.

MOXA w praktyce? Przykładowe zastosowania

Różnicę między urządzeniami profesjonalnymi a amatorskimi najłatwiej zauważyć podczas analizy przykładowych zastosowań – oto kilka z miejsc, w których faktycznie można spotkać tego typu układy.

Monitorowanie instalacji fotowoltaicznej

Komputery przemysłowe odpowiadają np. za monitorowanie instalacji fotowoltaicznych. Ten przykład może być dyskusyjny, ponieważ wielu hobbystów może uznać, że tutaj spokojnie wystarczy np. tanie RPi z Domoticzem. Jeśli mamy jedną instalację i sami potrafimy zadbać o nasz system monitorowania, to możemy robić, co nam się podoba.

Jednak dla firmy, która ma setki lub tysiące klientów, byłoby to ryzykowne. Opieranie działania drogich instalacji fotowoltaicznych na amatorskich rozwiązaniach, które nie były tworzone z myślą o pracy w takich warunkach, może przysporzyć instalatorowi dużych kłopotów. Klienci nie byliby zachwyceni, jeśli np. trzeba byłoby ręcznie restartować system po każdej burzy albo wymieniać kartę microSD co kilka miesięcy (bo poprzednia „uległa zużyciu”).

Przykład infrastruktury systemu fotowoltaicznego

Przykład infrastruktury systemu fotowoltaicznego

Warto również pamiętać o aspekcie „formalnym”. Dopóki instalujemy system we własnym domu i sami za niego odpowiadamy, to nasza sprawa i odpowiedzialność, jakie normy urządzenia spełniają. Jednak jeśli zdarzy się jakiś wypadek, np. wybuchnie pożar, zastosowanie urządzeń niespełniających wymaganych norm może być podstawą do niewypłacenia odszkodowania przez firmę ubezpieczającą. I znowu – jeśli to nasz dom, to nasza sprawa… ale instalując system u innych osób, czasem lepiej nie oszczędzać i nie narażać się na ewentualne koszty procesów o odszkodowania.

Stacje ładowania pojazdów elektrycznych

Inny przykład zastosowania tego typu komputerów to np. stacje do ładowania pojazdów elektrycznych. Kilka stacji może łączyć się z jedną MOXA, która steruje procesem i komunikuje się z resztą systemu, który jest rozproszony np. po całym mieście lub kraju. Mniej rozbudowanym, ale równie kluczowym zastosowaniem tego typu jest sterowanie siecią parkometrów. W obu przypadkach uszkodzenie SBC, który steruje ładowarkami lub (nielubianymi) parkometrami, paraliżowałoby część miasta.

Infrastruktura sieci ładowarek samochodowych

Infrastruktura sieci ładowarek samochodowych

Monitorowanie instalacji przemysłowych

Ostatni przykład to wszelkie instalacje przemysłowe, gdzie nie ma miejsca na oszczędności – tutaj liczy się tylko i wyłącznie niezawodność. Na wypadek gdyby ktoś uważał, że to tylko system monitorowania i jego awaria nie niesie przecież negatywnych następstw, warto sobie na przykład uświadomić, jaki byłby koszt, jeśli konieczne byłoby zresetowanie systemu, który monitoruje pracą farmy turbin wiatrowych ustawionej gdzieś na morzu.

Monitorowanie instalacji przemysłowych

Monitorowanie instalacji przemysłowych

Odszukanie prawdziwych zastosowań MOXA?

Na koniec jeszcze jeden ważny przykład, albo raczej sposób na znalezienie innych przykładów miejsc, w których znajdują zastosowanie komputery tego typu. Praktycznie każde urządzenie widoczne w sieci możemy odszukać za pomocą specjalnej wyszukiwarki – jedną z popularniejszych jest Shodan.io. Jeśli wyszukamy urządzenia firmy MOXA, to znajdziemy 8654 wyników (w tym 425 w Polsce).

Przykładowe wyniki wyszukiwania komputerów MOXA

Przykładowe wyniki wyszukiwania komputerów MOXA

Większość urządzeń to serwery portów szeregowych, bo wyszukiwarce najłatwiej rozpoznać je jako urządzenia MOXA. Pokazuje to jednak, jak wiele urządzeń jest używanych w różnych firmach i branżach. Tyle wyników dla samych serwerów portów szeregowych powinno również uzmysłowić nam, jak ważne jest zabezpieczenie urządzeń przed nieuprawnionym dostępem. Wcześniej lub później nasz prywatny system może trafić do wyszukiwarki i stać się potencjalnym celem ataku.

Na koniec warto dodać, że komputery firmy MOXA są wyposażone w aplikację moxa-security-utils, która pozwala na zwiększenie poziomu bezpieczeństwa systemu zgodnie z normą IEC62443-4-2. Oczywiście nie zabezpieczy nas to przed wszystkimi błędami, a w szczególności przed podatnościami w pisanej przez nas aplikacji, ale daje szansę, by chociaż trochę podnieść poziom bezpieczeństwa.

Ile to kosztuje? Rabat dla czytelników FORBOT-a

Wiele razy w artykule porównywaliśmy MOXA do tańszego Raspberry Pi. Podaliśmy przykłady dużych, przemysłowych instalacji, w których znaleźć można takie komputery. Pozostaje więc pytanie: ile kosztuje taki komputer przemysłowy? Oczywiście wszystko zależy od konkretnej konfiguracji, ale ogólnie jest taniej, niż mogłoby się wydawać! Na przykład testowane SBC kosztują odpowiednio: 1092 zł netto za UC-2101-LX oraz 1165 zł netto za UC-2104-LX (opcjonalny modem LTE to +717 zł).

Biorąc pod uwagę, że są to układy do profesjonalnych, komercyjnych projektów, to taka cena wydaje się rozsądna – szczególnie jeśli pamiętamy o liście spełnianych norm oraz o wsparciu producenta. Do tego, dzięki uprzejmości firmy Elmark Automatyka SA, mamy dla Was kod rabatowy!

Podsumowanie

Za nami omówienie najważniejszych informacji na temat komputerów przemysłowych, które sprawdzą się wszędzie tam, gdzie popularne, hobbystyczne rozwiązania nie mogą być używane. Mamy jednak nadzieję, że ten wpis pokazał, że rozwiązania przemysłowe nie są takie straszne. Nawet hobbysta, który chce pójść krok dalej, jest w stanie wykorzystać w swoim projekcie np. komputer firmy MOXA.

Czy wpis był pomocny? Oceń go:

Średnia ocena 4.7 / 5. Głosów łącznie: 39

Nikt jeszcze nie głosował, bądź pierwszy!

Artykuł nie był pomocny? Jak możemy go poprawić? Wpisz swoje sugestie poniżej. Jeśli masz pytanie to zadaj je w komentarzu - ten formularz jest anonimowy, nie będziemy mogli Ci odpowiedzieć!

Autor: Piotr Bugalski
Zdjęcia Piotr Adamczyk
Redakcja techniczna: Damian Szymański

Artykuł sponsorowany dla Elmark Automatyka SA (polskiego dystrybutora komputerów MOXA). Firma zaproponowała tematykę wpisu i dostarczyła niezbędny sprzęt (nie miała jednak wpływu na treść).

iiot, IoT, moxa, przemysł, raspberrypi, sbc

Trwa ładowanie komentarzy...