Passa al contenuto principale

⚙️ tpPopulateIORack

La classe tpPopulateIORack è una NetLogic che si occupa di popolare dinamicamente la UI con le schede IO (Input/Output) di un rack remoto, basandosi su una configurazione YAML e strutture dati presenti nel progetto Factory Talk Optix.

⚠️ Nota: La configurazione YAML viene deserializzata in oggetti C# di tipo IOCardConfig (definiti in un file dedicato, IOCardConfig.md).
Questa classe rappresenta la struttura dei dati usata per leggere la configurazione e differenziare schede normali e safety.


🚦 Panoramica generale

La logica si basa su:

  • Un file di configurazione YAML (io_card_config.yaml) che descrive le caratteristiche e tipologie delle schede IO, corrispondente alla classe IOCardConfig.
  • Folder di progetto contenenti i template grafici (di tipo RectangleType) per le schede IO da istanziare.
  • Un folder CommDrivers che contiene le variabili remote corrispondenti ai dispositivi IO fisici.
  • Un layout UI (RemoteIOBackplane) dove vengono aggiunte dinamicamente le schede.

🛠️ Funzionamento principale

ElementoDescrizione
Populate()Metodo pubblico esportato per avviare il popolamento tramite task asincrono a lunga durata.
LoadConfiguration()Legge e deserializza il file YAML con la configurazione delle schede IO in oggetti IOCardConfig.
InitializeNodeTypes()Recupera i template grafici (RectangleType) per ogni tipo di scheda configurata.
PopulateIOCards()Crea e aggiunge i nodi scheda nel layout UI, sincronizzando l’ordine con un meccanismo di semafori.

🔍 In Depth: Funzioni di tpPopulateIORack


Populate()

Descrizione:
Avvia il processo di popolamento della UI.
Esegue in background la lettura della configurazione, l’inizializzazione dei template e la creazione dinamica delle schede IO.


LoadConfiguration()

Descrizione:
Legge il file YAML di configurazione (io_card_config.yaml) e lo deserializza in oggetti IOCardConfig per uso interno.


InitializeNodeTypes()

Descrizione:
Carica i template grafici (RectangleType) associati a ciascun tipo di scheda definito nella configurazione YAML.


PopulateIOCards()

Descrizione:
Per ogni slot del rack (da 1 a 64), verifica la presenza di dispositivi remoti e crea le schede IO normali o di sicurezza corrispondenti, aggiungendole al layout UI.


TryCreateAndAddNormalCard()

Descrizione:
Tenta di creare e aggiungere una scheda IO normale basata sulla configurazione e i dati trovati nel folder CommDrivers.


TryCreateAndAddSafetyCard()

Descrizione:
Tenta di creare e aggiungere una scheda IO di sicurezza, gestendo input e output associati.


MakeCardAndAddToLayout()

Descrizione:
Metodo interno che istanzia la scheda IO, imposta le proprietà comuni e la inserisce ordinatamente nel layout UI, rispettando la sincronizzazione con i semafori.


SetCardCommonProperties()

Descrizione:
Imposta variabili comuni della scheda (come indice, nome, colori LED) per assicurare la corretta rappresentazione grafica e funzionale.


🗂️ Esempio di configurazione YAML (io_card_config.yaml)

normalIoCards:
AB:1734_DI8:C:0:
type: IB8
nodeType: IOCard_8B
iODirection: I
colors:
card: 0xff1b83df
led_on: 0xff00fa7e
led_off: 0xff0f4d29

AB:1734_DOB8:C:0:
type: OB8
nodeType: IOCard_8B
iODirection: O
colors:
card: 0xff40aa84
led_on: 0xffea2e2e
led_off: 0xff500f0f

safetyIoCards:
AB:1734_IB8S_Safety2:I:0:
outputType: AB:1734_IB8S:O:0
type: IB8S
nodeType: IOCard_8BS
iODirection: I
colors:
card: 0xffe4564b
led_on: 0xff00fa7e
led_off: 0xff0f4d29