Nodi serviti
L'elenco di ciò che il server OPC UA incorporato serve, e di tutto ciò che serve: tag, variabili di Logic, allarmi e comandi dei dispositivi, ogni riga di sola lettura finché non si consente la scrittura, dove un client trova ciascuno e che cosa serve a una stazione aggiornata.
Nodi serviti è la quarta scheda del pannello del server OPC UA nel Connector. Il server serve questo elenco e nient'altro: un client che si collega trova i tag, le variabili di Logic, gli allarmi e i comandi dei dispositivi elencati qui, e nessun altro. La scheda lo dice sotto il suo titolo: « Il server serve questo elenco e nient'altro: ogni riga è un tag, una variabile di Logic, un allarme o un comando del dispositivo. Una riga resta di sola lettura finché non si consente la scrittura. La scrittura di un client segue allora lo stesso percorso di ogni altra ed è registrata nel diario tecnico con la sessione del client. » Visualizzare Connector legge la scheda; Configurare Connector la cambia.
Un elenco vuoto
L'elenco parte vuoto, su una stazione nuova e su una stazione aggiornata da una versione che serviva ogni dispositivo per intero. Finché è vuoto, una nota di attenzione sulla scheda dice: « L'elenco è vuoto, quindi il server non serve nulla della stazione: un client OPC UA non trova tag, variabili, allarmi né comandi finché non si aggiungono righe. » Il server resta in ascolto e accetta ancora le sessioni che l'Accesso dei client consente; esse percorrono uno spazio degli indirizzi in cui non c'è nulla della stazione. Un agente legge la stessa cosa in server_status, il cui servesNothing è vero finché l'elenco è vuoto.
La tabella
| Colonna | Che cosa mostra |
|---|---|
| Sorgente | Ciò che la riga serve, come lo nomina il selettore, oppure « Ancora nessuna sorgente » finché la sorgente non è scelta. |
| Accesso | Sola lettura o Lettura e scrittura, e Richiamabile per un comando del dispositivo. |
| Nodo | L'indirizzo con cui si configura un client, nella forma nsu=<namespace>;s=<identifier>; vuoto finché la riga non serve nulla. |
Le righe sono elencate per tipo (tag, variabili, allarmi, comandi), poi per nome. Senza righe, la tabella dice « Nessun nodo è ancora servito. Aggiungerne uno con Nuova riga. » Un clic su una riga la seleziona e ne apre i campi sotto la tabella; quale riga è selezionata appartiene alla finestra in cui ci si trova.
| Comando | Che cosa fa | In grigio quando (situazione) | Non mostrato quando (ruolo) |
|---|---|---|---|
| Nuova riga | Aggiunge una riga di sola lettura che non serve ancora nulla e la seleziona, così che se ne scelga poi la sorgente. Il registro delle azioni dice « Riga aggiunta all'elenco del server OPC UA. Sceglierne la sorgente. » | Una prova tiene la stazione, oppure il runtime è fermo. | Senza Configurare Connector. |
| Elimina riga (inchiostro di pericolo) | Elimina la riga che la tabella ha selezionato, subito e senza domande; il suo suggerimento nomina la sorgente che la riga serve, e il registro delle azioni lo conferma. La sorgente non viene toccata: un client non trova più il suo nodo. | Nessuna riga è selezionata (« Selezionare una riga dell'elenco per eliminarla. »), una prova tiene la stazione, oppure il runtime è fermo. | Senza Configurare Connector. |
I campi di una riga
Ogni campo viene salvato non appena cambia, e il server serve la nuova riga un istante dopo, senza far cadere alcuna sessione: legge il suo elenco dieci volte al secondo.
| Campo | Che cosa fa | Valori e predefinito |
|---|---|---|
| Sorgente | Ciò che la riga serve. L'elenco si apre con « (nessuno) », poi ogni tag abilitato di un dispositivo abilitato, nominato dal suo driver, dal suo dispositivo e da sé stesso (« Tag di Connector · Simulated · Oven · Temperature »), poi ogni variabile di Logic che contiene un valore, con le sue cartelle e il suo nome (« Variabile · Oven / Setpoint »), poi ogni allarme, nominato allo stesso modo (« Allarme · Oven / High temperature »), e infine ogni comando di un dispositivo abilitato: i comandi dichiarati nella pagina del dispositivo e quelli che un protocollo fissa, come quelli di una colonnina di ricarica (« Comando · OCPP · Charger · Reset »). Una sorgente compare una sola volta nell'elenco. La riga tiene la sua sorgente per identità, quindi una ridenominazione lascia la riga sulla stessa sorgente, che il server serve allora con il nuovo nome. Una sorgente che l'elenco non offre più resta selezionata e nominata, un tag o un comando disabilitato con ciò che lo esclude, e solo una sorgente che non esiste più appare come mancante, con la sua identità. La scheda Usato da di un tag elenca le righe che lo servono. | « (nessuno) » per una nuova riga. |
| Accesso | Se un client può scrivere la riga. Lettura e scrittura resta in elenco e in grigio dove la sorgente non accetta scritture, con il suggerimento « Questa sorgente non accetta scritture: le accettano solo un tag con accesso in scrittura o una variabile di memoria. » Scegliere un allarme riporta la riga in sola lettura. Per un comando il campo mostra Richiamabile come valore fisso, senza selettore, perché un comando si richiama, non si legge né si scrive. | Sola lettura o Lettura e scrittura; Richiamabile, fisso, per un comando. Sola lettura per una nuova riga. |
Sotto i campi, una riga dice che cosa la riga dell'elenco fa per un client:
| La scheda dice | Quando |
|---|---|
| « Questa riga non serve ancora nulla: scegliere la sua sorgente. » | Nessuna sorgente è scelta. |
| « La sorgente di questa riga non esiste più, quindi il server non serve nulla per essa. » | Il tag, la variabile, l'allarme o il comando è stato eliminato. |
| « Un client può leggere questo nodo ma non scriverlo. » | Un tag o una variabile, di sola lettura. |
| « Un client può leggere e scrivere questo nodo: ogni scrittura è registrata nel diario tecnico con la sessione del client. » | Un tag o una variabile contrassegnato in lettura e scrittura. |
| « Un client legge i membri Active, Acked, State, Priority e Message dell'allarme (attivo, tacitato, stato, priorità e messaggio) e non li scrive mai. » | Un allarme. |
| « Un client richiama questo comando come metodo del suo dispositivo finché è nell'elenco. » | Un comando del dispositivo. |
Sotto quella riga, Un client lo trova in è seguito dal nodo.
Che cosa rifiuta una riga
Una modifica che le regole dell'elenco rifiutano non viene salvata: il motivo compare in rosso sopra i campi della riga, la modifica resta sullo schermo perché la si corregga, e la riga continua a servire ciò che serviva.
| La scheda dice | Quando |
|---|---|
| « Questa sorgente è già nell'elenco: un client la trova nel nodo servito da quella riga. » | La sorgente compare già in un'altra riga. |
| « La sorgente non si può scrivere: scegliere un tag con accesso in scrittura o una variabile di memoria, oppure lasciare la riga di sola lettura. » | Lettura e scrittura su un tag di sola lettura, su un tag di un driver che non scrive mai, su una variabile di espressione, su un allarme, su un comando o su una sorgente che non esiste più. |
| « Una riga che accetta scritture ha bisogno del tag o della variabile a cui vanno. » | Lettura e scrittura su una riga senza sorgente, cosa che solo un agente può chiedere. |
| « Questa riga dell'elenco non esiste più. Ricaricare e riprovare. » | La riga è stata eliminata altrove, in un'altra finestra o da un agente, mentre la si modificava. |
Finché una prova tiene la stazione o il runtime è fermo, una modifica viene rifiutata come ogni modifica della pagina, con il motivo nel registro delle azioni, e non si salva nulla.
Dove un client trova ogni sorgente
| Sorgente | Dove si trova | Che cosa legge un client |
|---|---|---|
| Tag | Dove è sempre stato: nello spazio dei nomi del suo dispositivo, http://opcfoundation.org/UA/<driver>.<device>/, con il nome proprio del tag. Un client configurato prima che l'elenco esistesse lo trova allo stesso indirizzo. Un client che sfoglia lo spazio degli indirizzi lo trova nella cartella Devices sotto Objects, dentro l'oggetto che porta il nome del suo dispositivo. |
Il valore che il dispositivo ha risposto, con la sua qualità e il suo timestamp, come lo legge il Connector. |
| Variabile di Logic | Nella cartella Logic sotto Objects, dentro le cartelle proprie di Logic, nello spazio dei nomi del server http://opcfoundation.org/UA/EdgeTranslator/ con il suo indirizzo di Logic (Variables.Oven.Setpoint). |
Il suo valore, tipizzato dalla conversione unica della stazione: Boolean, Int64 per un Intero, Double per un Decimale, String per un Testo e DateTime per una Data e ora. Una variabile senza un valore valido si legge come BadDataUnavailable. |
| Allarme | Nella cartella Alarms sotto Objects, dentro le cartelle proprie di Logic, come un oggetto con il suo indirizzo di Logic (Alarms.Oven.HighTemperature). |
Cinque membri di sola lettura: Active e Acked (Boolean), State (Int32: 0 normale, 1 attivo non tacitato, 2 attivo tacitato, 3 rientrato non tacitato), Priority e Message (String). Finché l'allarme mantiene il suo stato durante una qualità cattiva, Active, Acked e State si leggono come UncertainLastUsableValue. |
| Comando | Un metodo del suo dispositivo, accanto ai tag del dispositivo. | Richiamato con i valori che il comando dichiara, risponde con ciò che l'apparecchiatura ha risposto. |
Ogni dispositivo mantiene il suo spazio dei nomi qualunque cosa l'elenco serva di esso, quindi l'indice in cui un client trova uno spazio dei nomi non si sposta quando i tag di un altro dispositivo entrano nell'elenco o ne escono. Un dispositivo di cui l'elenco non nomina nulla non ha alcun nodo.
Scrittura
La scrittura di un client raggiunge la stazione solo su una riga contrassegnata in lettura e scrittura, e l'elenco viene consultato di nuovo nell'istante in cui la scrittura arriva, quindi una riga appena passata in sola lettura non viene mai scritta. La scrittura su un tag va nella coda di consegna del suo dispositivo come ogni scrittura dall'esterno, e la risposta aspetta l'apparecchiatura; la scrittura su una variabile di memoria passa per l'imbuto di scrittura di Logic e viene convertita nel tipo della variabile. I blocchi della sorgente valgono: una sorgente che un Process in corso tiene viene rifiutata. Ogni scrittura è registrata nel diario tecnico con l'applicazione e la sessione del client. Una variabile di espressione e un allarme non accettano mai scritture, e il server risponde BadNotWritable. Un comando viene richiamato, non scritto, e un client richiama solo un comando che è nell'elenco.
Una stazione aggiornata
Una stazione aggiornata da una versione senza l'elenco serviva ogni tag di ogni dispositivo. Il suo elenco parte vuoto, quindi dopo l'aggiornamento il suo server OPC UA non serve nulla finché l'elenco non è composto: aggiungere una riga per ogni tag che un client legge, contrassegnare in lettura e scrittura quelli che un client scrive, e aggiungere i comandi che un client richiama. Un client configurato prima dell'aggiornamento trova ogni tag all'indirizzo che aveva, quindi non ha bisogno di alcuna modifica propria.
Con un agente
server_list_upsert(source: "Connector.Simulated.Oven.Temperature")
server_list_upsert(source: "Variables.Oven.Setpoint", access: "ReadAndWrite")
server_list_upsert(source: "Alarms.Oven.HighTemperature")
server_status()
Una riga creata da un agente è di sola lettura a meno che access non dica altro, e server_list_delete ne elimina una tramite il suo identificatore. Gli strumenti sono descritti in Gli strumenti, area per area.
Che cosa non fa l'elenco
Non accende il server (lo fa Abilita nella barra dei comandi), non decide quale client può collegarsi (lo decide l'Accesso dei client) e non tacita un allarme dall'esterno: tacitare resta un comando dell'operatore. Serve i valori qui sopra e nessun evento OPC UA di allarmi e condizioni. Una variabile che contiene un'immagine, un'icona o un colore non viene offerta, e una costante della descrizione di un dispositivo non viene servita.