docs/docs/Rockwell/Optix/DotNet/tpPopulateIORack.md

4.1 KiB
Raw Blame History

title
tpPopulateIORack

⚙️ 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

Elemento Descrizione
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 lordine 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, linizializzazione 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