Importare l’interfaccia utente da un altro progetto e monitorare alcune variabili¶
Introduzione
Questo tutorial mostra come importare, tramite comunicazione OPC UA, l’interfaccia utente da un altro progetto e visualizzare il valore di alcune variabili in esso contenute.
Il progetto server contiene i tipi di pannelli necessari per istanziare l’interfaccia utente sul client e contiene delle variabili che si vogliono monitorare dal client. Il progetto client è privo di interfaccia utente e si connette a runtime al server per importare l’interfaccia utente e per importare e sincronizzare le variabili remote.
Scarica i progetti di esempio da qui
.
Passi
Creare i progetti server e client
Creare un nuovo progetto standard denominato ServerProject. Il progetto contiene già un oggetto OPC UA server, che, in mancanza di impostazioni specifiche, espone tutti i nodi del progetto.
Creare un altro nuovo progetto standard denominato ClientProject
Suggerimento
prima di procedere, rimuovere l’oggetto Server OPC UA nella cartella di progetto OPC-UA, in quanto non necessario per gli scopi di questo tutorial.
Server: definire l’interfaccia utente e le variabili
Nella cartella UI creare una cartella RemotePanels. Al suo interno creare tre tipi di pannello denominati RemoteMainPanel, Panel1 e Panel2.
Per realizzare la navigazione tra Panel1 e Panel2 inserire in entrambi un oggetto Pulsante e in entrambi associare all’evento Evento MouseClick il metodo {MainPanelLoader}/MainPanelLoader/ChangePanel. Nell’argomento di input NewPanel del metodo selezionare rispettivamente Panel2 e Panel1.
(Opzionale) Per riconoscere i due pannelli a runtime inserire in entrambi un etichetta con un testo che li identifica (es. «Panel1» e «Panel2»).
In RemoteMainPanel creare un oggetto Pannello dinamico denominato MainPanelLoader. Nella sua proprietà Pannello selezionare il tipo Panel1, per mostrarlo quando l’interfaccia utente viene inizializzata a runtime.
Nota
RemoteMainPanel è quindi un widget con cui istanziare l’intera struttura di pannelli e i relativi meccanismi di navigazione.
In MainWindow creare un oggetto Pannello dinamico. Nella sua proprietà Pannello selezionare RemoteMainPanel.
Nella cartella Model creare due variabili di tipo intero Speed e Acceleration.
In Panel1 inserire un oggetto Spin box. Nella sua proprietà Valore impostare un collegamento dinamico con la variabile Speed.
In Panel2 inserire un oggetto Indicatore lineare. Nella sua proprietà Valore impostare un collegamento dinamico con la variabile Acceleration.
Client: configurare l’importazione
Nella cartella OPC-UA creare un oggetto Client OPC UA (Nuovo > Client OPC UA): viene creato l’oggetto ClientOpcUa1.
Nella proprietà Endpoint URL server di ClientOpcUa1 inserire l’endpoint dell’oggetto Server OPC UA presente nel progetto server.
Nelle proprietà di ClientOpcUa1 aggiungere due configurazioni di runtime (vedere Configurare l’importazione di nodi a runtime).
Impostare le proprietà della prima configurazione di runtime, per importare l’interfaccia utente:
Nodo destinazione locale: ClientProject/UI
Nodo sorgente remoto: /Objects/ServerProject/UI/RemotePanels, ovvero il percorso della cartella RemotePanels del server a runtime
Modalità sincronizzazione contenuto: Solo importazione
Includi nodo sorgente remoto: Vero
Impostare le proprietà della seconda configurazione di runtime, per importare e sincronizzare le variabili:
Nodo destinazione locale: ClientProject/Model
Nodo sorgente remoto: /Objects/ServerProject/Model, ovvero il percorso della cartella Model del server a runtime
Modalità sincronizzazione contenuto: Importa e sincronizza i valori
Includi nodo sorgente remoto: Falso
Client: predisporre l’interfaccia utente
In MainWindow creare un oggetto Pannello dinamico denominato ClientPanelLoader. In questo pannello a runtime vengono visualizzati i pannelli importati dal server.
In MainWindow creare un NetLogic con il seguente codice. Il NetLogic invoca il metodo ChangePanel del pannello dinamico per visualizzare il pannello RemoteMainPanel appena il client si connette al server.
public override void Start() { // get imported panel and set it as a starting panel for the client's panel ClientPanelLoader // references to other remote panels are mantained when change panel is invoked var clientPanelLoader = (PanelLoader) LogicObject.Owner.Get("ClientPanelLoader"); var serverPanel = Project.Current.Get("UI/RemotePanels/RemoteMainPanel"); if (serverPanel == null) { Log.Error("Remote server main panel not found"); return; } clientPanelLoader.ChangePanel(serverPanel.NodeId, NodeId.Empty); }
Verificare il funzionamento
Avviare nell’ordine il progetto server e il progetto client per verificare quanto segue:
Il client visualizza i pannelli del server.
Modificando i valori delle variabili sul server, gli stessi valori sono riportati sull’interfaccia utente del client.
Vedi anche
Concetti correlati
Sicurezza delle comunicazioni OPC UA
Procedure correlate
Usare un oggetto Client OPC UA
Usare certificati e chiavi OPC UA
Riferimenti