Esplora E-book
Categorie
Esplora Audiolibri
Categorie
Esplora Riviste
Categorie
Esplora Documenti
Categorie
it
A nodejs OPCUA SERVER Interface
Il codice che segue è stato scritto da Etienne Erossignon sed è disponibile su github all’indirizzo
https://github.com/node-opcua/node-opcua
http://documentation.unified-automation.com/uasdkdotnet/2.4.2/html/group__NetUaClientSdk.html
1) Connessione al server
var client = new opcua.OPCUAClient();
client.connect(endpointUrl,function (err) { });
2) Crezione di una sessione di lavoro. Una connessione può gestire più sessioni di lavoro
var the_session = client.createSession( function(err) { });
4) Creazione di una Subscription. Una sessione di lavoro può gestire più Subscription.
Per la lettura continua delle variabili, OPC UA utilizza una funzionalità molto più efficace rispetto al vecchio
polling, la cosiddetta Subscription. Un client OPC UA può definire un insieme di variabili e chiedere al
server di essere lui a monitorare queste variabili. In caso di variazione del valore di queste variabili, sarà il
server a notificare al client questa variazione tramite apposito messaggio. In questo modo si ottiene una
fortissima riduzione nello scambio dei messaggi a vantaggio di una maggiore velocità.
Una Subscription deve contenere almeno una variabile detta Monitored Item, ma può raggruppare anche più
variabili anche di tipo differente, creando una porzione di informazione detta Notification. Una Notification
quindi può contenere più Monitored Items che verranno inviati al client tutti insieme in un unico messaggio.
pag 1
Gestione Progetto robertomana.it
A nodejs OPCUA SERVER Interface
publishingEnabled Flag che indica se la pubblicazione è abilitata o meno. Il client può decidere in
certe fasi di disabilitare temporaneamente la pubblicazione del server.
priority Quando più Subscriptions necessitano di inviare contemporaneamente una notifica al client,
viene servita prima la Subcription con priority maggiore. Il valore di default è 1. Sono ammessi valori tra 1
e 100.
maxNotificationsPerPublish indica il numero massimo di notifiche (subscription) che il server
può inviare al client in corrispondenza del messaggio di publishing. È deciso dal client, ma il server può
inviarne un numero massimo minore in base al proprio limite stabilito. Se non tutte le notifiche disponibili
possono essere inviate in un unico messaggio, verranno inviati più messaggi.
All’interno della funzione 4 di creazione della Subscription vengono eseguite diverse azioni:
a. Creazione della subscription
var the_subscription=new opcua.ClientSubscription(the_session, {params})
params è un object contenente le impostazioni sopra descritte relative al client
pag 2
Gestione Progetto robertomana.it
A nodejs OPCUA SERVER Interface
Come s può vedere la funzione di callback viene richiamata soltanto in corrispondenza dell’evento
“terminated” della Subscription, cioè nel momento in cui qualcuno termina esplicitamente la
Subscription. Non richiamando la funzione di callback, async.series rimane bloccata e non esegue mai la
callback finale.
setTimeout(function(){
the_subscription.terminate();
},60000);
Questo è il passo centrale di tutto il codice; quello in cui, tramite il metodo monitor, viene definita la
variabile da monitorare e, al contempo, viene avviata la monitorizzazione:
var monitoredItem = the_subscription.monitor(
{
nodeId: opcua.resolveNodeId("ns=4;s=tappe"),
attributeId: opcua.AttributeIds.Value
},
{
// Server parameters
samplingInterval: 100,
queueSize: 10,
discardOldest: true
},
opcua.read_service.TimestampsToReturn.Both
);
pag 3
Gestione Progetto robertomana.it
A nodejs OPCUA SERVER Interface
5) Chiusura della sessione di lavoro. La 5° funzione di async.series (che si avvia soltanto nel momento in cui
viene terminata la Subscription) si limita a chiudere la sessione di lavoro:
the_session.close(function(err) { });
Schermata di funzionamento :
pag 4
Gestione Progetto robertomana.it
A nodejs OPCUA SERVER Interface
pag 5