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

PLC Modbus RTU - IoT MyDevices Cayenne

lukaszd82 24 Kwi 2018 09:38 2751 6
  • Opis konstrukcji
    Projekt powstał z myślą udostępnienia danych ze sterownika PLC przez internet.
    Wymieniony sterownik posiada port komunikacyjny RS232 oraz wykorzystuje protokół komunikacyjny Modbus RTU.
    Podczas wykonywania prac uznałem, iż miłym dodatkiem będzie możliwość zdalnego załączania urządzeń.
    Całość oparłem o uniwersalną płytkę stworzoną jakiś czas temu dla ESP8266.
    Schemat płytki uniwersalnej ESP8266:
    PLC Modbus RTU - IoT MyDevices Cayenne
    Widok PCB z EAGLE:
    PLC Modbus RTU - IoT MyDevices Cayenne
    A oto zdjęcie płytki do ESP8266:
    PLC Modbus RTU - IoT MyDevices Cayenne
    Uzupełnieniem konstrukcji jest konwerter RS232-TTL:
    PLC Modbus RTU - IoT MyDevices Cayenne
    Zdjęcia gotowej konstrukcji:
    PLC Modbus RTU - IoT MyDevices Cayenne
    PLC Modbus RTU - IoT MyDevices Cayenne
    PLC Modbus RTU - IoT MyDevices Cayenne




    PLC Modbus RTU - IoT MyDevices Cayenne
    Konwerter RS232-TTL jest zasilony z płytki ESP8266 napięciem 3,3V, natomiast RX i TX zostały wprowadzone na IN1 i IN2 ze schematu.
    Całość zaprogramowałem z wykorzystaniem Arduino IDE.

    Dla własnych potrzeb wprowadziłem odczyt wartości temperatur, potwierdzenia pracy urządzeń oraz rozkazy załączenia dla PLC:
    Modbus RTU:
    Rejestr 40001 - Temperatura kominka
    Rejestr 40001 - Temperatura w zbiorniku CWU
    Rejestr 40001 - Temperatura w kolektorze próżniowym
    Rejestr 40001 - Temperatura wody podłogówka
    Rejestr 40001 - Napięcie baterii akumulatorów (od paneli fotowoltaicznych)
    Rejestr 00005 - Potwierdzenie pracy pieca gazowego
    Rejestr 00007 - Potwierdzenie pracy schładzania instalacji kolektorów próżniowych
    Rejestr 40020 - Rozkaz na załączenie pieca gazowego
    Rejestr 40021 - Rozkaz na załączenie instalacji schładzającej
    Oczywiście całość oprogramowania sterującego instalacją domową działa autonomicznie na PLC .
    Przytoczone tutaj zmienne to tylko przykład możliwości wykorzystania wykonanego urządzenia oraz adaptacji zamieszczonych kodów do ESP8266.

    Zamieszczam dla innych całość kodów źródłowych wraz z niezbędnymi bibliotekami.
    Jako uwagę od razu piszę, iż ESP8266 posiada 1 port RS232. Nie chciałem go blokować, dlatego też na potrzeby komunikacji z PLC zaprogramowałem nowy softwarowy port COM na IN1 i IN2 (patrz schemat płytki ESP).

    Jako interface webowy wykorzystuję gotową aplikację Cayenne IoT:
    https://cayenne.mydevices.com/
    Zakładamy darmowe konto, logujemy się na stronę:
    PLC Modbus RTU - IoT MyDevices Cayenne
    Wybieramy platformę sprzętową - w naszym przypadku Generic ESP8266
    PLC Modbus RTU - IoT MyDevices Cayenne
    Kopiujemy Username, Password i Client ID do programu w Arduino IDE
    PLC Modbus RTU - IoT MyDevices Cayenne
    W Arduino IDE wybieramy płytkę NodeMCU 1.0 (dodatkowa biblioteka dla Arduino: Plik-Szkic->Dołącz bibliotekę-ESP8266 -> dodatkowe informacje dostępne w necie)
    PLC Modbus RTU - IoT MyDevices Cayenne
    Biblioteki do Arduino IDE:
    PLC Modbus RTU - IoT MyDevices Cayenne
    Wybieramy odpowiedni port COM i programujemy ESP (podpinamy konwerter USB-TTL do portu PROG - patrz schemat).
    Ja wykorzystuję konwerter w cenie poniżej 1$ z aliexpress:
    Link
    PLC Modbus RTU - IoT MyDevices Cayenne
    U mnie przed kliknięciem wgrywania oprogramowania z ArduinoIDE trzeba wcisnąć na płytce ESP przycisk RESET i FLASH jednocześnie i puścić je gdy kompilacja przebiegnie pomyślnie. Dopiero wtedy rusza wgrywanie programu do ESP.

    W Cayenne pojawia nam się urządzenie Generic ESP8266. Teraz konfigurujemy kanały z programu ArduinoIDE i mamy gotową działającą wizualizację
    PLC Modbus RTU - IoT MyDevices Cayenne
    PLC Modbus RTU - IoT MyDevices Cayenne
    Konstrukcja nie jest pozbawiona wad:
    - nie jestem programistą, więc kod nie jest optymalny,
    - działanie Cayenne My Devices na PC pozostawia wiele do życzenia (o wiele lepiej działa aplikacja na Android).

    W załączniku zamieszczam:
    1. Schemat w EAGLE wraz z rysunkiem ścieżek.
    2. Skompilowane pliki źródłowe oprogramowania (oraz wersja edytowalna).



    Kosztorys wykonanej konstrukcji:
    ESP8266-12F - 6,5 zł
    ESP Shild - 1,2zł
    RS232-TTL - 1,9zł
    Płytka PCB pod ESP (wraz z podzespołami ) ~5zł
    ---------------------------------------------------------
    Całość to ok. 15zł (zakupy robione na Aliexpress).

    W komentarzach proszę o konstruktywną krytykę, informacje, co należałoby poprawić itp.
    Jeśli ktoś jest zainteresowany dodatkowymi materiałami, to proszę o kontakt PW.


    Fajne!
  • Semicon
  • #2 25 Kwi 2018 07:45
    Galareta
    Poziom 21  

    Dlaczego esp shield a nie samo esp wlutowane? Przecież to się fajnie lutuje. ;)

  • Semicon
  • #3 25 Kwi 2018 09:09
    lukaszd82
    Poziom 24  

    Lutuje się fajnie, ale jakoś łatwiej mi komuś przeprogramować u siebie w domu i dać na wymianę niż jechać 20km w jedną stronę, by zmienić coś w programie.
    A takich płytek wykonałem kilka dla znajomych.
    Działają jako małe stacje pogodowe (po kilka pomiarów) oraz jako bramy do netu dla PLC/domowych kotłów/systemów alarmowych.
    Jak widać płytka ma przygotowane we/wy cyfrowe i oczywiście 1 analog do wykorzystania.
    Zgodnie z potrzebą, na płytce lutuję to, czego w danej chwili potrzebuję i dołączam inne "klocki" jak przekaźniki, czujniki, przejściówki, niekiedy przetwornice impulsowe jak ktoś ma zasilanie 24VDC w skrzynce/szafie...

  • #4 01 Maj 2018 07:31
    tomjed
    Poziom 27  

    Witam. Zaczynam zabawę z Arduino, więc proszę o wyrozumiałość. lukaszd82 rozumiem, że kod, który zamieściłeś umożliwia tylko komunikację z platformą? Nie ma w nim jeszcze obsługi żadnych czujników, czy też sterowania wyjściami? Dobrze to rozumiem?

    pzdr

    I jeszcze jedno pyt: Czy w projekcie można użyć WEMOS D1miniPRO?

    I dlaczego nie kompiluje mi się..? Dostaje info, że:" Nieznana płytka nodemcuv2 (platforma esp8266, pakiet esp8266)

    Błąd kompilacji dla płytki NodeMCU 1.0 (ESP-12E Module)"

  • #5 01 Maj 2018 09:46
    lukaszd82
    Poziom 24  

    Trzeba do Arduino IDE ściądnąć biblioteki ESP8266, w kodzie jest jako przykład kilka pomiarów pobieranych ze sterownika plc (5 pomiarów), 2 potwierdzenia pracy urządzeń i 2 rozkazy sterujące wysyłane do plc.
    O bibliotekach wspomniałem i zamieściłem screen.

    Jak będzie zainteresowanie to mogę za kilka dni zamieścić kod do obsługi BME280 i wysyłania pomiarów do MyDevices.

  • #6 01 Maj 2018 13:41
    tomjed
    Poziom 27  

    Biblioteki mam poinstalowane. Udało mi się zaprojektować to:
    https://www.elektroda.pl/rtvforum/viewtopic.php?t=3418119&highlight=

    Pytanie jest takie: czy aby skompilować program musi widzieć płytkę? Bo za każdym razem wyrzuca mi problem.

    Tak jak pisałem mam WEMOS D1miniPRO. Po podpięciu go i uruchomieniu monitora skanuje sieci i znajduje... Czy to normalne zachowanie, czy jest do niego załadowany jakiś program i stąd problem? Czy mogę go wykożystać do Twojego projektu?

    pzdr i dzieki za odpowiedzi.

  • #7 01 Maj 2018 14:09
    lukaszd82
    Poziom 24  

    Mój kod ma wirtualny port com, ma modbus rtu których nie potrzebujesz. Dodatkową są one na pinach niedostępnych dla twojej płytki. Tak więc moje rozwiązanie nie jest dla Ciebie.
    Skompilować można bez podpiętej płytki. Jeśli program będzie ok, to bez problemów przejdzie. Załóż nowy temat, poproś w nim o pomoc. Pokaż na fotkach błędy z kompilacji i ustawienia IDE.
    Ten temat to nie miejsce na szukanie błędów w twoim programie bo to nie jest powiązane. Poza tym na podlinkowanym temacie masz kod gotowy do wykorzystania.