Komunikacja PLC i PC za pomocą protokołu SLMP

Komunikacja PLC i PC za pomocą protokołu SLMP


‎Przegląd dokumentu‎

‎Komunikacja PC i PLC za pośrednictwem SLMP‎


Celem tego dokumentu jest dostarczenie prostego rozwiązania do komunikacji PC i PLC za pośrednictwem SLMP. ‎

‎Na początku zostanie przedstawiony sposób ustawiania parametrów komunikacji w GX Works3 dla protokołu SLMP. Następnie opisane zostanie odczytanie wartości rejestru ze sterownika PLC za pomocą programu narzędziowego Hercules SETUP. Ponadto dokument ten zawiera informacje o tym, jak utworzyć własną aplikację konsolową w języku C#. ‎

‎Przykładowe rezultaty      

‎Komunikacja SLMP za pomocą narzędzia Hercules SETUP‎

‎                                                                       Komunikacja SLMP za pośrednictwem konsoli

‎Szczegóły komunikacji PC i PLC przez SLMP‎

‎Parametryzacja w GX Works3 ‎

‎Połączenie PC i PLC‎

‎Aby nawiązać połączenie między komputerem a sterownikiem PLC:‎
‎Połącz urządzenia za pomocą przewodu Ethernet → Utwórz nowy projekt dla sterownika PLC → Wybierz Online → Current Connection Destination... ‎



‎W przypadku Direct Coupled Setting wystarczy ‎‎wpisać adres IP w polu IP Address of Adapter‎ i potwierdzić ustawienia (jeśli test komunikacji był pozytywny). ‎

‎W przeciwnym razie ‎‎wybierz Other Connection Method‎ (Open the specify Connection Destination window)‎‎ ‎‎→ ‎ CPU Module Direct Couple Setting‎→ wybierz ‎Ethernet‎ → wpisz adres IP w polu IP Address ‎‎→‎ ‎Zatwierdź Tak‎

‎                                                                                                                                                        Pamiętaj, aby ustawić adres IP komputera w tej samej podsieci co sterownik PLC‎

‎Wykonaj ‎‎test komunikacji ‎‎ i potwierdź ustawienia.‎


‎Konfiguracja modułu‎

‎Kliknij dwukrotnie‎‎ na Module Configuration ‎z drzewa projektu → przeciągnij i ‎‎umieść w polu roboczym komponenty sprzętowe‎‎, które reprezentują stan rzeczywisty.‎

 
‎Możesz także wybrać ‎Online‎→ ‎Read Module Configuration from PLC



Ethernet Port

‎Aby rozpocząć korzystanie z protokołu SLMP, ustaw następujące parametry:‎



‎Ustaw ‎External Device Configuration‎, klikając ‎‎dwukrotnie na <Detailed Settings> ‎obok tego parametru. ‎

‎Dodaj SLMP Connection Module z ‎Ethernet Device,‎‎ przeciągając go i upuszczając, → ustaw protokół‎ TCP‎ → ‎‎ustaw nr portu na2000‎→ ‎Close with Reflecting the Setting‎. ‎



‎Po wykonaniu tej operacji wybierz ‎‎opcję Check i Apply.

‎Zapisz do PLC...‎

‎Aby zapisać projekt do PLC ‎‎ ‎wybierz Online‎→‎ ‎kliknij Write to PLC...‎ ‎‎ ‎‎→ ‎‎wybierz‎‎Parameter + Program(F)‎→ Execute


‎Zresetuj‎‎ PLC i przejdź do trybu‎‎ RUN‎‎.‎

Monitoring ‎parametru D200‎

‎Dodaj dwukrotnie parametr D200 do Watch window, klikając wiersz i wpisując "‎‎D200‎‎". W pierwszym przypadku wybierz ‎format wyświetlania Decimal i ‎Hexadecimal‎‎ dla drugiego. Aby monitorować i zmieniać bieżącą wartość, kliknij ‎Start Monitoring.‎



‎Narzędzie Hercules SETUP‎


‎Połączenie ze sterownikiem PLC‎

‎Otwórz aplikację ‎‎narzędziową Hercules SETUP‎ → wybierz ‎Test mode‎ → ustaw Module IP: 192.168.3.250 ‎‎(adres IP sterownika PLC ustawiony w GX Works3) → ustaw ‎Port: 2000‎‎ (jak w przypadku konfiguracji Ethernet w GX Works3)‎

‎Jeśli nie masz jeszcze zainstalowanej aplikacji, tutaj znajduje się link do strony internetowej z‎‎ oprogramowaniem‎‎: ‎

https://www.hw-group.com/software/hercules-setup-utility




‎Upewnij się, że adres IP i nr portu są takie same jak te ustawione w GX Works3. ‎

‎Po tej operacji powinieneś być w stanie rozpocząć komunikację. Aby to zrobić, ‎‎naciśnij przycisk Connect‎.‎




‎Stan operacji połączenia zostanie wyświetlony w ‎‎polu Received data: Connected to 192.168.3.250‎(adres PLC).‎

‎Wysyłanie zapytania do PLC‎

‎Zanim wyślesz żądanie do PLC, upewnij się, że ustawienia wyglądają następująco: ‎


 
‎Umieść żądanie w sekcji ‎Send:‎

"FF 50 00 00 FF 03 00 0C 00 10 00 01 04 00 00 C8 00 00 A8 01 00"‎

‎Co jest synonimem:‎ 

‎Prosić‎

‎50 

‎00 ‎

‎00

FF

FF

‎03 ‎

‎00 ‎

0C

‎00 ‎

 

‎Podnagłówek‎

‎(bez numeru seryjnego) ‎

‎Prośba o nr docelowej sieci‎

‎Prośba o numer stacji docelowej

‎Prośba o numer docelowego modułu I/O

‎Prośba o numer docelowej stacji multidrop‎

‎Długość żądanych danych‎

‎Odpowiedź‎

D0

‎00 ‎

‎00 

FF

FF

‎03 

‎00 ‎

‎04 

‎00‎

 

‎10‎

‎00‎

‎01 

‎04 ‎

‎00

‎00‎

C8

‎00 ‎

‎00 ‎

‎O8‎

‎01

‎00

‎Zegar monitorujący‎

‎Comand (0401:Read

‎Podpolecenia‎

‎Nr urządzenia głównego‎

‎ ‎‎(0xC8 = > 200DEC)‎

‎Kod urządzenia (rejestr D)‎

‎Liczba punktów urządzenia‎‎ ‎

‎00‎

‎00 

‎BE

DC

 

‎Kod błędu‎

‎Dane‎
‎ odpowiedzi‎

 

‎Wybierz opcję ‎Hex‎i kliknij ‎Send.‎

‎W przedstawionej sytuacji wysłane polecenie to zapytanie PLC o ‎‎rejestr D200‎‎. ‎

‎Wszystkie wysłane polecenia są wyświetlane w sekcji ‎Sent data. ‎



‎Dane ze sterownika PLC są odbierane i wyświetlane w formie szesnastkowej w sekcji ‎‎R‎‎. ‎

‎Obserwując ten rejestr w ‎‎Watch window w GX Works3 możesz potwierdzić, że dane zostały wysłane poprawnie.‎

‎Aplikacja konsolowa C#‎

‎Uruchom gotową aplikację‎

‎Wpisz adres IP sterownika PLC do‎byAdres[]‎jak pokazano poniżej → umieścić ‎ipAdress‎i ‎2000‎(numer portu - wartość jak w ustawieniach GX Works3) jako argumenty funkcji‎
‎ ‎‎ConnectTCP ‎


                                                                                                       Main program


‎W ‎‎sekcji kodu do odczytu rejestru D200‎‎ umieść żądanie:‎ 

‎"0x50, 0x00, 0x00, 0xff, 0xff, 0x03, 0x00, 0x0C, 0x00, 0x10, 0x00, 0x01, 0x04, 0x00, 0x00, 0xC8, 0x00, 0x00, 0xA8, 0x01, 0x00"‎ 

‎Co jest synonimem:‎ 

‎Prosić‎

‎50‎

‎00

‎00 ‎

FF

FF

‎03 

‎00

0C

‎00

 

‎Nagłówek‎

‎(bez numeru seryjnego) ‎

Prośba o nr docelowej sieci‎

‎Prośba o numer stacji docelowej

Prośba o numer docelowego modułu I/O

‎Prośba o numer docelowej stacji multidrop

‎Długość żądanych danych‎

‎Odpowiedź‎

D0

‎00

‎00

FF

FF

‎03‎

‎00

‎04

‎00 ‎


‎10‎

‎00

‎01‎

‎04‎

‎00‎

‎00‎

C8

‎00

‎00‎

‎O8‎

‎01‎

‎00‎

‎Zegar monitorujący‎

‎Comand (0401:Read)‎

‎Podpolecenia‎

‎Nr urządzenia głównego‎

‎ ‎‎(0xC8 = > 200DEC)‎

‎Kod urządzenia (rejestr D)‎

‎Liczba punktów urządzenia‎‎ ‎

‎00

‎00‎

‎BE‎

DC

 

‎Kod błędu‎

‎Dane‎
‎ odpowiedzi‎


‎Każdy bajt w utworzonej tabeli jest szesnastkowy i‎‎ ‎‎oddzielony przecinkiem. ‎‎ ‎

‎W przedstawionej sytuacji wysłano zapytanie do PLC o ‎‎rejestr D200‎‎. ‎


                                                                                                                                     C zęść kodu do odczytu rejestru‎ ‎ D200‎


‎Uruchom‎‎ aplikację.‎



‎Dane ze sterownika PLC są odbierane i wyświetlane w konsoli. Najpierw w ‎‎formie szesnastkowej‎‎,  ‎‎młodszy i ‎‎starszy bajt‎‎. Po drugie, bajty te są konwertowane i wyświetlane w ‎‎postaci dziesiętnej‎.‎

‎Przed wyświetleniem wartości rejestru wyświetlane są informacje o stanie operacji.‎

‎Obserwując ten rejestr w Watch window w GX Works3 możesz potwierdzić, że dane zostały wysłane poprawnie.‎

‎Ostrzeżenie!‎

‎Prezentowany kod jest tylko przykładowym programem, więc nie powinien być uruchamiany bezpośrednio na prawdziwym obiekcie! Dostosuj utworzoną aplikację do swoich potrzeb.‎

‎Liczba wysyłanych i odbieranych danych może się różnić. W przedstawionym przykładzie liczba elementów ramki jest statyczna.‎

‎Modyfikacje‎

MakePingTest

‎Dodanie tej funkcji ułatwi nawiązanie połączenia. Użytkownik otrzymuje informacje, czy urządzenie odpowiada.


F unkcja wykonywania testu Ping ze sterownikiem PLC‎

SelfTest

‎Możesz również dodać funkcję, która sprawdzi poprawność wysłanej ramki danych. Ta funkcja porównuje wysłane i odebrane dane (w tym przypadku test jest wykonywany na 5-elementowym zestawie). Jeśli dane są zgodne, dane mogą być wymieniane między urządzeniami i rozpoczyna się komunikacja‎

       #region Part of code used to verify whether the communication function operates normally or not

        static bool SelfTest()

        {

            bool loopTestAns = false;

 

            byte[] loopMessage = new byte[5] {0x41, 0x42, 0x43,0x44, 0x45}; // 5 elements for test - "ABCDE"

 

            //Request data length

            int needByteMessage = 2 + 4 + 2 + loopMessage.Length;

            byte lowByte = (byte)(needByteMessage & 0xff);

            byte highByte = (byte)(needByteMessage >> 8 & 0xff);

 

            byte[] payload = new byte[] { 0x50, 0x00, 0x00, 0xff, 0xff, 0x03, 0x00, lowByte, highByte, 0x10, 0x00, 0x19, 0x06,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };

 

            //number of loopack data

            lowByte = (byte)(loopMessage.Length & 0xff);

            highByte = (byte)(loopMessage.Length >> 8 & 0xff);

            payload[15] = lowByte; payload[16] = highByte;

 

            // loopack data

            for (int i = 0; i < loopMessage.Length; i++)

            {

                payload[17 + i] = loopMessage[i];

            }

 

            NetworkStream stream = tcpC.GetStream();

            stream.Write(payload, 0, payload.Length);

            byte[] data = new Byte[20];

            stream.ReadTimeout = 1000;

            try

            {

                Int32 bytes = stream.Read(data, 0, data.Length);

                if (data[9] == 0 && data[10] == 0 && data[11] == lowByte && data[12] == highByte)

                {

                    loopTestAns = true;

                    for (int i = 0; i < loopMessage.Length; i++)

                    {

                        if (loopMessage[i] != data[13 + i])

                        {

                            loopTestAns = false;

                        }

                    }

                }

            }

            catch

            {

                loopTestAns = false;

            }

            return loopTestAns;

        }

        #endregion

  

‎Funkcja sprawdzania poprawności wysyłanej ramki danych‎

‎Simple library

‎Możliwe jest użycie prostej biblioteki. Wszystkie dane można znaleźć w załączonym pliku: " Simple Library for SLMP communication.zip". Wewnątrz można znaleźć niezbędny plik DLL do zaimportowania projektu i przykładowego programu, w którym ta biblioteka została użyta.‎

    • Related Articles

    • Ładowanie programu robota przez rejestry PLC

      Robot może być sterowany przez sterownik PLC lub inny system. Ten artykuł pokazuje jak w prosty sposób uruchomić program dowolnego robota za pomocą jednego rejestru sterującego i jego różnych wartości.  I Opis programu Metoda ta pozwala na ...
    • INV - FR-A800 - Komunikacja falownika przez CC-Link IE Field Basic lub RS485

      Artykuł zawiera informacje na temat komunikacji falownika przez CC-Link IE Field Basic oraz parametryzacji RS485 This project contains information about communicating inverter by CC-Link IE Field Basic and parameterization of RS485 Komunikacja ...
    • Wymiana etykiet - Navigator, GX Works3, GT Designer3

      Ten dokument pokazuje jak w prosty sposób przygotować wymianę etykiet pomiędzy sterownikiem PLC a panelem HMI Mitsubishi Electric Ustawienia MELSOFT Navigator Tworzenie projektu Stwórz nowy projekt. Zainicjalizuj go z ustawieniami sieciowymi.   Po ...
    • INV - FR-E800 - Quick Tips: Konfiguracja przetwornicy Mitsubishi Electric ze sterownikiem PLC Rockwell/Allen-Bradley

      ‎Film opisuje, jak podłączyć i skonfigurować falownik FR-E800 przez Ethernet/IP ze sterownikiem PLC od Allen-Bradley.‎ Zawartość:‎ ‎0:30 Konfiguracja FR-E800 w FR Configurator2. ‎3:00 Dodanie pliku FR-E800 ESD do RSLogox5000.‎ ‎5:00 Dodanie bloku ...
    • Aplikacja do doboru PLC

      Poniższa strona internetowa umożliwia wybór modułów, takich jak procesor, zasilacz czy jednostka bazowa wraz z innymi modułami dotyczących poniższych serii sterowników: Seria MELSEC iQ-R Seria MELSEC iQ-F Seria MELSEC-Q Seria MELSEC-L Seria MELSEC-F ...