Tagy: 
User library

NETIO AN32 ukazuje jak protokolem Modbus/TCP z aplikace v Node-RED ovládat výstupy a číst změřené hodnoty (kWh, A, V) z elektrických zásuvek 110/230V.
Node-RED je programovací nástroj pro propojení hardwarových zařízení, API a online služeb. Modbus/TCP je standardní průmyslový protokol. Příklad lze použít pro NETIO 4x stejně jako WiFi zásuvku PowerCable Modbus 101x.

 

Můžeme Vám nějak pomoci?

Podporovaná zařízení: NETIO 4All, PowerPDU 4C, NETIO 4, PowerCable Modbus 101xPowerBOX 3Px, PowerPDU 4PS, PowerDIN 4PzPowerBOX 4Kx, PowerPDU 8QS

 

Příklad AN32 obsahuje dva příklady práce s NETIO zásuvkami pomocí Modbus/TCP protokolu.

  • AN32a ukazuje ovládání výstupu 1 jako zjednodušenou a výukovou verzi.
  • AN32b je komplexní verze prakticky použitelná pro Vaše Node-RED projekty. Zohledňuje problémy s časováním několika dotazů najednou a podobně. 

 

Příklad AN32a Node-RED skript (flow) demonstruje ovládání výstupu 1 z Dashboardu, který běží v prostředí Node-RED.

Pět tlačítek zobrazených na Dashboardu volají všechny možné akce výstupu (vypni, zapni, krátké vypnutí (restart), krátké zapnutí, přepnutí stavu) pomocí Modbus Flex Write bloku (Write Single Register (0x06))

 

V Dashboardu se periodicky (1 sekunda) zobrazují stavy všech výstupů a měřené hodnoty z NETIO 4x zařízení (frekvence, napětí, celkové zatížení zařízení), pokud zařízení umí měřit elektrické hodnoty. Čtení stavu výstupů a měřených hodnot probíhá pomocí periodického čtení registrů (Read Holding Registers (0x03)).


 

Druhý příklad AN32b Node-RED skript (flow) demonstruje komplexní ovládání všech výstupů z Dashboardu, který běží v prostředí Node-RED.

Každý výstup má vlastních pět tlačítek zobrazených na Dashboardu a volají všechny možné akce u daného výstupu (vypni, zapni, krátké vypnutí (restart), krátké zapnutí, přepnutí stavu) pomocí Modbus Flex Write bloku (Write Single Register (0x06)).

V Dashboardu se periodicky zobrazují (1 sekunda) stavy všech výstupů a měřené hodnoty z NETIO 4x zařízení (proud, napětí, celkové zatížení zařízení, frekvence, short time,…), pokud zařízení umí měřit elektrické hodnoty.

Čtení stavu výstupů a měřených hodnot probíhá pomocí periodického čtení registrů (Read Holding Registers (0x03)).

 

Podrobnosti o M2M protokolu: NETIO > Podpora > Ke stažení > Modbus / TCP - popis NETIO M2M API rozhraní - PDF

 

NETIO příklady práce s Node-RED:

 

 

Flow (Node-RED skript) pro AN32a (výuková verze):

 

Dashboard pro AN32a:

 

Jak funguje Modbus/TCP protokol

Akce, které lze aplikovat na každý výstup (elektrickou zásuvku)

NETIO elektrické zásuvky používají ve všech M2M protokolech stejné akce, které lze vykonávat na jednotlivých zásuvkách. Do každého výstupu lze například zapsat akci typu Toggle=přepni na druhý stav, nebo Short Off=vypni na několik sekund. Pro Short On a Short Off příkazy má Modbus/TCP vlastní čas „short“, který se definuje přes Modbus.

 

Akce výstupu

  •  0 = Vypnutí výstupu  (Off)
  •  1 = Zapnutí výstupu (On)
  •  2 = Vypnutí výstupu na krátkou dobu (short Off)
  •  3 = Zapnutí výstupu na krátkou dobu (short On)
  •  4 = Přepnutí výstupu z jednoho stavu do druhého (toggle)
  •  5 = Ponechání stavu výstupu (no change)

 

Modbus/TCP protokol umožnuje ovládat zařízení pomocí svých funkcí.

Tudíž my pomocí Modbus/TCP funkce (01 - 16) pošleme do NETIO 4x chytré zásuvky akci (0-5)

 

Modbus/TCP funkce

  •  01 = Read Coils (NETIO: přečte stav jednoho výstupu On/Off)
  •  02 = Read Discrete Input
  •  03 = Read Holding Registers (NETIO: přečte například počet výstupů)
  •  04 = Read Input Registers (NETIO: čtení měřených hodnot)
  •  05 = Write Single Coil (NETIO: nastavení stavu výstupu On/Off)
  •  06 = Write Single Register (NETIO: provede vybranou akci s výstupem (například přepnutí stavu))
  •  15 (0x0F) = Write Multiple Coils       
  •  16 (0x10) = Write Multiple Registers

 

 

Ovládání NETIO 4x přes Modbus/TCP protokol je detailně popsáno: NETIO -> Podpora -> Ke stažení Modbus / TCP - popis NETIO M2M API rozhraní – PDF

AN27 je ukázáno jednoduché použití protokolu Modbus/TCP.

 

Nastavení NETIO 4x chytrých zásuvek

Ve webové administraci NETIO 4x (NETIO 4 / 4All / 4C) v sekci M2M API Protocols - Modbus/TCP, povolte Enable Modbus/TCP, popřípadě nastavte číslo portu.

Pro možnost ovládání jednotlivých výstupů je nutné povolit možnost Enable WRITE. Dále je zde možné nastavit filter pro IP adresy.

 

Online demo access on NETIO device web

NETIO 4All Online demo

Online demo je fyzické zařízení NETIO, připojené na internetu na veřejné IP adrese. Výrobce poskytuje Online demo zařízení pro každý model. Online dema mají různou konfiguraci a lze tak otestovat chování, aniž byste měli zařízení fyzicky v ruce.

Online dema nelze překonfigurovat.

Na Online demo každého produktu se dostanete z ikony „TRY ON-LINE DEMO“ na stránce každého produktu.

 

Node-RED

Node-RED je programovací nástroj pro spojení hardwarových zařízení, API a online služeb v novém a zajímavém způsobu. Node-RED nabízí flow editor v browseru a veliký výběr bloků a možností. Navíc je postavený na Node.JS, což mu umožnuje běžet na nízkorozpočtových zařízeních jako Raspberry Pi a dokonce i v cloudu.

 

AN32a flow (skript) – download

Konfigurace pro node-RED se přenáší jako json struktura a lze ji zkopírovat a vložit přes clipboard.

 

 

 

Import AN32a flow (skriptu) do node-RED

V menu vyberte Import -> Clipboard.

Následně zkopírujte text do označeného pole a dejte import.

 

Instalace chybějících bloků.

Bloky se vám nahrají do vybrané flow. Je možné, že se vypíše chybová hláška se seznamem bloků, které se snažíte naimportovat, ale nemáte je ještě nainstalované v Node-RED. V takovémto případě si musíte dané bloky doinstalovat.

V případě chybějících nodes v menu vyberte Manage palette -> klikněte na Install a vyhledejte nodes, které vám chybí.

Detailněji popsáno v AN29.

 

Jak funguje AN32a (Modbus/TCP) Flow

 

AN32a se primárně skládá ze dvou částí: WRITE a GET

 

WRITE: Zápis O1

  • Pět tlačítek se zobrazuje na Dashboardu. Všechny ovládají výstup 1 a volají různé akce.
  • Po zmáčknutí tlačítka ON v Dashboardu, se nastaví payload na číslo určující akci (definováno na každém tlačítku, podle akcí výstupu).
  • Blok Output 1 control nastavuje msg.payload na správný formát, aby mohl být použit jako vstupní parametr pro Modbus Flex Write.  Např.: msg.payload = { value: msg.payload, 'fc':6,'unitid':1, 'address': 101 , 'quantity': 1 } return msg;
  • Blok Msg.payload zobrazí výstup od Modbus Flex Write bloku.

 

GET: Čtení O1 – O4

  • Blok timestamp po sekundových intervalech spíná Modbus Flex Getter  bloky, které čtou přečtou hodnoty z NETIO 4x zařízení.
  • Blok Voltage request posílá GET request pro čtení hodnoty napětí z NETIO 4x zařízení.
  • Blok Frequency request posílá GET request pro čtení hodnoty frekvence z NETIO 4x zařízení.
  • Blok OTPF request posílá GET request pro čtení OTPF hodnoty z NETIO 4x zařízení.
  • Blok Modbus Flex Getter čte hodnoty z NETIO 4x zařízení podle adresy a funkce, kterou dostane jako input.
  • Bloky /10, /100 a /1000 dělí číslo, které dostanou jako odpověď od Modbus Flex Getter  bloku, aby se v Dashboardu zobrazovalo ve správném řádu.
  • Blok Function přiřazuje aktuální stav outputů NETIO 4x zařízení, které přečte Modbus Flex Getter do msg vlastností, aby mohli být zobrazeny v dashboardu.
  • Poté následují různé výstupní bloky, které zobrazují v Dashboardu vybrané vlastnosti msg objektu, kterému jsme jako vlastnosti přiřadili hodnoty z Modbus Flex Getter bloku

Msg object a msg.payload

Je jednodušše a přehledně vysvětleno zde:

 

Popis použitých bloků

Button node

Přidá Button do Dashboardu.

Kliknutí na Button node generuje zprávu obsahující číslo indikující akci.

Jako payload je dané číslo.

 

Možnosti akce výstupu:

  • 0 = Vypnutí výstupu  (Off)
  • 1 = Zapnutí výstupu (On)
  • 2 = Vypnutí výstupu na krátkou dobu (short Off)
  • 3 = Zapnutí výstupu na krátkou dobu (short On)
  • 4 = Přepnutí výstupu z jednoho stavu do druhého (toggle)
  • 5 = Ponechání stavu výstupu (no change)

 

Output 1 control

Dostane od Button nodu msg.payload obsahující číslo shodné s akcí(1 = on, 4 = Toggle, atd..).

Upraví msg,paylaod na formát, který blok Modbus Flex Write bere jako input.

 

value: msg.payload, = akce výstupu

'fc': 6, = Modbus akce pro zápis.

'unitid': 1, = unit ID (je ignorováno)

'address': 101 ,  = adresa outputu(101 = 1, 102 = 2, 103 = 3, 104 = 4)

'quantity': 1 = počet výstupů, se kterými chci pracovat. V tomto případě chci výstup 1.

 

Modbus Flex Write

Přepíná (zapisuje) výstupy NETIO 4x zařízení.

 

Modbus/TCP write funkce

  •  05 = Write Single Coil (NETIO: nastavení stavu výstupu On/Off)
  •  06 = Write Single Register (NETIO: provede vybranou akci s výstupem (například přepnutí stavu))
  •  15 (0x0F) = Write Multiple Coils       
  •  16 (0x10) = Write Multiple Registers

 

Jako server je nastaveno NETIO 4All online demo.

Host je IP adresa online dema (ta se dlouhodobě mění).

Modbus/TCP protokol nemůže použít DNS adresu, proto je potřeba zjistit IP adresu online dema.

Jak pracovat s online Modbus/TCP protokolem je detailně popsáno v AN27.

Port je nastaven na TCP port (502).

Pokud chcete použít vlastní zařízení, zde je možné změnit IP adresu.

 

Místo NETIO 4All online dema lze použít PowerPDU 4C online demo.

 

 

Debug node

Vypisuje msg.payload.

Defaultně je nastaven na msg.payload a tudíž v tomto případě zobrazuje v node-RED odpověď od serveru.

 

Inject node

Tento blok po sekundových intervalech aktivuje všechny Modbus Flex Read bloky, díky čemuž se v Dashboardu aktualizují hodnoty po sekundových intervalech.

 

Voltage request

Posílá Modbus Flex Read bloku request pro čtení hodnoty napětí.

Nastavuje msg.payload na formát, který Modbus Flex Read bere jako input.

 

value: msg.payload, = není důležité

'fc': 4, = modbus funkce pro čtení naměřených hodnot

'unitid': 1, = je ignorováno

'address': 1, = adresa registru s hodnotou napětí.

'quantity': 1 = počet registrů, které čteme.

 

Frequency request

Posílá Modbus Flex Read bloku request pro čtení hodnoty frekvence.

Nastavuje msg.payload na formát, který Modbus Flex Read bere jako input.

 

value: msg.payload, = není důležité

'fc': 4, = modbus funkce pro čtení naměřených hodnot

'unitid': 1, = je ignorováno

'address': 0, = adresa registru s hodnotou frekvence.

'quantity': 1 = počet registrů, které čteme.

 

OTPF request

Posílá Modbus Flex Read bloku request pro čtení hodnoty Overall True Power Factor.

Overall  = vypočtená hodnota pro celé zařízení.

 

Nastavuje msg.payload na formát, který Modbus Flex Read bere jako input.

 

value: msg.payload, = není důležité

'fc': 4, = modbus funkce pro čtení naměřených hodnot

'unitid': 1, = je ignorováno

'address': 2 , = adresa registru s hodnotou Overall True Power Factor.

'quantity': 1 = počet registrů, které čteme.

 

/10, /100 a /1000

Tyto jednoduché function bloky dělí msg.payload hodnotu, kterou dostanou od Modbus Flex Getter Bloku, aby se zobrazovala v dashboardu ve správném řádu.

 

Output states request

Posílá Modbus Flex Read bloku request pro čtení hodnot stavu všech výstupů z NETIO 4x chytré zásuvky.

Nastavuje msg.payload na formát, který Modbus Flex Read bere jako input.

 

value: msg.payload, = není důležité

'fc': 3, = modbus funkce pro čtení naměřených hodnot

'unitid': 1, = je ignorováno

'address': 101 , = adresa registru se stavem 1. výstupu.

'quantity': 4 = počet registrů, které čteme. Vzhledem k tomu, že čteme 4 stavy ke 4 výstupům, tak hodnota je nastavena na 4.

Začínám na adrese 101 (1. výstup) a zkončím na adrese 104 (4.výstup).

 

Function

Přiřazuje hodnoty se stavy výstupů, které dostane od Modbus Flex Read bloku a

přiřazuje je jako msg vlastnosti.

 

A nastavuje barvy textu v Text node v dashboardu, aby se měnily podle hodnoty.

 

Text node

Zobrazí textové pole v Dashboardu.

V AN32 zobrazují proud, napětí, frekvenci a Overall True Power Factor.

Label určuje název, který se zobrazuje v dashboardu a Name určuje jméno bloku, které se zobrazuje ve Flow v node-REDu.

{{msg.O1_Color}} mění barvu textu podle hodnoty {{msg.O1_State}}.

 

 

Gauge node

Tento blok přidává do Dashboardu widget měřiče.

 

Node-RED Dashboard

Dashboard je grafickým zobrazením dashboard prvků.

Dashboard AN32a lze otevřít kliknutím na označený symbol, nebo na adrese vašeho node-RED serveru s přidáním ui na konci adresy. například 127.0.0.1:1880/ui.

 

 

V AN32a Dashboard je v menu uveden odkaz na stránky NETIO products:

 

AN32b – komplexní verze

AN32b funguje jako komplexní ovladač výstupů 1 – 4. Každý výstup má na Dashboardu vlastních 5 ovládacích prvků (ON, OFF, SHORT ON, SHORT OFF, TOGGLE). Díky periodickému čtení hodnot zobrazuje aktuální stav výstupů.

 

Modbus Flex Write a Modbus Flex Read bloky mají problém že při velkém počtu requestů se nové requesty ukládají do queue a postupně vykonávají. Při dosažení určitého počtu se přestanou nové requesty ukládat do queue.

Tento problém řeší AN32b díky Delay blokům a pomocí kontrolní proměnné, čímž rozděluje periodu na více částí, díky čemuž nechodí velké množství requestů najednou a nezvnikají takové nápory.

 

AN32b import skript

Konfigurace pro node-RED se přenáší jako JSON struktura a lze ji vložit přes clipboard.

 

Flow (Node-RED skript) pro AN32b (komplexní verze):

 

 

FAQ

1) Je možné použít jinou IP adresu než předvyplněnou?

Ano, IP adresu lze nastavit v Modbus Flex blocích změnou hodnoty Host v Serveru.

 

2) Je možné ovládat jiný output než output 1?

Ano, má-li zařízení více výstupů, tak číslo výstupu lze změnit změněním čísla adresy v bloku Output 1 control.

Příklad: msg.payload = { value: msg.payload,

'fc': 6,

'unitid': 1,

'address': 102 ,

'quantity': 1 }

return msg;

 

3) Provedl/a jsem změny ve Flow v node-RED, ale v dashboardu se změny neprojevily.

Pro zobrazení a uložení změn ve všech Flow je nutné dát v node-RED v pravo nahoře Deploy.

 

4) Jak mohu nainstalovat Node-RED na PC?

Na oficiálních stránkách node-RED je podrobný návod + free installer.

Website: https://nodered.org/docs/getting-started/

 

5) Lze nainstoval Node-RED i na jiná zařízení než PC ?

Ano, node-RED může být spustěn např. Raspberry Pi, Arduino nebo Microsoft Azure.

 

6) Lze použít i DNS vyjádření IP adresy ?

Bohužel ne, kvůli omezení Modbus bloků v node-RED. IP adresu NETIO 4x zařízení lze zjistit například pomocí NETIO discover programu v lokální síti.

Pro zjištění IP online dema použijte ping příkaz viz podrobný popis jak na to v AN27.

 

7) V node-RED v debug sekci se mi vypisuje "Address Not Valid".

Hodnota adresy není validní.

 

8) V node-RED v debug sekci se mi vypisuje "FC Not Valid".

Hodnota funkce není validní.

 

9) V node-RED v debug sekci se mi vypisuje "Quantity Not Valid"

Hodnota kvantity není validní.

 

 

 


 

Podporované verze FW pro NETIO 4x:

3.1.0 a vyšší (Archiv firmware)

 

Podporované verze FW pro PowerCable xxx:

2.0.2 a vyšší (Archiv firmware)

 


 

Zeptejte se na cenu nebo technické parametry

Pro otestování zařízení použijte jméno/heslo demo/demo