4.1 KiB
| 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 classeIOCardConfig. - Folder di progetto contenenti i template grafici (di tipo
RectangleType) per le schede IO da istanziare. - Un folder
CommDriversche 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 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 folderCommDrivers.
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