⚙️ tpdDiangosticGenerator

La classe tpdDiangosticGenerator è il cuore pulsante del sistema diagnostico. Si occupa di generare automaticamente i modelli diagnostici e i pulsanti di navigazione per diverse componenti hardware e di sicurezza del progetto.

Con questa classe, la configurazione e la gestione della diagnostica diventano semplici, rapide e centralizzate.


🚦 Panoramica generale

Il generatore lavora su due fronti principali:

  • Modelli diagnostici: rappresentazioni strutturate di assi, alimentatori, sicurezza, ecc.
  • Pulsanti di navigazione: bottoni che permettono di accedere rapidamente alle schermate diagnostiche relative ai modelli.

🛠️ Metodi principali

Metodo Descrizione Note
GenerateALL() Genera tutti i modelli e i pulsanti, invocando i metodi specifici sottostanti. Metodo “one-shot”
GenerateAllModels() Invoca la generazione di tutti i modelli specifici (assi, PSU, sicurezza, ecc.)
GenerateAllButtons() Invoca la generazione di tutti i pulsanti specifici per ogni modello diagnostico
GenerateAxisModel() Genera i modelli degli assi sulla base dei tag stStandardAxis. Usa AxisType
GenerateAxisButtons() Crea i pulsanti di navigazione collegati agli assi, puntando alla pagina diagnostica asse _810_DiagAxis
GeneratePSUModel() Genera i modelli per le unità di alimentazione (PSUType).
GeneratePSUButtons() Pulsanti per le PSU, con link alla pagina _814_DiagPSU.
GenerateDCSModel() Genera modelli per i componenti di sicurezza SafetyDCSType basati su tag DCI_STOP.
GenerateCROUTModel() Modelli sicurezza SafetyCROUTType basati su tag CONFIGURABLE_ROUT.
GenerateFPMSModel() Modelli sicurezza SafetyFPMSType basati su tag FIVE_POS_MODE_SELECTOR.
GenerateSafetyButtons() Pulsanti per la sicurezza, puntano a _830_DiagSafety.

🧰 Come funziona “sotto il cofano”

Il fulcro del generatore è il metodo privato GenerateModels, che:

  1. Cerca nelle cartelle di comunicazione i tag corrispondenti al tipo specificato (es. stStandardAxis).
  2. Per ogni tag, crea (o trova) un modello corrispondente nella cartella modelli.
  3. Imposta un nome leggibile e associa un puntatore al tag originale.

Analogamente, GenerateButtons crea per ogni modello un pulsante di navigazione nella pagina diagnostica dedicata, utilizzando un template di pulsante personalizzato.


💡 Funzioni di supporto utili

  • ExtractReadableName(string variableName): estrae un nome utente-friendly da un nome di variabile tecnica, inserendo spazi e capitalizzando correttamente.
    Es.: "Axis_X1""X 1"

🔍 In Depth: Funzioni di tpdDiangosticGenerator


GenerateALL()

Descrizione:
Metodo principale “one-shot” che rigenera tutti i modelli diagnostici e tutti i pulsanti di navigazione in un solo colpo.
È pensato per un uso “a caldo” dopo modifiche estese ai tag o alla struttura del progetto.

Dettagli tecnici:
Invoca internamente GenerateAllModels() e GenerateAllButtons(), orchestrando così la generazione completa della diagnostica.

Esempio d’uso:

diagnosticGenerator.GenerateALL();

Nota da interfaccia Optix:
È possibile eseguire questo metodo cliccando con il tasto destro sull’oggetto design time NetLogic o sul suo genitore e selezionando Execute GenerateALL.


GenerateAllModels()

Descrizione:
Chiama i generatori specifici per ogni categoria di modello diagnostico (assi, PSU, sicurezza), in modo ordinato e modulare.

Modelli generati:

  • Assi (Axis)
  • Alimentatori (PSU)
  • Componenti di sicurezza (DCS, CROUT, FPMS)

GenerateAllButtons()

Descrizione:
Genera i pulsanti di navigazione associati ai modelli diagnostici appena creati, suddivisi per categoria (assi, PSU, sicurezza).


GenerateAxisModel()

Descrizione:
Scansiona i tag di tipo stStandardAxis presenti nei driver di comunicazione e genera i modelli AxisType corrispondenti.

Dettagli:
Imposta la proprietà AxisPointer del modello con il riferimento al tag originale.


GenerateAxisButtons()

Descrizione:
Per ogni modello asse generato, crea un pulsante di navigazione che punta alla schermata diagnostica asse _810_DiagAxis.


GeneratePSUModel()

Descrizione:
Genera i modelli PSUType per tutti i tag di tipo stPowerSupply trovati, collegandoli opportunamente.


GeneratePSUButtons()

Descrizione:
Crea i pulsanti di navigazione per ogni modello PSU, collegati alla pagina _814_DiagPSU.


GenerateDCSModel()

Descrizione:
Genera modelli diagnostici per i componenti di sicurezza SafetyDCSType basandosi sui tag DCI_STOP.


GenerateCROUTModel()

Descrizione:
Genera modelli SafetyCROUTType per tag CONFIGURABLE_ROUT correlati ai sistemi di sicurezza configurabili.


GenerateFPMSModel()

Descrizione:
Genera modelli SafetyFPMSType basati sui tag FIVE_POS_MODE_SELECTOR, tipici di selettori modalità a 5 posizioni.


GenerateSafetyButtons()

Descrizione:
Crea i pulsanti di navigazione per tutti i modelli di sicurezza, puntando alla schermata _830_DiagSafety.


ExtractReadableName(string variableName)

Descrizione:
Estrae un nome leggibile e “user-friendly” da un nome tecnico di variabile.
Ad esempio: "Axis_X1" diventa "X 1".

Come funziona:

  • Prende l’ultima parte dopo l’ultimo underscore
  • Inserisce spazi prima di lettere maiuscole o cifre
  • Formattta la stringa con la prima lettera maiuscola, il resto minuscolo

GenerateModels(string modelFolderPath, string tagTypeName, Type modelType, string pointerVariableName)

Descrizione:
Metodo generico interno per creare i modelli diagnostici.

  • Cerca nelle cartelle di comunicazione i tag con il tipo specificato.
  • Per ciascun tag, crea o recupera un modello corrispondente nella cartella modelli.
  • Imposta il nome leggibile e il puntatore al tag originale.

GenerateButtons(string modelFolderPath, string diagnosticPagePath)

Descrizione:
Per ogni modello nella cartella indicata, crea (o riusa) un pulsante di navigazione nella pagina diagnostica specificata.
Usa un template di pulsante predefinito per mantenere l’uniformità grafica e funzionale.


CreateModel(TagStructure tag, Type modelType, Folder modelsFolder)

Descrizione:
Crea un nuovo oggetto modello con il nome del tag e del tipo specificato, e lo inserisce nella cartella dei modelli.


PopulateModel(IUAObject model, TagStructure tag, string pointerVariableName)

Descrizione:
Riempie il modello con un nome leggibile e imposta la variabile puntatore con il NodeId del tag originale.


CreateButton(string browseName, ScreenType diagnosticScreen)

Descrizione:
Crea un nuovo pulsante di navigazione utilizzando il template tpButtNavigationDiagnostic, lo aggiunge al layout della schermata diagnostica e lo restituisce per ulteriori configurazioni.