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

Komunikacja raspberry Pi - PLC

BuildEver 09 Sie 2016 08:34 2550 10
  • #1 09 Sie 2016 08:34
    BuildEver
    Poziom 7  

    Czy ktoś wie jak połączyć PLC do raspberry pi? Głównie chodzi mi o wyciągnięcie stanu wejść wyjść i wartości zmiennych z PLC. Tak jak można to zrobić podczas programowania go, czyli podgląd na żywo.

    0 10
  • #2 09 Sie 2016 17:28
    piotrd76
    Specjalista Automatyk

    Z jakim konkretnym typem PLC chcesz to połączyć?

    0
  • #3 09 Sie 2016 17:31
    BuildEver
    Poziom 7  

    Alan Bradley oraz Siemens S7. Jak największą ich ilość. W tej chwili do testów mam S7 - 300.

    0
  • #4 10 Sie 2016 17:14
    piotrd76
    Specjalista Automatyk

    Czyli chcesz zrobić coś w rodzaju HMI/SCADA na RPi?
    Rozwiązania które przychodzą mi na myśl w przypadku S7-300:
    - komunikacja przez OPC, tzn. RPi wysyła zapytania do serwera OPC, serwer OPC komunikuje się ze PLC. Wada jest taka, że potrzebujesz jeszcze maszyny na której OPC serwer będzie pracował.
    - transmisja po TCP/IP, z wykorzystaniem siemensowskich bloków do wysyłania/odbierania danych.
    - jak do przesłania jest stan tylko kilku sygnałów, to może bezpośrednie połączenie I/O, oczywiście przez układ konwertujący poziom sygnałów.
    Ewentualnie ambitnie spróbować z własną implementacją protokołów S7, zobacz http://snap7.sourceforge.net/

    0
  • #5 11 Sie 2016 12:51
    lukpep
    Poziom 11  

    aktualnie cos takiego mam odpalonego.

    co do rozwiazania z serwerem OPC - nie jest konieczna dodatkowa maszyna - zalezy od sterownika PLC. Pracuje na B&R i tam serwer OPC moze stac na samym PLC.

    Ja sobie do RPI podsylam przez UDP dane produkcyjne w postaci XML lub jakiejkolwiek innej.

    0
  • #6 11 Sie 2016 14:01
    BuildEver
    Poziom 7  

    lukpep możesz rozwinąć swój sposób?

    0
  • #7 11 Sie 2016 14:15
    lukpep
    Poziom 11  

    BuildEver napisał:
    lukpep możesz rozwinąć swój sposób?


    Interesujace mnie dane opakowuje w XML, ale rownie dobrze mozesz je sobie podsylac w jakims formacie ktory nie zawiera informacji o ich strukturze - np. jako tablice 1000 bajtow w ktora po kolei wpakujesz te zmienne ktore chcesz a po stronie odbierajacej (rpi) zrobisz sobie deskryptor ktory powyciaga np. pomiar temperatury z bajtow 33 i 34 a pomiar napiecia z bajtow 124 i 156 itd.

    Kazdy sterownik udostepnia funkcje (czy tam bloki funkcyjne) do transferu danych. Uzywam akurat UDP jako ze jest bezstanowy i najwygodniejszy. Pcham sobie tym dane na adres RPI.

    Na rpi (korzystam z wersji 3) poczatkowo mialem postawiony windows 10 core IoT wraz z serwerem w C# ale dzialalo to bardzo mizernie. Przekonalem sie wiec do linuxa i postawilem raspbiana. W pare h mialem dzialajacy na rpi serwer nasluchujacy komunikacji na UDP (napisany w pythonie). Z danymi robie juz tam potem co chce (wrzucam przez http do baz danych w chmurze)

    0
  • #8 11 Sie 2016 14:21
    BuildEver
    Poziom 7  

    Ja właśnie zacząłem robić z Windowsem. Wcześniej na raspbianie starałem się użyć biblioteki snap7. Mam z tego jakieś efekty, właśnie uzyskane też przez Pythona. Tylko że ja tych rzeczy zbytnio nie ogarniam. Znam podstawy C, C++ i C#.
    Mógłbyś zrobić coś w rodzaju tutoriala / poradnika?

    0
  • #9 11 Sie 2016 14:35
    lukpep
    Poziom 11  

    BuildEver napisał:
    Ja właśnie zacząłem robić z Windowsem. Wcześniej na raspbianie starałem się użyć biblioteki snap7. Mam z tego jakieś efekty, właśnie uzyskane też przez Pythona. Tylko że ja tych rzeczy zbytnio nie ogarniam. Znam podstawy C, C++ i C#.
    Mógłbyś zrobić coś w rodzaju tutoriala / poradnika?


    Nie mam czasu na stworzenie poradnika niestety / stety.
    Ale tam nie ma nic specyficznego. Siemens ma bloczki do wysylania po UDP? Ma ...
    Uzyc ich potrafisz pewnie? Zadna filozofia.
    Postaw sobie na rpi rasbpiana - na dzien dobry masz srodowisko do pythona 2 i 3.
    Napisz prosty serwer nasluchujacy na UDP:

    Kod: python
    Zaloguj się, aby zobaczyć kod



    i tyle.
    Co wazne nie jest to platform-specyfic - nie trzeba zadnych bibliotek do sjebensa itp.

    0
  • #10 11 Sie 2016 14:37
    BuildEver
    Poziom 7  

    Ok, dzięki za odpowiedź. Coś porobię :)

    0
  • #11 06 Sty 2017 12:29
    BuildEver
    Poziom 7  

    Znalazłem płatną bibliotekę inGear. Jest świetna! Bardzo łatwo się programuje własnej roboty "HMI" czy też inne programy, które muszą się komunikować z PLC zarówno Alana Bradleya jak i Siemensa.

    Strona producenta: Link

    0