Urządzenia zewnętrzne/ peryferyjne

0

Witam wszystkich
Sprawa wygląda następująco, od jakiegoś czasu szukam informacji na temat sposób łączenia się urządzeń z np. Aplikacja lub PC. Może nie tyle sposobu jak się łączy ale jak to jest napisane. Aby sprecyzować temat i uniknąć nieporozumień przybliżę sprawę przykładem. Są urządzenia (czujki na ruch, urządzenia z linii produkcyjnej itd. Mam na myśli tego typu urządzenia zewnętrzne) I gdybym chciał to samemu napisać co dane uprzedzenie ma robi, jak reagować na jakieś zdarzenie, wysyłać polecenia itd. Jak to działa, w jakim języku, jak to się łączy. Nie mam kompletnie nawet strzępka informacji, jakiegoś punktu odniesienia. Gdybym chciał zrobić cokolwiek, napisać program dla takiego urządzenia, samemu coś zaprojektować, być może wyskoczyć z jakimś start-up'em, chciałbym temat zbadać od "zaplecza". Znam w niezłym stopniu Javę ale coś mi mówi, że raczej nie przyda mi się ona.
Liczę na wyrozumiałość i dziękuję za odpowiedzi.

0

Java ma bibliotekę do USB http://usb4java.org/

Dla innych portów pewnie też coś się znajdzie. Potem kwestia komunikacji jakimś ustalonym protokołem. Chyba że urządzenie jest bardziej skomplikowane to wtedy trzeba napisać normalny sterownik i Java wtedy odpada.

1

microcontroller np wbudowany w arduino, które zapewnia już analogową jak i cyfrową komunikacje z takimi modułmi jak czujniki. Piszesz kod do komunikacji z czujnikami w c/c++ na arduino a arduino z pc komunikuje się już przez usb. Do tego piszesz sobie sterowniki na pc które to sobie bedą już gadać z arduino wykorzystując gotowe libki. To takie najprostsze rozwiązanie.

0

Okej, jeśli chodzi o czujki wszelakiej maści jak najbardziej rozumiem, a jak to wygląda z jakimiś urządzeniami jak np. Maszyny (dla przykładu te wykorzystywane na liniach produkcyjnych)? Miałem okazję zobaczyć kilka gdzie stan pracy monitorował zewnętrzny tablet i zastanawia mnie jak to tak naprawdę działa, zarówno o program który np. Może nimi sterować (język programowania) jak i sam proces komunikacji.

1

Tak samo jak i ze wszystkim innym, jak z myszką, klawiaturą itp. Jest jakiś interfejs komunikacji ustalony i jedno drugie pyta o dane i je dostaje, lub odbiera w sposób ciągły. W takiej maszynie masz tak samo microcontroller, w każdym urządzeniu masz jakiś microcontroller.

1

W produkcji ogólnie przyjętym standardem jest standard OPC - czyli czujniki z maszyn udostępniają swoje dane po OPC jak i możesz nimi sterować przez OPC. Jak nie ma OPC to czasem gada się też z takim sprzętem po zwykłych socetakch albo nawet zdarzają się interfejsy plikowe. Czasem w takiej komunikacji pośredniczą systemy typu SCADA. Ogolnie na samym dole takije komunikacji jest zwykłą sieć komputerowa.

2

Wydaje mi się, że @BHeiB pyta o coś innego. Otóż nie ma uniwersalnego protokołu. Każde urządzenie będzie miało swój własny protokół (co należy wysłać do urządzenia i jak zinterpretować wynik). Ogólnie dostępne i dobre do nauki są np protokoły drukarek fiskalnych (chyba dla posnetu jest nawet emulator więc nie trzeba mieć nawet fizycznego urządzenia żeby zobaczyć jak to działa). To czy urządzenie komunikuje się po RS232, RS485, USB czy sieci to sprawa wtórna.

Ogólnie proces wygląda tak:

  • Wysyłasz komendę do urządzenia
  • Odbierasz odpowiedź z urządzenia
  • Interpretuje aż odpowiedź

Aby wiedzieć co wysłać i jak zinterpretować odpowiedź musisz mieć opis protokołu do danego urządzenia.

2

Temat rzeka. Jak byłem studentem (10+ lat temu) to było jeszcze sporo urządzonek które z komputerem łączyły się przez RS232 (komunikacja przez port szeregowy). Jest to najprostszy sposób na komunikację z urządzeniami w stylu czytnik kodów kreskowych, czy urządzenie badające wyważenie kół pojazdu. Bardzo podobny (tylko inne napięcia) do RS232 jest protokół UART. Przez UART można połączyć się i z RaspberryPI czy z Arduino. Komunikacja przez port szeregowy jest też powszechnie wykorzystywana przy sterowaniu modemów (AT Commands). Największa zaleta RS232/UART jest taka że po podłączeniu urządzenia system wystawia je jako "plik tekstowy" e.g. /dev/ttyUSB0 - Do takiego pliku możemy pisać komendy jak zwykły tekst i podobnie odbierać dane które wyśle nam program. Port szeregowy ma super wsparcie w Pythonie, Javie i prawie każdym innym języku programowania. Jest też powodem dlaczego w Windzie nie można utworzyć pliku o nazwie COM1. Podstawowa wada to mała przepustowość takiego połącznia Kb a nie Mb.

Sporo urządzeń które korzysta ze złącza USB, nadal posiada sterowniki które wystawiają funkcjonalność urządzenia przez port szeregowy.

Z drugiej strony jest zwykły Ethernet. Jak robisz przemądrzały-dom to możesz po prostu porozstawiać raspberryPI tu i tam i wszystko połączyć przez ethernet. Nie jest to taki głupi pomysł, np. bramki na wejściu do mojego biura były zrobione w taki sposób, wydaje mi się że Veturilo też tak miało ogarnięty system. Ethernet ma tą zalete że urządzenia można przez Ethernet zasilać do 40V.

Poza tym są specjalizowne protokoły dla robotyki i real-time o których nie mam zielonego pojęcia. Jak bym robił mądry-dom to bym postawił na Ethernet ze względu na wymienione wyżej zalety (zasilanie) oraz ogrom urządzeń i peryferii w przystępnych cenach.

Na koniec warto dodać że max. zasięg skrętki to 100 metrów dla 100Mbit, USB to 4 metry (o ile dobrze pamiętam). Port szeregowy - praktycznie ograniczony tylko zakłóceniami. Światłowody - można przyjąć że nie mają żadnych ograniczeń.

0

Super, dzięki bardzo za odpowiedź. Teraz już wszystko wiem.
Dzięki raz jeszcze

1

W takim prostym, ale całkiem użytecznym scenariuszu to działa tak, że czujnik jest monitorowany przez mikrokontroler, który nim steruje i zbiera z niego dane, zazwyczaj komunikuje się on z nim przez jakiś protokół typu I2C, lub SPI. Ten mikrokontroler wykonuje jakieś proste lub mniej operacje na tych danych i wysyła je do komputera.

Komunikacje mikrokontrolera z komputerem można zrobić przesz port szeregowy, który jest tunelowany przez USB, działa to tak, że do uradzenia wpina się kabel USB, a na komputerze, w managerze urządzeń widać port szeregowy, potem jest już prosto, bo do tego jest dużo bibliotek. Może to też być WiFi.

Aplikacja na komputerze przetwarza dane i ew. wysyła mikrokontrolerowi parametry by jakoś zmienić jakieś ustawienia. Na komputerze robi się logikę biznesową.

Ten mikrokontroler to może być np. stm32 nucleo, albo coś innego, można też zrobić PCB ze swoim mikrokontrolerem.

Co do maszyn i automatyki, popularny jest Modbus, Profibus, Fieldbus, czasami też CAN.

PS. może Cię zainteresować ten temat: Systemy wbudowane - jak zaczac?

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