Variabili
L'editor di variabile, scheda per scheda: identità e indirizzo, le nature Espressione e Memoria, i tipi di uscita, la scheda Valore in tempo reale, Imposta il valore, qualità e ritenzione, i comandi e che cosa l'editor rifiuta.
Una variabile è un valore tipizzato che la stazione calcola o conserva, indirizzato sotto Variables dal percorso della sua cartella e dal suo nome ripulito. Seleziona una riga di variabile nella colonna di Logic, oppure premi Apri sulla sua riga nella tabella della sua cartella o della radice della sua sezione, per aprirne l'editor. Una variabile creata con Nuovo… > Nuova variabile, o con Nuova variabile su una cartella, non si apre: la sua riga è evidenziata in quella tabella (vedi Creare e copiare). L'editor richiede Visualizzare Logic per leggere, Configurare Logic per cambiare qualunque campo e Comandare Logic per scrivere un valore di memoria.
L'intestazione del pannello mostra il segno della riga (un segno di espressione o di memoria), il nome e una riga per natura: « Un valore che questa stazione calcola da un'espressione sullo spazio degli indirizzi, ricalcolato a ogni ciclo della logica. » oppure « Un valore che questa stazione conserva: scritto da uno script, da una dashboard o a mano, e leggibile ovunque tramite il suo indirizzo. » La colonna del modulo contiene la scheda IDENTITÀ e poi l'editor ESPRESSIONE o la scheda MEMORIA; la barra a destra contiene VALORE e, per un'espressione, PUNTI REFERENZIATI.
Identità
| Campo | Che cos'è | Valori e valore predefinito | Effetto |
|---|---|---|---|
| Nome | Il nome visualizzato; il suo segmento ripulito è l'ultimo livello dell'indirizzo. | Testo libero; una variabile nuova si chiama VariableN. |
Si conferma con la ridenominazione sicura (qui sotto). Un nome vuoto viene rifiutato (« Serve un nome. »). |
| Riga dell'indirizzo | L'indirizzo a cui la variabile risponde, riportato sotto il nome: la radice della sezione, i livelli di cartella, il segmento. | Sola lettura. | Segue il nome mentre scrivi; la parte di cartella cambia solo con Sposta in nell'albero. |
| Natura | Come viene prodotto il valore. | Espressione (predefinita) o Memoria. | Passare a Memoria riparte dal Valore iniziale; passare a Espressione svuota il valore fino al ciclo successivo. |
| Tipo di uscita | La categoria a cui ogni risultato o scrittura viene convertito. | Booleano, Intero, Decimale (predefinito), Testo, Data e ora, Immagine, Icona, Colore. | Cambiarlo riparte da capo per una variabile di memoria (e salva il valore di partenza quando è ritentiva) oppure svuota una variabile di espressione; l'anteprima si risolve di nuovo con il nuovo tipo. |
| Unità di misura (facoltativa) | L'unità ingegneristica disegnata accanto al valore. | Testo libero, vuota all'inizio. | Mostrata nella scheda VALORE e leggibile negli script come .EngineeringUnit. |
| Descrizione (facoltativa) | Testo libero. | Vuota all'inizio. | Nessuno sulla valutazione. |
Nome e indirizzo
Il campo Nome è un campo di ridenominazione: quello che scrivi resta locale, una riga sotto il campo anticipa l'effetto dopo una breve pausa (« Controllo dei riferimenti… », poi « La rinomina aggiorna i 3 punti che leggono questo indirizzo. », « Nessun riferimento usa l'indirizzo attuale. », oppure « L'indirizzo effettivo non cambia; nessun riferimento deve essere aggiornato. » quando il nuovo nome dà lo stesso segmento), e Invio o l'uscita dal campo confermano. La conferma rinomina la variabile, riscrive ogni espressione, script, condizione e collegamento di dashboard che usava il vecchio indirizzo, conserva il valore in tempo reale e i collegamenti dei canali (un canale si collega alla chiave stabile della variabile, mai al suo nome) e riferisce « Variabile rinominata e N riferimenti aggiornati. » Un nome che si scontra al suo livello viene rifiutato sul posto: « 'X' risponde già a 'Variables.X'. I nomi archiviati in una stessa cartella devono ridursi a segmenti distinti. » Le regole di scrittura e di collisione sono su Lo spazio degli indirizzi.
Espressione
Mostrata mentre la natura è Espressione: l'editor ESPRESSIONE con il suo pulsante Sfoglia… e il suggerimento « Una singola espressione JavaScript sullo spazio degli indirizzi (ad es. Connector.Simulated.Pump.Flow.ValueToReal() * 0.1, Variables.Setpoint.Value). Per un'uscita Immagine/Icona/Colore, restituire un indirizzo Assets.Images, Assets.Icons o Assets.Colors (ad es. Variables.Level.Value > 50 ? Assets.Colors.Red : Assets.Colors.Green). Digitare per il completamento automatico oppure Sfoglia… per sceglierne uno. » Il testo si salva da solo a ogni battuta e viene convalidato ogni mezzo secondo; un problema compare nella scheda VALORE. Il linguaggio, la superficie di lettura e ogni regola sono su Espressioni. Il testo dell'espressione viene conservato, ma ignorato, mentre la natura è Memoria.
Memoria
Mostrata mentre la natura è Memoria.
| Campo | Che cos'è | Valori e valore predefinito | Effetto |
|---|---|---|---|
| Valore iniziale | Il valore di partenza, come testo. Sotto: « Interpretato secondo il tipo di uscita all'avvio. Lasciare vuoto per nessun valore. » | Qualunque testo, vuoto all'inizio. | Interpretato secondo il tipo di uscita quando la variabile viene creata, quando la natura o il tipo di uscita cambiano, e a ogni avvio di una variabile non ritentiva. Vuoto significa nessun valore: la variabile parte da un vuoto. Un testo che non si interpreta viene segnalato nella scheda VALORE (« Non è stato possibile interpretare il valore iniziale come decimale. ») e fa partire un vuoto. |
| Ritentiva: l'ultimo valore scritto sopravvive ai riavvii | Se le scritture vengono salvate. | Disattiva all'inizio. | Una variabile ritentiva viene salvata circa un secondo dopo che le scritture si fermano e mai oltre cinque secondi dopo la prima scrittura non ancora salvata; fermare il runtime svuota ciò che è in attesa. All'avvio successivo il testo conservato viene interpretato con il tipo di uscita attuale; quando non si interpreta più, si usa il valore iniziale. Una variabile non ritentiva torna al valore iniziale all'avvio. |
Imposta il valore
Il campo Imposta il valore e il suo pulsante Scrivi sono disegnati solo per un ruolo che ha Comandare Logic, e sono grigi con « Runtime fermo » mentre la stazione è in sola lettura; il blocco di progettazione non li tocca. Scrivi un valore e premi Scrivi: il testo viene interpretato secondo il tipo di uscita; un testo che non si interpreta viene rifiutato (« Non è stato possibile interpretare 'abc' come intero. ») e non viene scritto nulla; un campo vuoto non scrive alcun valore, il che riporta la variabile a un vuoto. La scrittura passa dall'unico punto: viene rifiutata mentre una ricetta in corso o un interblocco tengono la variabile (« 'Variables.X' è protetta in scrittura da '<chi la tiene>'. »), registrata da vecchio a nuovo sotto l'origine Operatore, applicata sulla coda della logica e marcata per la ritenzione quando la variabile è ritentiva. Una riga sotto il campo dice « Valore scritto. » quando il valore è entrato, oppure il motivo del rifiuto (uno dei rifiuti qui sopra), come risponde la scrittura di un tag nel Connector. Il campo non è una lettura; la lettura è la scheda VALORE.
Una variabile di memoria può essere scritta anche dall'esterno della stazione: servita da una riga della mappa del server Modbus che consente la scrittura, riceve le scritture di un client Modbus dallo stesso punto unico, registrate sotto l'origine Modbus client <address>:<port>. Anche una variabile di espressione può essere servita, in sola lettura.
Tipi di uscita
| Tipo di uscita | Porta | Note |
|---|---|---|
| Booleano | vero o falso | Registrabile e tracciabile tramite un canale |
| Intero | un intero a 64 bit | Registrabile e tracciabile |
| Decimale | un reale in doppia precisione | Registrabile e tracciabile; la lettura mostra le cifre decimali della stazione |
| Testo | testo libero | |
| Data e ora | un istante | Mostrato nel formato di data e ora della stazione |
| Immagine | un id di risorsa, come testo | Uscita di presentazione: l'espressione restituisce un indirizzo Assets.Images.* |
| Icona | un glifo o markup SVG, come testo | Uscita di presentazione: restituire un indirizzo Assets.Icons.* |
| Colore | un colore esadecimale, come testo | Uscita di presentazione: restituire un indirizzo Assets.Colors.* |
La conversione è la stessa conversione permissiva che usa il resto dell'applicazione: il testo si interpreta, i numeri si arrotondano o si convertono, e ciò che non si converte diventa nessun valore. Una variabile di memoria di un tipo di presentazione conserva il valore letterale che scrivi (un id di risorsa, un glifo, un esadecimale). Le tre uscite di presentazione esistono per le dashboard, dove il componente Immagine, Icona o Simbolo collegato disegna quello a cui la variabile si risolve in quel momento; gli indirizzi che restituiscono sono elencati sotto Risorse.
La scheda Valore
La barra VALORE mostra il valore attuale aggiornato due volte al secondo: per un tipo scalare la lettura con l'unità accanto, per Immagine la figura, per Icona il glifo a dimensione, per Colore il campione con il suo esadecimale. Un vuoto è disegnato come un trattino. Per una variabile di espressione la scheda anticipa la bozza che stai scrivendo, valutata con i valori attuali prima che il ciclo la raccolga; mentre l'espressione non è valida la lettura resta un trattino e il messaggio di convalida compare nella scheda (anche una collisione di nomi viene riferita qui, benché un nome sbagliato non fermi mai l'anteprima). Sotto una lettura scalare la scheda dice « Collegare un canale a questa variabile in Process > Definizione > Canali per registrarla. »; il collegamento si fa nella schermata Canali di un modello di Process.
Per una variabile di espressione la scheda PUNTI REFERENZIATI elenca ogni indirizzo che l'espressione nomina con la sua lettura attuale, « ? » quando l'indirizzo non si risolve più, così un ingresso di cattiva qualità si vede a colpo d'occhio.
Qualità
Il valore di una variabile è o un valore tipizzato o nessun valore (un vuoto). Un punto è di buona qualità solo quando il suo valore esiste: una variabile di memoria è di buona qualità appena conserva un valore, e un valore iniziale vuoto è un vuoto fino alla prima scrittura vera; una variabile di espressione porta la qualità della sua ultima valutazione, quindi quando un punto referenziato manca, è di cattiva qualità o è senza valore, l'espressione non viene valutata e la variabile diventa un vuoto di cattiva qualità. Una lettura vuota non diventa mai zero in silenzio. Gli script leggono la qualità come .State(); un canale collegato alla variabile registra il vuoto come vuoto.
Usato da
La scheda USATO DA, in fondo alla colonna del modulo, elenca tutto ciò che nella stazione legge o scrive la variabile, così si vede che cosa ne dipende prima di rinominarla o eliminarla. Viene letta quando si seleziona la variabile e di nuovo dopo una rinomina.
| Genere | Posizione | Nome |
|---|---|---|
| Server Modbus | Vuota | La riga della mappa dei registri del server Modbus che serve la variabile, con la classe di registro e l'indirizzo nel manuale (Registro di mantenimento (4xxxx) 40101) |
| Server OPC UA | Vuota | Che cosa un client può fare attraverso la riga dei nodi serviti del server OPC UA che serve la variabile: Sola lettura o Lettura e scrittura |
| Pubblicazione MQTT | Il broker | Il topic della riga della scheda Pubblicare del broker che pubblica la variabile |
| Variabile Logic, Azione Logic, Allarme Logic | Vuota | La variabile di espressione, l'azione o l'allarme il cui testo scrive l'indirizzo della variabile, con le cartelle in cui è archiviato |
| Dashboard | La dashboard | Il componente la cui proprietà di indirizzo nomina la variabile |
La riga di un server tiene la variabile per la sua identità stabile: una rinomina la lascia a servire la stessa variabile, e un'eliminazione lascia la riga al suo posto, a nominare ciò che ha perso. La riga di un broker fa lo stesso e mantiene il suo topic. Mentre la ricerca è in corso la scheda dice « Lettura dei riferimenti… »; quando niente usa la variabile, « Niente nella stazione usa questa variabile. »; quando la ricerca non riesce, « Non è stato possibile leggere i riferimenti » con Riprova, mai un elenco vuoto. La scheda si limita a leggere: ogni ruolo che apre l'editor la vede, anche mentre la stazione è bloccata, e non offre alcun comando. Non elenca i canali di Process legati alla variabile, che si legano per la sua chiave stabile.
Comandi
| Comando | Che cosa fa | Grigio quando | Non disegnato quando |
|---|---|---|---|
| Copia | Duplica la variabile nella radice Variables con un nome libero (Name (2)…) ed evidenzia la copia nella tabella di quella radice invece di aprirla (Creare e copiare); la copia ha una chiave nuova, quindi nessun canale è ancora collegato a lei. |
La stazione è bloccata o in sola lettura. | Il ruolo non ha Configurare Logic. |
| Elimina variabile | Chiede « Eliminare 'X'? Questo rimuove la variabile. I riferimenti al suo indirizzo resteranno irrisolti. L'operazione non è reversibile. » e poi la elimina con il suo valore conservato. | La stazione è bloccata o in sola lettura. | Il ruolo non ha Configurare Logic. |
| Sposta in (clic destro) | Archivia la variabile in un'altra cartella o alla radice; l'indirizzo e ogni riferimento seguono. | La stazione è bloccata o in sola lettura. | Il ruolo non ha Configurare Logic. |
Una variabile non ha Abilita né Disabilita: o è sempre valutata o è sempre conservata.
Che cosa rifiuta l'editor
- Un nome vuoto, o un nome il cui segmento è già preso al suo livello.
- Un'espressione che non è una sola espressione JavaScript di sola lettura, che referenzia un punto che non esiste o un'altra variabile di espressione, o che fallisce una valutazione di prova (i messaggi esatti sono su Espressioni).
- Un valore iniziale o un valore di Imposta il valore che non si interpreta con il tipo di uscita, e qualunque valore che sia NaN o infinito.
- Qualunque modifica mentre la stazione è bloccata da una prova o è ferma: il campo si ricarica con quello che la stazione conserva e il registro delle azioni dice perché.
Che cosa non fa l'editor
Non traccia e non registra (lo fa un canale), non scrive tag (uno script o un comando di dashboard portano più avanti un valore di memoria), non referenzia altre variabili di espressione, non tiene alcuno storico dei valori e non conserva un valore non ritentivo attraverso un riavvio.