OPC UA client con Node-RED

Node-RED è uno strumento di programmazione per collegare insieme dispositivi hardware, API e servizi online in modi nuovi e interessanti. Tramite un editor basato su browser è possibile collegare tra di loro oggetti (Flows) utilizzando l'ampia gamma oggetti disponibili.

Ho già spiegato in questo articolo come installare Node-RED sui nostri sistemi basati su Raspberry, ora vedremo come utilizzare Node-RED per dialogare con altri sistemi utilizzando il protocollo (OPC UA)  Open Platform Communications Unified Architecture un protocollo unificato di comunicazione per l'automazione industriale.

Installazione nodo OPC UA

Nella installazione standard di Node-RED viene installata una base di nodi, quelli più comunemente utilizzati, ma esiste una libreria enorme di nodi utilizzabili. Per utilizzare il protocollo OPC UA occorre installare i nodi forniti con node-red-contrib-opcua. L'installazione può essere fatta da riga di comando con (npm) Node Package Manager, oppure più semplicemente da browser.

Dal menù scegliere Manage palette, poi cercare il modulo node-red-contrib-opcua e procedere con l'installazione, per testare l'esempio occorre anche installare il modulo node-red-dashboard.

Ecco il programma

Sotto si può vedere il programma in Node-RED con la relativa dashboard che si connette al programma SimpleOPCUA sviluppato con CODESYS, entrambi i programmi sono eseguiti dallo stesso modulo CPU SlimLine Raspberry.

La comunicazione con il server OPC UA di CODESYS è svolta dal nodo OpcUa Client in cui viene definito come Endpoint l'indirizzo e porta del server OPC UA (Nell'esempio è opc.tcp://192.168.0.180:4840). Naturalmente girando entrambi i programmi sullo stesso processore avrei potuto definire opc.tcp://localhost:4840. Nelle operazioni di lettura (Variabili DIStatus e Counter) verrà definita Action READ, nelle operazioni di scrittura (Variabile DOCommand) verrà definita Action WRITE.

In entrata all'OpcUa Client si trova l'oggetto OpcUa Item che specifica il NodeId della variabile cui accedere da riportare nel campo Item, per individuare il valore da scrivere utilizzare il programma UaExpert come indicato qui. Nell'esempio avremo:

DIStatus: ns=4;s=|var|CODESYS Control for Raspberry Pi SL.Application.PLC_PRG.DIStatus
DOCommand: ns=4;s=|var|CODESYS Control for Raspberry Pi SL.Application.PLC_PRG.DOCommand
Counter: ns=4;s=|var|CODESYS Control for Raspberry Pi SL.Application.PLC_PRG.Counter

Nel campo Type andrà definito il tipo della variabile:

DIStatus: Boolean
DOCommand: Boolean
Counter: UInt32

Tuti gli altri nodi servono ad attivare a tempo l'esecuzione dei nodi OPC UA ed a visualizzare i dati sulla dashboard.

Was this article helpful?