Nodi di progetto in C#

Introduzione

Nel codice di un NetLogic, i nodi del progetto (vedere Modello informativo) sono rappresentati da speciali classi C# che contengono ed espongono delle proprietà.

Classe IUANode

Espone le seguenti proprietà base di qualsiasi nodo del progetto:

  • BrowseName: nome del nodo nel progetto Q Studio, non localizzabile

  • DisplayName: nome del nodo, solitamente visualizzabile in interfaccia utente e localizzabile in Q Studio

  • NodeId: identificativo unico del nodo, assegnato automaticamente da Q Studio

Classe IUAObject

Espone le proprietà di qualsiasi istanza di oggetto di progetto (es.: oggetti grafici, allarmi, driver, ecc…).

È una sottoclasse di IUANode e ne espone quindi tutte le proprietà. Espone inoltre la proprietà ObjectType, ovvero un riferimento al tipo di oggetto (classe IUAObjectType) da cui deriva l’istanza.

Classe IUAObjectType

Espone le proprietà di qualsiasi tipo di oggetto di progetto (es.: oggetti grafici, allarmi, driver, ecc…).

È una sottoclasse di IUANode e ne espone quindi tutte le proprietà. Espone inoltre la proprietà SuperType, ovvero l’oggetto C# che rappresenta il tipo di oggetto da cui deriva lo stesso IUAObjectType.

Classe IUAVariable

Espone le proprietà di qualsiasi istanza di variabile di progetto (variabile base, variabile analogica, tag di PLC, puntatore a nodo).

È una sottoclasse di IUANode e ne espone quindi tutte le proprietà. Espone inoltre le seguenti proprietà:

  • ArrayDimensions: quantità di celle dell’array

  • DataType: tipo di dato che la variabile può contenere (es.: OpcUa.DataTypes.Boolean, OpcUa.DataTypes.Int16).

  • Value : valore della variabile (proprietà di tipo UAValue)

  • VariableType: oggetto C# che rappresenta il tipo di variabile da cui deriva l’istanza.

Classe IUAVariableType

Espone le proprietà di qualsiasi tipo di variabile di progetto.

È una sottoclasse di IUANode e ne espone quindi tutte le proprietà. Espone inoltre le seguenti proprietà:

  • ArrayDimensions: quantità di celle dell’array

  • DataType: tipo di dato che la variabile può contenere (es.: OpcUa.DataTypes.Boolean, OpcUa.DataTypes.Int16).

  • SuperType: oggetto C# che rappresenta il tipo di variabile da cui deriva la stessa IUVariableType.

Classe UAValue

Espone un valore. Il valore può poi essere convertito da e verso diversi tipi di dati C#.

Classi per tipi custom e nativi

Per qualsiasi tipo nativo o custom di progetto è disponibile una classe C# corrispondente. Questa classe è sempre una sottoclasse di IUAObject o IUAVariable, a cui vengono aggiunte eventuali proprietà specificate nel tipo. Ad esempio, se in Q Studio si crea un tipo di oggetto Motor, con due proprietà Speed e Acceleration, viene automaticamente creata la classe C# Motor con le proprietà Speed, SpeedVariable, Acceleration, AccelerationVariable (per le classe delle proprietà vedere Proprietà degli oggetti).

Le classi C# dei tipi nativi sono definite nei moduli Q Platform. Le classi C# corrispondenti ai tipi custom vengono invece automaticamente create da Q Studio quando si salva il progetto.

Nota

il tipo di un oggetto o variabile selezionato/a da cui deriva un’istanza è visualizzabile in Q Studio nel pannello Proprietà con mouseover su Tipo o sul suo valore.

Proprietà degli oggetti

Per ogni proprietà di un oggetto OPC UA sono disponibili due varianti di proprietà C#:

  • una proprietà il cui nome è uguale al BrowseName della proprietà (ad esempio, la classe Text per la proprietà Testo di un’oggetto Etichetta). Questa rappresenta il valore della proprietà (ad esempio "Current speed is: "), il cui tipo di dato è quello della proprietà C# stessa (ad esempio il tipo di dato string per Text).

  • una proprietà di tipo IUAVariable il cui nome è composto dal BrowseName della proprietà e dal suffisso «Variable» (ad esempio, la proprietà TextVariable corrispondente alla proprietà Text di un oggetto Etichetta). Questa rappresenta il nodo OPC UA della proprietà. È utile, per esempio, per impostare collegamenti dinamici (vedere API per i collegamenti dinamici) e per altre istruzioni che richiedono l’accesso alla classe IUAVariable della proprietà.