NetLogic

Introduzione

Q Studio permette di sviluppare logiche di runtime e design time personalizzate scritte in linguaggio C#. A runtime, tramite queste logiche è possibile eseguire operazioni nel modello informativo (ad esempio modificare il valore di una variabile quando un’altra variabile cambia stato) o fuori dal modello informativo (ad esempio inviare una email quando una specifica variabile cambia stato).

Per sviluppare queste logiche si usano particolari oggetti chiamati NetLogic.

Cos’è un NetLogic

Un NetLogic è un oggetto che contiene codice C# da eseguire a runtime o a design time. Sono disponibili i seguenti template:

  • NetLogic di runtime, per realizzare logiche di runtime legate al ciclo di vita del nodo che lo contiene (vedere Logiche legate al ciclo di vita di un nodo) o per definire nuovi metodi OPC UA (vedere Definire un metodo OPC UA in C#).

    Nota

    i metodi OPC UA, a differenza dei metodi C#, sono esposti dal NetLogic e sono referenziabili in qualsiasi punto del progetto Q Studio a design time. Sono poi invocabili a runtime secondo le logiche del progetto o da parte di un client OPC UA.

  • NetLogic di design time, per realizzare script da eseguire a design time per automatizzare specifiche operazioni (ad esempio leggere un file CSV contenente descrizioni di allarmi da scrivere automaticamente nel progetto).

NetLogic e classi C#

Un NetLogic contiene nel suo codice una classe C# con lo stesso nome, automaticamente creata da Q Studio a design time. Quando si rinomina un oggetto NetLogic, Q Studio rinomina automaticamente anche la classe C# corrispondente contenuta.

Avvertimento

Per modificare il nome di questa classe, rinominare il NetLogic in Q Studio. Non modificare il nome della classe nel codice, questo ne compromette il funzionamento.

Ad esempio, un NetLogic chiamato PanelLogic contiene la seguente dichiarazione che definisce la classe PanelLogic:

public class PanelLogic : BaseNetLogic

Nota

la classe in un NetLogic deriva sempre dalla classe BaseNetLogic di Q Platform, ovvero la classe base che fornisce la maggior parte dei metodi ai NetLogic, compresi i metodi Start e Stop (vedere Struttura di un NetLogic di runtime).

Tutte le classi C# sono raggruppate in un progetto .NET creato e aggiornato automaticamente da Q Studio (vedere Progetti su file system).

Logiche legate al ciclo di vita di un nodo

Il ciclo di vita di un NetLogic di runtime, ovvero la sua esistenza a runtime, equivale al ciclo di vita del nodo che lo contiene. Esiste quindi dal momento in cui il nodo padre viene creato (ad esempio un oggetto Pannello) al momento in cui lo stesso nodo viene eliminato. Questi due momenti sono rappresentati nel codice C# di un NetLogic dai metodi Start() e Stop(). In questi metodi è quindi possibile definire le logiche da eseguire a runtime quando il nodo padre viene creato ed eliminato.

Dove creare un NetLogic

Si possono creare NetLogic in un qualsiasi nodo del modello informativo. In generale esistono due posizioni possibili con effetti diversi a runtime:

  • Dentro un tipo (ad esempio dentro a un tipo MotorType). In questo caso, a runtime il NetLogic esiste in ogni istanza del tipo finché la stessa istanza non viene eliminata.

  • Fuori da un tipo (ad esempio dentro una cartella, dentro altre istanze, dentro al nodo radice del progetto). In questo caso, a runtime il NetLogic viene creato all’avvio del progetto ed eliminato alla chiusura del progetto.