Node-RED – monitorowanie sterownika PLC Siemens S7-1200

Tomasz Sokół Ethernet przemysłowy, Factory Automation, How to, Komputery przemysłowe, Moduły kontrolno-pomiarowe, Protokoły i konwertery przemysłowe Tagi: , , , , ,

W jaki sposób zaimplementować i skonfigurować Node-RED, aby odczytywać statusy urządzeń Profinet?

Jest to kolejny post nawiązujący do oprogramowania Node-RED i jego możliwości wykorzystania z urządzeniami Moxa. Tym razem omówimy implementację biblioteki, która umożliwia komunikację ze sterownikiem PLC Siemens S7-1200.

Zapraszamy do zapoznania się z poprzednimi artykułami:

Topologia testowanego układu

Na potrzeby tego artykułu została zbudowana topologia, której schemat ideowy został przedstawiony na poniższym rysunku.

  • ioLogik E1212 – moduł kontrolno-pomiarowy, 8 wejść i 8 wyjść cyfrowych, 2 portowy switch Ethernet. Do niego podłączone są przyciski,
  • MGate 5103 – przemysłowa bramka komunikacyjna, która umożliwia konwersję z Modbusa, EtherNET/IP na protokół Profinet.
  • SDS-3008 – switch przemysłowy na szynę DIN ze wsparciem Profinetu,
  • UC-3100 – komputer przemysłowy z procesorem ARM na szynę DIN na którym jest zainstalowane oprogramowanie Node-RED,
  • Dashboard służący do monitorowania parametrów i sterowania,
  • oprogramowanie inżynierskie TIA Portal.

Zasada działania naszego demo jest bardzo prosta. Wykorzystujemy dwa moduły wejść-wyjść do zbierania sygnałów z różnych lokacji. Iologiki komunikują się z wykorzystaniem protokołu Modbus TCP. MGate 5103 wykorzystywany jest to konwersji protokołu Modbus TCP na Profinet. Konwersja protokołu umożliwia monitorowanie interesujących nas sygnałów w TIA Portal. Dodatkowo, wykorzystując wejścia cyfrowe w ioLogik E1212 wpływamy (zgodnie z zaimplementowaną logiką w sterowniku PLC) na zmianę wyjść cyfrowych sterownika, do których podłączona jest wieża sygnalizacyjna.

Dodatkowo, wykorzystując narzędzie jakim jest Node-RED możemy monitorować wizualnie interesujące nas parametry.

Instalacja dodatkowych bibliotek

Aby w pełni zbudować nasz zestaw Demo, musimy zainstalować dodatkowe biblioteki umożliwiające tworzenie wizualizacji oraz obsługujące funkcje komunikacji ze sterownikiem PLC.

Możemy to zrobić w dwojaki sposób – z poziomu command line systemu Linux używając NPM, ale zdecydowanie wygodniej wykorzystać do tego celu interfejs Node-RED.

W prawym górnym rogu ekranu, należy przejść do zakładki Manage palette.

Aby zainstalować funkcję „Dashboard” należy przejść do zakładki Install, a następnie wyszukać funkcję „Dashboard”. W naszym demo wykorzystujemy funkcję node-red-dashboard w wersji 2.17.1. Klikając polecenie „Install” zainstalujemy wspomnianą funkcję. Dodatkowo, możemy zajrzeć do dokumentacji biblioteki, aby sprawdzić działanie każdego bloczku oraz przykłady użycia. Funkcja ta umożliwia m.in. tworzenie wizualnych przycisków itp.

Dodatkową biblioteką, którą będziemy wykorzystywać do komunikacji ze sterownikiem PLC jest node-red-contrib-s7.

Szczegółowe informacje o bibliotece dostępne są pod poniższym linkiem.

Należy ją wyszukać i zainstalować.

Tworzenie prostego flow oraz dashboardu

Nasz finalny program (flow) przedstawiony jest poniżej:

Konfiguracja parametrów sterownika PLC

W konsoli webowej Node-RED należy dodać „s7 endpoint node„, w którym w zakładce Connection definiujemy parametry sterownika PLC takie jak:

  • adres IP oraz numer portu
  • numer RACK oraz SLOT
  • czas cyklu – Cycle time
  • Timeout
  • nazwa

Dodatkowo, aby umożliwić komunikację Node-RED ze sterownikiem PLC, w konfiguracji sterownika PLC należy zmienić jedno z ustawień.

W zakładce „Protection & Security” należy zaznaczyć checkbox „Permit access with PUT/GET communication from remote partner„.

Odczyt sygnałów

Natomiast w zakładce Variables dodajemy zmienne, które będą odczytywane.

Mówiąc najprościej, dodajemy adresy zgodnie z tagami sterownika PLC.

Następnie, po dodaniu bloczka „s7 in node” wybieramy w nim z listy skonfigurowany sterownik, a także zmienną, którą będzie przechowywał dany bloczek.

Następnie możemy przypisać do powyższego bloczka np. diodę LED, która będzie sygnalizowałam zmianę stanu.

Odczyt parametrów switcha przemysłowego

Switche przemysłowe Moxa ze wsparciem Profinetu oferują szereg sposobów monitorowania np. w TIA Portal.

Tej tematyce został poświęcony dość obszerny artykuł omawiający wszystkie zagadnienia krok po kroku wraz z opisem konfiguracji w TIA Portal. Zachęcamy do lektury.

Tak jak poprzednio, w tym przypadku również definiujemy zmienne zgodnie z konfiguracją naszego sterownika PLC.

Parametry switcha SDS-3008 przechowywane są w konfiguracji sterownika jako tagi, które możemy również monitorować z poziomu TIA Portal.

Gotowy kod do pobrania

Przechodząc do zakładki Import można dodać kod programu, który wykorzystywany jest w naszym demo z Modbusem TCP.

kod do pobrania niżej.

Show »

[
    {
        "id": "99465e2b.f4652",
        "type": "s7 in",
        "z": "5687b78d.2c285",
        "endpoint": "48d3691e.3c309",
        "mode": "single",
        "variable": "Czerwony",
        "diff": false,
        "name": "Czerwony",
        "x": 140,
        "y": 120,
        "wires": [
            [
                "b939dfde.bf99"
            ]
        ]
    },
    {
        "id": "57e339fc.db5d6",
        "type": "s7 in",
        "z": "5687b78d.2c285",
        "endpoint": "48d3691e.3c309",
        "mode": "single",
        "variable": "Zielony",
        "diff": false,
        "name": "",
        "x": 130,
        "y": 240,
        "wires": [
            [
                "f8b28dfe.5c0148"
            ]
        ]
    },
    {
        "id": "d0a0a967.a5f98",
        "type": "s7 in",
        "z": "5687b78d.2c285",
        "endpoint": "48d3691e.3c309",
        "mode": "single",
        "variable": "Pomarańczowy",
        "diff": false,
        "name": "Pomarańczowy",
        "x": 160,
        "y": 180,
        "wires": [
            [
                "f5050434.9bdb1"
            ]
        ]
    },
    {
        "id": "b939dfde.bf99",
        "type": "ui_led",
        "z": "5687b78d.2c285",
        "group": "cd56c4a2.c583a8",
        "order": 0,
        "width": 0,
        "height": 0,
        "label": "Czerwony",
        "labelPlacement": "left",
        "labelAlignment": "left",
        "colorForValue": [
            {
                "color": "grey",
                "value": "false",
                "valueType": "bool"
            },
            {
                "color": "red",
                "value": "true",
                "valueType": "bool"
            }
        ],
        "name": "Czerwony",
        "x": 490,
        "y": 120,
        "wires": []
    },
    {
        "id": "f5050434.9bdb1",
        "type": "ui_led",
        "z": "5687b78d.2c285",
        "group": "cd56c4a2.c583a8",
        "order": 0,
        "width": 0,
        "height": 0,
        "label": "Pomarańczowy",
        "labelPlacement": "left",
        "labelAlignment": "left",
        "colorForValue": [
            {
                "color": "grey",
                "value": "false",
                "valueType": "bool"
            },
            {
                "color": "orange",
                "value": "true",
                "valueType": "bool"
            }
        ],
        "name": "Pomarańczowy",
        "x": 500,
        "y": 180,
        "wires": []
    },
    {
        "id": "f8b28dfe.5c0148",
        "type": "ui_led",
        "z": "5687b78d.2c285",
        "group": "cd56c4a2.c583a8",
        "order": 0,
        "width": 0,
        "height": 0,
        "label": "Zielony",
        "labelPlacement": "left",
        "labelAlignment": "left",
        "colorForValue": [
            {
                "color": "grey",
                "value": "false",
                "valueType": "bool"
            },
            {
                "color": "green",
                "value": "true",
                "valueType": "bool"
            }
        ],
        "name": "Zielony",
        "x": 480,
        "y": 240,
        "wires": []
    },
    {
        "id": "96cc1b40.93cbe",
        "type": "s7 in",
        "z": "5687b78d.2c285",
        "endpoint": "48d3691e.3c309",
        "mode": "single",
        "variable": "Port 1",
        "diff": false,
        "name": "",
        "x": 770,
        "y": 120,
        "wires": [
            [
                "3159e829.18c4d"
            ]
        ]
    },
    {
        "id": "ca96251c.2a225",
        "type": "s7 in",
        "z": "5687b78d.2c285",
        "endpoint": "48d3691e.3c309",
        "mode": "single",
        "variable": "Port 2",
        "diff": false,
        "name": "",
        "x": 770,
        "y": 160,
        "wires": [
            [
                "169985cc.ec0b42"
            ]
        ]
    },
    {
        "id": "97d58de8.0de0f8",
        "type": "s7 in",
        "z": "5687b78d.2c285",
        "endpoint": "48d3691e.3c309",
        "mode": "single",
        "variable": "Port 3",
        "diff": false,
        "name": "",
        "x": 770,
        "y": 200,
        "wires": [
            [
                "10c310b3.8bc70f"
            ]
        ]
    },
    {
        "id": "510b9a2a.86b2a4",
        "type": "s7 in",
        "z": "5687b78d.2c285",
        "endpoint": "48d3691e.3c309",
        "mode": "single",
        "variable": "Port 4",
        "diff": false,
        "name": "",
        "x": 770,
        "y": 240,
        "wires": [
            [
                "84e6a4a1.459458"
            ]
        ]
    },
    {
        "id": "a4957879.726738",
        "type": "s7 in",
        "z": "5687b78d.2c285",
        "endpoint": "48d3691e.3c309",
        "mode": "single",
        "variable": "Port 5",
        "diff": false,
        "name": "",
        "x": 770,
        "y": 280,
        "wires": [
            [
                "7d56e7bd.c4dd58"
            ]
        ]
    },
    {
        "id": "4798f2a3.654644",
        "type": "s7 in",
        "z": "5687b78d.2c285",
        "endpoint": "48d3691e.3c309",
        "mode": "single",
        "variable": "Port 6",
        "diff": false,
        "name": "",
        "x": 770,
        "y": 320,
        "wires": [
            [
                "a7ba6843.b92e3"
            ]
        ]
    },
    {
        "id": "f7627590.003568",
        "type": "s7 in",
        "z": "5687b78d.2c285",
        "endpoint": "48d3691e.3c309",
        "mode": "single",
        "variable": "Port 7",
        "diff": false,
        "name": "",
        "x": 770,
        "y": 360,
        "wires": [
            [
                "cee3b268.ab19d8"
            ]
        ]
    },
    {
        "id": "7e09f71e.a5cbc",
        "type": "s7 in",
        "z": "5687b78d.2c285",
        "endpoint": "48d3691e.3c309",
        "mode": "single",
        "variable": "Port 8",
        "diff": false,
        "name": "",
        "x": 770,
        "y": 400,
        "wires": [
            [
                "48a864e0.ff6274"
            ]
        ]
    },
    {
        "id": "3159e829.18c4d",
        "type": "ui_led",
        "z": "5687b78d.2c285",
        "group": "7a9418e3.c8db8",
        "order": 8,
        "width": 0,
        "height": 0,
        "label": "Port 1",
        "labelPlacement": "left",
        "labelAlignment": "left",
        "colorForValue": [
            {
                "color": "red",
                "value": "false",
                "valueType": "bool"
            },
            {
                "color": "green",
                "value": "true",
                "valueType": "bool"
            }
        ],
        "name": "Port 1",
        "x": 970,
        "y": 120,
        "wires": []
    },
    {
        "id": "169985cc.ec0b42",
        "type": "ui_led",
        "z": "5687b78d.2c285",
        "group": "7a9418e3.c8db8",
        "order": 7,
        "width": 0,
        "height": 0,
        "label": "Port 2",
        "labelPlacement": "left",
        "labelAlignment": "left",
        "colorForValue": [
            {
                "color": "red",
                "value": "false",
                "valueType": "bool"
            },
            {
                "color": "green",
                "value": "true",
                "valueType": "bool"
            }
        ],
        "name": "Port 2",
        "x": 970,
        "y": 160,
        "wires": []
    },
    {
        "id": "10c310b3.8bc70f",
        "type": "ui_led",
        "z": "5687b78d.2c285",
        "group": "7a9418e3.c8db8",
        "order": 6,
        "width": 0,
        "height": 0,
        "label": "Port 3",
        "labelPlacement": "left",
        "labelAlignment": "left",
        "colorForValue": [
            {
                "color": "red",
                "value": "false",
                "valueType": "bool"
            },
            {
                "color": "green",
                "value": "true",
                "valueType": "bool"
            }
        ],
        "name": "Port 3",
        "x": 970,
        "y": 200,
        "wires": []
    },
    {
        "id": "84e6a4a1.459458",
        "type": "ui_led",
        "z": "5687b78d.2c285",
        "group": "7a9418e3.c8db8",
        "order": 5,
        "width": 0,
        "height": 0,
        "label": "Port 4",
        "labelPlacement": "left",
        "labelAlignment": "left",
        "colorForValue": [
            {
                "color": "red",
                "value": "false",
                "valueType": "bool"
            },
            {
                "color": "green",
                "value": "true",
                "valueType": "bool"
            }
        ],
        "name": "Port 4",
        "x": 970,
        "y": 240,
        "wires": []
    },
    {
        "id": "7d56e7bd.c4dd58",
        "type": "ui_led",
        "z": "5687b78d.2c285",
        "group": "7a9418e3.c8db8",
        "order": 4,
        "width": 0,
        "height": 0,
        "label": "Port 5",
        "labelPlacement": "left",
        "labelAlignment": "left",
        "colorForValue": [
            {
                "color": "red",
                "value": "false",
                "valueType": "bool"
            },
            {
                "color": "green",
                "value": "true",
                "valueType": "bool"
            }
        ],
        "name": "Port 5",
        "x": 970,
        "y": 280,
        "wires": []
    },
    {
        "id": "a7ba6843.b92e3",
        "type": "ui_led",
        "z": "5687b78d.2c285",
        "group": "7a9418e3.c8db8",
        "order": 3,
        "width": 0,
        "height": 0,
        "label": "Port 6",
        "labelPlacement": "left",
        "labelAlignment": "left",
        "colorForValue": [
            {
                "color": "red",
                "value": "false",
                "valueType": "bool"
            },
            {
                "color": "green",
                "value": "true",
                "valueType": "bool"
            }
        ],
        "name": "Port 6",
        "x": 970,
        "y": 320,
        "wires": []
    },
    {
        "id": "cee3b268.ab19d8",
        "type": "ui_led",
        "z": "5687b78d.2c285",
        "group": "7a9418e3.c8db8",
        "order": 2,
        "width": 0,
        "height": 0,
        "label": "Port 7",
        "labelPlacement": "left",
        "labelAlignment": "left",
        "colorForValue": [
            {
                "color": "red",
                "value": "false",
                "valueType": "bool"
            },
            {
                "color": "green",
                "value": "true",
                "valueType": "bool"
            }
        ],
        "name": "Port 7",
        "x": 970,
        "y": 360,
        "wires": []
    },
    {
        "id": "48a864e0.ff6274",
        "type": "ui_led",
        "z": "5687b78d.2c285",
        "group": "7a9418e3.c8db8",
        "order": 1,
        "width": 0,
        "height": 0,
        "label": "Port 8",
        "labelPlacement": "left",
        "labelAlignment": "left",
        "colorForValue": [
            {
                "color": "red",
                "value": "false",
                "valueType": "bool"
            },
            {
                "color": "green",
                "value": "true",
                "valueType": "bool"
            }
        ],
        "name": "Port 8",
        "x": 970,
        "y": 400,
        "wires": []
    },
    {
        "id": "ab16a3c4.a157b",
        "type": "s7 in",
        "z": "5687b78d.2c285",
        "endpoint": "48d3691e.3c309",
        "mode": "single",
        "variable": "wejscie 0",
        "diff": false,
        "name": "Czerwony",
        "x": 140,
        "y": 340,
        "wires": [
            [
                "519ccbe6.7c81cc"
            ]
        ]
    },
    {
        "id": "8f72d0bb.4b4728",
        "type": "s7 in",
        "z": "5687b78d.2c285",
        "endpoint": "48d3691e.3c309",
        "mode": "single",
        "variable": "wejscie 2",
        "diff": false,
        "name": "Zielony",
        "x": 130,
        "y": 460,
        "wires": [
            [
                "fb2d93ca.7f4b28"
            ]
        ]
    },
    {
        "id": "64e61ad.32e9364",
        "type": "s7 in",
        "z": "5687b78d.2c285",
        "endpoint": "48d3691e.3c309",
        "mode": "single",
        "variable": "wejscie 1",
        "diff": false,
        "name": "Pomarańczowy",
        "x": 160,
        "y": 400,
        "wires": [
            [
                "1a6f3708.b55421"
            ]
        ]
    },
    {
        "id": "519ccbe6.7c81cc",
        "type": "ui_led",
        "z": "5687b78d.2c285",
        "group": "4587ac2b.7b386c",
        "order": 0,
        "width": 0,
        "height": 0,
        "label": "Czerwony",
        "labelPlacement": "left",
        "labelAlignment": "left",
        "colorForValue": [
            {
                "color": "grey",
                "value": "0",
                "valueType": "num"
            },
            {
                "color": "red",
                "value": "1",
                "valueType": "num"
            }
        ],
        "name": "Czerwony",
        "x": 490,
        "y": 340,
        "wires": []
    },
    {
        "id": "1a6f3708.b55421",
        "type": "ui_led",
        "z": "5687b78d.2c285",
        "group": "4587ac2b.7b386c",
        "order": 0,
        "width": 0,
        "height": 0,
        "label": "Pomarańczowy",
        "labelPlacement": "left",
        "labelAlignment": "left",
        "colorForValue": [
            {
                "color": "grey",
                "value": "0",
                "valueType": "num"
            },
            {
                "color": "orange",
                "value": "1",
                "valueType": "num"
            }
        ],
        "name": "Pomarańczowy",
        "x": 500,
        "y": 400,
        "wires": []
    },
    {
        "id": "fb2d93ca.7f4b28",
        "type": "ui_led",
        "z": "5687b78d.2c285",
        "group": "4587ac2b.7b386c",
        "order": 0,
        "width": 0,
        "height": 0,
        "label": "Zielony",
        "labelPlacement": "left",
        "labelAlignment": "left",
        "colorForValue": [
            {
                "color": "grey",
                "value": "0",
                "valueType": "num"
            },
            {
                "color": "green",
                "value": "1",
                "valueType": "num"
            }
        ],
        "name": "Zielony",
        "x": 480,
        "y": 460,
        "wires": []
    },
    {
        "id": "3fa7f49e.0f81bc",
        "type": "comment",
        "z": "5687b78d.2c285",
        "name": "wyjscia cyfrowe",
        "info": "",
        "x": 180,
        "y": 60,
        "wires": []
    },
    {
        "id": "d2c53728.f32a",
        "type": "comment",
        "z": "5687b78d.2c285",
        "name": "wejscia cyfrowe",
        "info": "",
        "x": 220,
        "y": 300,
        "wires": []
    },
    {
        "id": "dfe818f9.227be",
        "type": "comment",
        "z": "5687b78d.2c285",
        "name": "SDS-3008 Porty",
        "info": "",
        "x": 800,
        "y": 60,
        "wires": []
    },
    {
        "id": "3fe5cfe9.1ab768",
        "type": "s7 in",
        "z": "5687b78d.2c285",
        "endpoint": "48d3691e.3c309",
        "mode": "single",
        "variable": "Device Status",
        "diff": false,
        "name": "",
        "x": 1170,
        "y": 120,
        "wires": [
            [
                "7dbec514.ae951c"
            ]
        ]
    },
    {
        "id": "d3c68e23.8f58f",
        "type": "s7 in",
        "z": "5687b78d.2c285",
        "endpoint": "48d3691e.3c309",
        "mode": "single",
        "variable": "Power 1",
        "diff": false,
        "name": "",
        "x": 1160,
        "y": 160,
        "wires": [
            [
                "6042ea7c.2c871c"
            ]
        ]
    },
    {
        "id": "f88451d7.0a25d8",
        "type": "s7 in",
        "z": "5687b78d.2c285",
        "endpoint": "48d3691e.3c309",
        "mode": "single",
        "variable": "Power 2",
        "diff": false,
        "name": "",
        "x": 1160,
        "y": 200,
        "wires": [
            [
                "5a775fa8.934f"
            ]
        ]
    },
    {
        "id": "1ec1b74c.6e0d79",
        "type": "s7 in",
        "z": "5687b78d.2c285",
        "endpoint": "48d3691e.3c309",
        "mode": "single",
        "variable": "RSTP Status",
        "diff": false,
        "name": "",
        "x": 1170,
        "y": 240,
        "wires": [
            [
                "cfc0bfc8.424a5"
            ]
        ]
    },
    {
        "id": "fb2620b8.4a30e",
        "type": "s7 in",
        "z": "5687b78d.2c285",
        "endpoint": "48d3691e.3c309",
        "mode": "single",
        "variable": "Turbo Ring v2",
        "diff": false,
        "name": "",
        "x": 1170,
        "y": 280,
        "wires": [
            [
                "9ad23da.b49114"
            ]
        ]
    },
    {
        "id": "e6773551.bd4c2",
        "type": "s7 in",
        "z": "5687b78d.2c285",
        "endpoint": "48d3691e.3c309",
        "mode": "single",
        "variable": "Turbo Ring Status",
        "diff": false,
        "name": "",
        "x": 1180,
        "y": 320,
        "wires": [
            [
                "b5373866.f790d8"
            ]
        ]
    },
    {
        "id": "7dbec514.ae951c",
        "type": "ui_led",
        "z": "5687b78d.2c285",
        "group": "d5f0fb7b.a04e48",
        "order": 1,
        "width": 0,
        "height": 0,
        "label": "Device Status",
        "labelPlacement": "left",
        "labelAlignment": "left",
        "colorForValue": [
            {
                "color": "red",
                "value": "false",
                "valueType": "bool"
            },
            {
                "color": "green",
                "value": "true",
                "valueType": "bool"
            }
        ],
        "name": "Device status",
        "x": 1370,
        "y": 120,
        "wires": []
    },
    {
        "id": "6042ea7c.2c871c",
        "type": "ui_led",
        "z": "5687b78d.2c285",
        "group": "d5f0fb7b.a04e48",
        "order": 2,
        "width": 0,
        "height": 0,
        "label": "Power 1",
        "labelPlacement": "left",
        "labelAlignment": "left",
        "colorForValue": [
            {
                "color": "red",
                "value": "false",
                "valueType": "bool"
            },
            {
                "color": "green",
                "value": "true",
                "valueType": "bool"
            }
        ],
        "name": "Power 1",
        "x": 1360,
        "y": 160,
        "wires": []
    },
    {
        "id": "5a775fa8.934f",
        "type": "ui_led",
        "z": "5687b78d.2c285",
        "group": "d5f0fb7b.a04e48",
        "order": 3,
        "width": 0,
        "height": 0,
        "label": "Power 2",
        "labelPlacement": "left",
        "labelAlignment": "left",
        "colorForValue": [
            {
                "color": "red",
                "value": "false",
                "valueType": "bool"
            },
            {
                "color": "green",
                "value": "true",
                "valueType": "bool"
            }
        ],
        "name": "Power 2",
        "x": 1360,
        "y": 200,
        "wires": []
    },
    {
        "id": "cfc0bfc8.424a5",
        "type": "ui_led",
        "z": "5687b78d.2c285",
        "group": "d5f0fb7b.a04e48",
        "order": 4,
        "width": 0,
        "height": 0,
        "label": "RSTP Status",
        "labelPlacement": "left",
        "labelAlignment": "left",
        "colorForValue": [
            {
                "color": "red",
                "value": "false",
                "valueType": "bool"
            },
            {
                "color": "green",
                "value": "true",
                "valueType": "bool"
            }
        ],
        "name": "RSTP Status",
        "x": 1370,
        "y": 240,
        "wires": []
    },
    {
        "id": "9ad23da.b49114",
        "type": "ui_led",
        "z": "5687b78d.2c285",
        "group": "d5f0fb7b.a04e48",
        "order": 5,
        "width": 0,
        "height": 0,
        "label": "Turbo Ring v2",
        "labelPlacement": "left",
        "labelAlignment": "left",
        "colorForValue": [
            {
                "color": "red",
                "value": "false",
                "valueType": "bool"
            },
            {
                "color": "green",
                "value": "true",
                "valueType": "bool"
            }
        ],
        "name": "Turbo ring v2",
        "x": 1370,
        "y": 280,
        "wires": []
    },
    {
        "id": "b5373866.f790d8",
        "type": "ui_led",
        "z": "5687b78d.2c285",
        "group": "d5f0fb7b.a04e48",
        "order": 6,
        "width": 0,
        "height": 0,
        "label": "Turbo Ring v2 Status",
        "labelPlacement": "left",
        "labelAlignment": "left",
        "colorForValue": [
            {
                "color": "red",
                "value": "false",
                "valueType": "bool"
            },
            {
                "color": "green",
                "value": "true",
                "valueType": "bool"
            }
        ],
        "name": "Turbo Ring status",
        "x": 1390,
        "y": 320,
        "wires": []
    },
    {
        "id": "7bdea487.3a3f1c",
        "type": "comment",
        "z": "5687b78d.2c285",
        "name": "SDS-3008 Status urządzenia",
        "info": "",
        "x": 1220,
        "y": 60,
        "wires": []
    },
    {
        "id": "48d3691e.3c309",
        "type": "s7 endpoint",
        "z": "",
        "transport": "iso-on-tcp",
        "address": "192.168.3.217",
        "port": "102",
        "rack": "0",
        "slot": "1",
        "localtsaphi": "01",
        "localtsaplo": "00",
        "remotetsaphi": "01",
        "remotetsaplo": "00",
        "connmode": "rack-slot",
        "adapterauto": true,
        "adapterport": "",
        "busaddr": "2",
        "adapteraddr": "0",
        "cycletime": "200",
        "timeout": "1500",
        "verbose": "default",
        "name": "",
        "vartable": [
            {
                "addr": "Q0.0",
                "name": "Czerwony"
            },
            {
                "addr": "Q0.1",
                "name": "Pomarańczowy"
            },
            {
                "addr": "Q0.2",
                "name": "Zielony"
            },
            {
                "addr": "I6.0",
                "name": "Device Status"
            },
            {
                "addr": "I6.1",
                "name": "Power 1"
            },
            {
                "addr": "I6.2",
                "name": "Power 2"
            },
            {
                "addr": "I6.3",
                "name": "RSTP Status"
            },
            {
                "addr": "I6.5",
                "name": "Turbo Ring v2"
            },
            {
                "addr": "I6.6",
                "name": "Turbo Chain"
            },
            {
                "addr": "I6.7",
                "name": "Turbo Ring Status"
            },
            {
                "addr": "I7.0",
                "name": "Port 1"
            },
            {
                "addr": "I7.1",
                "name": "Port 2"
            },
            {
                "addr": "I7.2",
                "name": "Port 3"
            },
            {
                "addr": "I7.3",
                "name": "Port 4"
            },
            {
                "addr": "I7.4",
                "name": "Port 5"
            },
            {
                "addr": "I7.5",
                "name": "Port 6"
            },
            {
                "addr": "I7.6",
                "name": "Port 7"
            },
            {
                "addr": "I7.7",
                "name": "Port 8"
            },
            {
                "addr": "IB2",
                "name": "wejscie 0"
            },
            {
                "addr": "IB3",
                "name": "wejscie 1"
            },
            {
                "addr": "IB68",
                "name": "wejscie 2"
            }
        ]
    },
    {
        "id": "cd56c4a2.c583a8",
        "type": "ui_group",
        "z": "",
        "name": "Wyjścia cyfrowe",
        "tab": "4ad340eb.7b3438",
        "order": 2,
        "disp": true,
        "width": "4",
        "collapse": false
    },
    {
        "id": "7a9418e3.c8db8",
        "type": "ui_group",
        "z": "",
        "name": "SDS-3008 - Porty",
        "tab": "4ad340eb.7b3438",
        "order": 3,
        "disp": true,
        "width": "4",
        "collapse": false
    },
    {
        "id": "4587ac2b.7b386c",
        "type": "ui_group",
        "z": "",
        "name": "Wejścia cyfrowe",
        "tab": "4ad340eb.7b3438",
        "order": 1,
        "disp": true,
        "width": "4",
        "collapse": false
    },
    {
        "id": "d5f0fb7b.a04e48",
        "type": "ui_group",
        "z": "",
        "name": "SDS-3008 Parametry urządzenia",
        "tab": "4ad340eb.7b3438",
        "disp": true,
        "width": "6",
        "collapse": false
    },
    {
        "id": "4ad340eb.7b3438",
        "type": "ui_tab",
        "z": "",
        "name": "Profinet Demo",
        "icon": "dashboard",
        "order": 3,
        "disabled": false,
        "hidden": false
    }
]

Dashboard

Wpisując w przeglądarce adres <adres IP komputera>:1880/UI uzyskamy dostęp do graficznego Dashboardu z którego poziomu możemy monitorować status parametrów w sterowniku PLC (statusy wyjść cyfrowych oraz wewnętrznych rejestrów) i statusy portów na switchu SDS-3008.

Podsumowanie

W powyższym wpisie pokazaliśmy, że w szybki sposób można praktycznie za darmo zbudować prostą aplikację do monitorowania np. procesu produkcyjnego. Oczywiście omówiliśmy bardzo podstawowe funkcje. Node-RED oferuje zdecydowanie więcej możliwości, np. wysyłanie powiadomień sms/mail o awaryjnych stanach urządzenia, a także wiele więcej. Szczegóły można znaleźć na stronie Node-RED:
https://nodered.org/

Pozostając w tematyce Profinetu, zachęcamy do zapoznania się z innymi naszymi artykułami, w których omawiamy sposoby integracji urządzeń Moxa ze sterownikiem PLC Siemens, a także konfigurację w TIA Portal.

http://moxa.elmark.com.pl/tag/tia-portal/

W przypadku pytań, można się z nami skontaktować drogą mailową: moxa@elmark.com.pl

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *