Variabili¶
Cos’è una variabile
Una variabile è un elemento che nel progetto rappresenta un dato, una caratteristica di un oggetto, e ne specifica il valore. Per esempio, una variabile può rappresentare caratteristiche funzionali di un oggetto fisico (una variabile Speed), caratteristiche di stile degli oggetti dell’interfaccia grafica (per esempio il colore di un testo) oppure caratteristiche di altri specifici oggetti (per esempio le proprietà di configurazione di una ricetta).
Una variabile ha le seguenti caratteristiche:
può contenere altre variabili (in questo caso si definisce variabile strutturata)
contiene solo un tipo di dato (data-type)
non può contenere oggetti
ha degli attributi che la descrivono
Esempio
Per rappresentare la velocità di un motore (nell’esempio l’oggetto Motor) si può usare una variabile numerica (Speed, di tipo Int32). A scopo di esempio il suo valore è 100. Di seguito come viene visualizzata in Q Studio:

Proprietà
Definiamo proprietà le variabili inscindibili di un nodo.
Ad esempio, Testo è una proprietà dell’oggetto nativo Etichetta, poiché non può esistere un oggetto Etichetta senza la proprietà Testo.
Attributi
Una variabile ha sempre i seguenti attributi:
Attributo |
Descrizione |
---|---|
BrowseName |
Nome della variabile nel progetto |
DataType |
Tipo di dato che la variabile può contenere |
Description |
Descrizione della variabile |
DisplayName |
Nome della variabile, traducibile e usato solitamente per essere visualizzato in interfaccia a runtime |
NodeId |
Identificativo unico, assegnato automaticamente da UNIQO |
Value |
Valore del dato |
Tipi di variabili e istanze
Un tipo di variabile (VariableType) è una variabile «modello» da cui derivare variabili simili, dette istanze. Le istanze possono comunque contenere altre variabili specifiche.
Creare istanze è vantaggioso in termini di rapidità e coerenza, ogni modifica apportata al tipo viene infatti automaticamente apportata alle istanze.
Importante
se si elimina un tipo di variabile, anche le istanze vengono eliminate.
Tipi di variabili nativi e custom
Sono definiti tipi nativi quelli predefiniti di UNIQO. Questi sono sempre disponibili indipendentemente dal progetto.
Sono definiti tipi custom quelli creati all’interno di un progetto, dagli utenti o dalle logiche applicative realizzate. Questi tipi sono disponibili solo nel progetto in cui sono stati creati.
Tipi di variabili nativi
Tipo |
Descrizione |
---|---|
Variabile |
Variabile base, che contiene un dato. |
Variabile analogica |
Variabile strutturata, usata per rappresentare grandezze fisiche (vedere Proprietà di una variabile analogica). |
Puntatore a nodo |
Variabile il cui valore è un riferimento a un nodo del progetto (vedere Proprietà di una variabile Puntatore a nodo). |
Impostazione del valore delle variabili
Il valore di una variabile può essere impostato a design time in diversi modi:
con un valore fisso impostato manualmente (di solito per impostare proprietà grafiche o proprietà di oggetti non fisici quali ricette, logger ecc.)
ereditato dal tipo di variabile o dal tipo di oggetto (di solito per impostare proprietà grafiche o proprietà di oggetti non fisici)
sulla base del valore di un’altra variabile (vedere Collegamenti dinamici).
Il valore delle variabili di campo, per esempio una temperatura, dipende invece dai valori letti dal PLC (vedere Variabili di campo).
Variabili di campo
Per usare e visualizzare valori provenienti dal campo/da un PLC, UNIQO importa le tag/variabili nel progetto e le mantiene sincronizzate.
Queste variabili sono speciali variabili di tipo tag. Di seguito un esempio in Q Studio:

Per dettagli sull’uso di queste variabili vedere Importare tag dai PLC.
Unità di misura e limiti per variabili numeriche
Per le variabili di tipo numerico, tramite la proprietà EngineeringUnits è possibile impostare l’unità di misura con cui esprimere il valore. Tramite la proprietà EURange invece è possibile impostare i valori minimo e massimo della variabile.
Queste proprietà sono sempre presenti nelle variabili analogiche, mentre è possibile aggiungerle manualmente nelle variabili base (vedere Aggiungere l’unità di misura di una variabile e Aggiungere i limiti minimo e massimo di una variabile).
Proprietà di una variabile analogica
Proprietà |
Proprietà |
Tipo di dato |
Descrizione |
---|---|---|---|
EngineeringUnits |
Description |
Localized text |
Descrizione estesa dell’unità di misura |
DisplayName |
Localized text |
Abbreviazione dell’unità di misura |
|
UnitId |
Int32 |
Identificativo dell’unità di misura (vedere Unità di misura supportate dalle variabili) |
|
EURange |
Limite inferiore |
Double |
Limite inferiore dell’intervallo di valori che può assumere la variabile |
Limite superiore |
Double |
Limite superiore dell’intervallo di valori che può assumere la variabile |
|
Vincola |
Boolean |
True: se l’utente inserisce un valore fuori intervallo, riporta il valore al valore precedente. False: se l’utente inserisce un valore fuori intervallo, il valore è comunque accettato. |
Nota
in Q Studio, la variabile EngineeringUnits e le sue proprietà sono visualizzabili solamente nella finestra dei collegamenti dinamici (vedere Finestra dei collegamenti dinamici).
Proprietà di una variabile Puntatore a nodo
Una variabile di tipo Puntatore a nodo è una speciale variabile il cui valore è un riferimento a un nodo del progetto (vedere Nodi e modello informativo). Il nodo referenziato dev’essere del tipo e della classe definiti dalle seguenti proprietà:
Proprietà |
Tipo di dato |
Descrizione |
---|---|---|
Kind |
NodeId |
Tipo di oggetto o tipo di variabile da cui deriva il nodo |
NodeClass |
NodePointerNodeClass |
Classe del nodo. Istanza = il nodo può essere solo un’istanza; Tipo = il nodo può essere solo un tipo; Qualsiasi = il nodo può essere un’istanza o un tipo. |
Esempio
L’oggetto Data logger ha tra le sue proprietà un puntatore a nodo Store, tramite cui è possibile selezionare un database, tra tutti i database nel progetto, in cui memorizzare i dati registrati.

Per fare questo, il puntatore a nodo Store è impostato come segue:
Kind è impostato sul tipo di oggetto Store
NodeClass è impostato su Istanza