API per restituire nodi tramite ricerca

Introduzione

Le API descritte di seguito restituiscono oggetti C# corrispondenti a nodi OPC UA del progetto. A differenza delle API di tipo Get, non è necessario conoscere e/o specificare il nodo esatto in cui cercare il nodo da restituire. Infatti, i nodi vengono cercati tra tutti i nodi figli di un nodo noto, a qualsiasi livello della sua struttura.

Nota

rispetto all’esecuzione di un’API di tipo Get, in cui si specifica il percorso esatto del nodo da restituire, l’esecuzione di un’API di tipo Find è più lenta. Inoltre, in caso siano presenti più nodi figli con lo stesso nome, può restituire un nodo indesiderato.

Le API di tipo Find sono fornite dalla classe IUANode, le cui istanze sono punti di partenza per cercare i nodi da restituire.

IUANode.Find(browseName)

Restituisce un oggetto C# di tipo IUANode, corrispondente al primo nodo figlio trovato tra tutti i figli del nodo su cui si invoca il metodo e denominato come l’argomento.

IUANode Find(string browseName);

Argomenti

browseName string

BrowseName del nodo da trovare.

Restituisce

IUANode

Oggetto C# corrispondente al nodo trovato.

Esempio

Di seguito un esempio in cui l’API restituisce un oggetto C# corrispondente al primo nodo Speed figlio del nodo model:

var model = Project.Current.Get("Model");
var speed = model.Find("Speed");

IUANode.FindObject(browseName)

Restituisce un oggetto C# di tipo IUAObject, corrispondente al primo oggetto figlio trovato tra tutti i figli del nodo su cui si invoca il metodo e denominato come l’argomento.

IUAObject FindObject(string browseName);

Argomenti

browseName string

BrowseName dell’oggetto da trovare.

Restituisce

IUANode

Oggetto C# corrispondente all’oggetto trovato.

Esempio

Di seguito un esempio in cui l’API restituisce un oggetto C# corrispondente al primo oggetto Motor figlio del nodo radice del progetto:

var motor = Project.Current.FindObject("Motor");
var currentSpeed = motor.GetVariable("Speed").Value;

IUANode.FindVariable(browseName)

Restituisce un oggetto C# di tipo IUAVariable, corrispondente alla prima variabile figlia trovata tra tutti i figli del nodo su cui si invoca il metodo e denominata come l’argomento.

IUAVariable FindVariable(string browseName);

Argomenti browse

browseName string

BrowseName della variabile da trovare.

Restituisce

IUANode

Oggetto C# corrispondente alla variabile trovata.

Esempio

Di seguito un esempio in cui l’API restituisce un oggetto C# corrispondente alla prima variabile Speed figlia del nodo radice del progetto:

var currentSpeed = Project.Current.FindVariable("Speed");

IUANode.Find<T>(browseName)

Restituisce un oggetto C# corrispondente al primo nodo figlio tra tutti i figli del nodo su cui si invoca il metodo, denominato come l’argomento e del tipo specificato.

Nota

specificare un tipo esatto (<T>) migliora l’IntelliSense nell’editor di codice. Durante la scrittura di codice permette inoltre di identificare gli errori, mentre a runtime è evidente se il nodo cercato è del tipo richiesto o meno (se non lo è, l’API restituisce null).

T Find<T>(string browseName);

Argomenti

T

Classe C# di tipo IUANode, corrispondente alla classe dell’oggetto C# da restituire.

browseName string

BrowseName del nodo da trovare.

Restituisce

T

Oggetto C# corrispondente al nodo trovato.

Esempi

Di seguito un esempio in cui l’API restituisce un oggetto C# corrispondente al primo nodo Motor1 figlio del nodo che contiene il NetLogic:

var motor = Owner.Find<Motor>("Motor1");
var currentSpeed = motor.Speed;

IUANode.FindByType<T>()

Restituisce un oggetto C# corrispondente al primo nodo figlio tra tutti i figli del nodo su cui si invoca il metodo e del tipo specificato.

Nota

specificare un tipo esatto (<T>) migliora l’IntelliSense nell’editor di codice. Durante la scrittura di codice permette inoltre di identificare gli errori, mentre a runtime è evidente se il nodo cercato è del tipo richiesto o meno (se non lo è, l’API restituisce null).

T FindByType<T>();

Argomenti

T

Classe C# di tipo IUANode, corrispondente alla classe dell’oggetto C# da restituire.

Restituisce

T

Oggetto C# corrispondente al nodo trovato.

Esempio

Di seguito un esempio in cui l’API restituisce un oggetto C# corrispondente al primo nodo di tipo Motor figlio del nodo radice del progetto:

var motor = Project.Current.FindByType<Motor>();

IUANode.FindNodesByType<T>()

Restituisce una lista C# del tipo IEnumerable corrispondente alla lista di tutti i nodi figli del nodo su cui si invoca il metodo e del tipo specificato.

Nota

specificare un tipo esatto (<T>) migliora l’IntelliSense nell’editor di codice. Durante la scrittura di codice permette inoltre di identificare gli errori, mentre a runtime è evidente se il nodo cercato è del tipo richiesto o meno (se non lo è, l’API restituisce null).

IEnumerable<T> FindNodesByType<T>();

Argomenti

T

Classe C# di tipo IUANode, corrispondente alla classe dell’oggetto C# da restituire.

Restituisce

IEnumerable

Lista C# contenente i nodi del tipo richiesto.

Esempio

Di seguito un esempio in cui l’API restituisce una lista di tutti i nodi di tipo Motor nel progetto:

var motors = Project.Current.FindNodesByType<Motor>();