Elektroda.pl
Elektroda.pl
X
Elektroda.pl
Computer ControlsComputer Controls
Proszę, dodaj wyjątek dla 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 3867 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! Ranking DIY
    Potrafisz napisać podobny artykuł? Wyślij do mnie a otrzymasz kartę SD 64GB.
    O autorze
    lukaszd82
    Poziom 28  
    Offline 
    Specjalizuje się w: automatyka przemysłowa
    lukaszd82 napisał 1161 postów o ocenie 254, pomógł 103 razy. Mieszka w mieście Ostrowiec Świętokrzyski. Jest z nami od 2006 roku.
  • Computer ControlsComputer Controls
  • #2
    Galareta
    Poziom 22  
    Dlaczego esp shield a nie samo esp wlutowane? Przecież to się fajnie lutuje. ;)
  • Computer ControlsComputer Controls
  • #3
    lukaszd82
    Poziom 28  
    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
    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
    lukaszd82
    Poziom 28  
    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
    tomjed
    Poziom 27  
    Biblioteki mam poinstalowane. Udało mi się zaprojektować to:
    https://www.elektroda.pl/rtvforum/topic3418119.html

    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
    lukaszd82
    Poziom 28  
    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.