Oggetto: Configurazione dei simboli
È possibile utilizzare la configurazione dei simboli per creare descrizioni dei simboli per le variabili di progetto. Fate clic
per aggiungere un oggetto di configurazione dei simboli all'albero dei dispositivi e quindi definire impostazioni predefinite specifiche.Suggerimento
Per fornire simboli a un server OPC UA, si consiglia di utilizzare il nuovo editor di configurazione (Configurazione del set di simboli IEC) per CODESYS 3.5 SP18 e più in alto.
Fare doppio clic su Configurazione dei simboli oggetto per aprire l'editor di configurazione dei simboli.
Finestra di dialogo: Aggiungi configurazione simboli
Funzione: questa finestra di dialogo viene utilizzata per definire le impostazioni predefinite per a Configurazione dei simboli oggetto.
Chiamata: menù; menu contestuale dell'oggetto applicazione
Includi commenti in XML | Esporta il file dei simboli con i commenti assegnati alle variabili |
Supporta le funzionalità OPC UA | Nota: la disponibilità e la modificabilità di questa opzione dipendono dal dispositivo.
|
Per ulteriori informazioni ed esempi di opzioni di layout, vedere la sezione successiva "Editor di configurazione dei simboli". | |
Disposizione di compatibilità | Questa impostazione viene utilizzata per la compatibilità di vecchi progetti. Il layout dei dati creato per il cliente corrisponde il più possibile al layout creato internamente dal compilatore. |
Disposizione ottimizzata | Consigliato per nuovi progetti Calcola il layout di output in forma ottimizzata staccato dal layout interno del compilatore Non genera lacune per gli elementi non pubblicati e soddisfa rigorosamente i requisiti per l'allineamento della memoria dei tipi di dati. Richiede la versione del compilatore 3.5.7.0 o successiva. |
Editor di configurazione dei simboli
L'editor include una tabella con le variabili selezionate e una barra dei menu per la modifica.
Visualizzazione | È possibile utilizzare questo pulsante per attivare e disattivare le seguenti categorie di variabili utilizzate nell'editor di configurazione:
Questo filtro elenca anche le variabili che sono già state contrassegnate per l'esportazione nel file dei simboli tramite il file IL Attributo La colonna mostra quali diritti di accesso sono impostati dal pragma. |
Costruire | Compila il progetto Presupposto per la preparazione attuale delle variabili nell'editor di configurazione Dati non allineati solo con accesso alla memoria non allineatoSe la configurazione dei simboli contiene valori o simboli non allineati per un dispositivo che non supportare l'accesso alla memoria richiesto (non allineato), viene impostato un errore. Viene visualizzato il seguente messaggio: Il componente <nome> del SymbolType <nome del tipo di simbolo> senza allineamento della memoria non può essere pubblicato. Ciò impedisce il download di codice potenzialmente difettoso sul controller, che potrebbe causare un arresto anomalo imprevedibile del controller. |
Scaricamento | Se utilizzi un dispositivo che supporta il proprio file applicativo per la configurazione dei simboli, questo pulsante sarà disponibile anche nella barra degli strumenti. Quando si modifica la configurazione dei simboli in modalità online, è possibile scaricare la nuova |
Impostazioni |
|
Utensili | Salva file di schema XSD: Questo comando apre la finestra di dialogo standard per il salvataggio di un file nel file system. Con questo comando è possibile preparare il formato XSD del file di simboli, ad esempio per l'utilizzo in programmi esterni. |
Diritti di accesso | È possibile modificare i diritti di accesso per un simbolo facendo clic sul simbolo nel file Diritti di accesso colonna. . Icone per i diritti di accesso (in ordine crescente)
Nota: nel caso in cui il controller disponga di una gestione utenti, è possibile utilizzare i set di simboli per definire i diritti di accesso specifici del client agli stessi simboli. |
Massimale | Diritti di accesso massimi per questo simbolo |
Attributo | Se il diritto di accesso è stato assegnato tramite attributo, qui viene visualizzata l'icona corrispondente. |
Tipo | Vengono visualizzati anche i tipi di dati alias CODESYS V3.5 SP6 e versioni successive. Esempio: |
Membri | È possibile aggiungere variabili di tipo dati strutturato anche selezionando una casella di controllo per la configurazione dei simboli nel file Simboli colonna. Questo causa CODESYS per esportare tutti i simboli delle variabili "membro". Tuttavia, nel Membri colonna, è possibile fare clic su Nota: questa selezione si applica a tutte le istanze di questo tipo di dati per le quali vengono esportati i simboli. Se non è possibile selezionare un membro di tipo strutturato, verrà visualizzato un asterisco ( |
Casella di riepilogo | Set di simboli già definiti |
| Apre il Aggiungi nuovo set di simboli finestra di dialogo per specificare un nome per questo set |
| Apre il Aggiungi duplicato dal set di simboli selezionato dialogo Viene creata una copia per il set selezionato nella casella di riepilogo. È possibile modificare il nome predefinito ( |
| Apre il Rinomina il set di simboli selezionato finestra di dialogo per specificare un altro nome per il set selezionato nella casella di riepilogo |
| Apre una finestra di dialogo che chiede se eliminare o meno il set di simboli selezionato nella casella di riepilogo |
Configura i diritti dei simboli | Apre il Diritti dei simboli scheda dell'editor dispositivi Una volta effettuato il login è possibile assegnare al set di simboli selezionato nella casella di riepilogo diritti di accesso diversi per ogni gruppo di utenti (client). |
Per ulteriori informazioni, vedere: Scheda: Diritti sui simboli
Finestra di dialogo: commenti e attributi
Abilita le informazioni OPC UA estese | Nota: la disponibilità e la modificabilità di questa opzione dipendono dal dispositivo.
Se l'impostazione OPC UA è attiva è possibile includere anche informazioni aggiuntive, come commenti e attributi. . Quando l'impostazione OPC UA è abilitata, gli attributi vengono inclusi nella tabella dei simboli secondo la seguente regola:
|
Includi commenti | Requisiti: Abilita le informazioni OPC UA estese è attivato.
|
Includi attributi | |
Includere anche commenti e attributi per i nodi di tipo | Requisiti: Includi commenti è attivato.
|
Includi flag del nodo dello spazio dei nomi |
|
Includi commenti |
Nelle versioni del compilatore da V3.5.5.x a V3.5.8.0 questa include l'impostazione Preferisci i commenti sui documenti. |
Includi attributi |
|
Includere anche commenti e attributi per i nodi di tipo |
|
Requisiti: Includi commenti è attivato. | |
Includi commenti al documento Includi commenti normali Includi sempre entrambi i tipi di commenti Preferisco i commenti sui documenti, ripiego su quelli normali Preferisci commenti normali, fallback ai commenti del documento | Le opzioni determinano i commenti che vengono salvati nella configurazione dei simboli. |
Requisiti: Includi attributi è attivato. | |
Includi tutti gli attributi Includi attributi che iniziano con Filtra gli attributi con l'espressione regolare | Definisce gli attributi salvati nella configurazione del simbolo |
Corrisponde a identificatori semplici | Esiste principalmente a causa della compatibilità con le versioni precedenti per emulare il vecchio comportamento |
Impostazione: Configura la sincronizzazione con le attività IEC
Per l'accesso coerente in modo sincrono, durante l'elaborazione di una richiesta di lettura o scrittura il client simbolico attende nel runtime finché non viene trovato un momento in cui non viene eseguito alcun task IEC. Quando viene rilevata questa lacuna, viene impedito il riavvio dei task IEC finché tutti i valori dell'elenco delle variabili non sono stati copiati. Successivamente i compiti IEC vengono nuovamente pianificati come di consueto. L'accesso sincronizzato può causare un avvio ritardato dei task IEC, che viene visualizzato come un aumento del jitter. Poiché tutte le applicazioni in runtime sono gestite da uno scheduler comune, questa potenziale compromissione del comportamento in tempo reale influisce su tutte le applicazioni sul dispositivo. Sono interessate tutte le applicazioni del dispositivo, indipendentemente dal fatto che includano o meno una configurazione di simboli o che siano state scaricate nel controller da uno o più CODESYS progetti. Pertanto, il runtime consente l'accesso sincronizzato solo se consente tutte le applicazioni scaricate nel controller al momento dell'accesso.
Suggerimento
L'impostazione si trova nell'editor della configurazione dei simboli del Impostazioni menù. Inoltre l'impostazione si trova anche nel menu contestuale del controller quando si fa clic su Proprietà comando e quindi selezionare il Opzioni scheda nella finestra di dialogo aperta.
Per le applicazioni senza configurazione dei simboli, l'impostazione può essere trovata solo nella finestra di dialogo delle proprietà.
Importante
Dopo aver modificato l'impostazione è necessario ricaricare tutte le applicazioni scaricate sul dispositivo tramite download o modifica online e aggiornare tutte le applicazioni di avvio.
In quali casi è necessario un accesso coerente sincronizzato?
Di norma non sono necessari valori coerenti per i valori visualizzati, perché nella maggior parte dei casi è irrilevante da quale ciclo di task IEC provengono i valori modificati. È completamente irrilevante per valori modificati raramente. Anche durante la scrittura non ci sono quasi richieste di coerenza perché tipicamente la macchina deve essere in una sorta di modalità standby (ad esempio quando si scrivono ricette) in cui non c'è accesso diretto ai valori scritti come ricette.
Al contrario, valori coerenti sono particolarmente necessari per i collegamenti al database per salvare i dati di produzione. Per le macchine temporizzate, tuttavia, questi valori devono essere sincroni con i tempi di produzione (un valore impostato per prodotto prodotto) e non coerenti con il riferimento a uno o più compiti IEC. Con riferimento al clock della macchina, la congruenza deve essere già assicurata dall'applicazione IEC. A questo scopo, i valori che emergono durante un ciclo produttivo vengono generalmente raccolti in un elenco di variabili globali. Alla fine del ciclo il client simbolico viene avvisato tramite una variabile aggiuntiva (BOOL
o contatore) che il ciclo macchina è terminato e che i valori sono validi. Ora il cliente ha la possibilità di archiviare i valori del ciclo produttivo. A seconda delle necessità, l'avvenuta lettura può essere visualizzata anche in senso inverso tramite una variabile rilasciata, in modo da poter anche fermare la produzione nel caso in cui i dati di produzione non possano essere archiviati. L'accesso coerente sincronizzato non è necessario e utile per questo caso d'uso perché la sincronizzazione viene eseguita a livello di applicazione.
Al contrario, l'accesso coerente sincronizzato tramite client simbolici viene tipicamente applicato nell'industria di processo con sistemi in funzionamento continuo senza clock di produzione, quando, ad esempio, quando i valori di processo vengono scritti in modo coerente e ciclico in un intervallo di tempo fisso di 60 s. Ciò può avvenire o mediante sincronizzazione a livello applicativo simile alle macchine temporizzate (vedi sopra) oppure mediante sincronizzazione dell'accesso simbolico coerente sincronizzato. Il vantaggio di quest'ultimo è che non è necessario implementare alcuna logica nel programma IEC e l'accesso viene controllato interamente dal client.
Attenzione
A causa dell'aumento del jitter, il monitoraggio coerente sincronizzato non è adatto per applicazioni critiche di movimento o in tempo reale. Per questi motivi, l'accesso coerente sincronizzato dovrebbe essere rilasciato e utilizzato solo se assolutamente necessario.
Se un client utilizza l'accesso coerente sincrono rilasciato da questa impostazione, avrà effetto sul client. A seconda dello scheduler del runtime, qui il tempo di risposta può essere più tremolante per l'accesso in lettura/scrittura perché il sistema deve ancora attendere un gap di esecuzione dei task IEC. L'accesso in lettura e/o scrittura può ancora fallire quando i task IEC vengono eseguiti per un lungo periodo (nell'ordine di diverse 100 ms) o il carico della CPU è vicino al 100% per un periodo di tempo prolungato con uno o più task IEC (nel intervallo di diverse 100 ms). Pertanto la disponibilità dei valori dipende anche dal carico del controllore da parte dell'applicazione IEC.
Inoltre il client può minimizzare gli effetti su se stesso e sul runtime se osserva quanto segue nella definizione delle liste di variabili da leggere o scrivere:
Accesso coerente e sincronizzato solo alle variabili assolutamente e costantemente necessarie
Elenchi di variabili separati per le variabili che devono essere coerenti e per le variabili che potrebbero essere incoerenti
Dividere gli elenchi di variabili con diverse variabili coerenti in diversi elenchi più piccoli
Selezionare intervalli di lettura quanto più ampi possibile per la lettura ciclica dei valori
Supporto per la configurazione attuale e possibili azioni correttive
Le voci contrassegnate in rosso nella tabella dei simboli mostrano variabili che sono configurate per l'esportazione nel file dei simboli ma che attualmente non sono valide nell'applicazione. La causa può essere che la dichiarazione è stata rimossa dal blocco.
A partire dalla versione 3.5.8.0 nell'editor viene visualizzato un avviso se le variabili che hanno simboli configurati non vengono utilizzate nel codice IEC o non vengono mappate nel caso delle variabili I/O. Inoltre, il compilatore indica nella configurazione dei simboli le variabili a cui si fa riferimento da versioni di libreria obsolete.
Importante
Le variabili oggetto che non vengono utilizzate nel codice del programma rimangono non compilate per impostazione predefinita e quindi non sono disponibili nella configurazione dei simboli.
IL Collegati sempre La proprietà POU è selezionata.
IL
{attribute 'linkalways'}
viene utilizzato il pragma.
Per ulteriori informazioni, vedere: Finestra di dialogo: Proprietà: Compila e Finestra di dialogo: Proprietà: Opzioni: Controller
Esempi per i tipi di layout dei dati
Esempio di una struttura di grandi dimensioni, di cui non tutti i membri sono pubblicati:
STRUCT {attribute 'symbol':='readwrite'} PublicNumber : INT; {attribute 'symbol':='none'} InternalData : ARRAY[0..100] OF BYTE; {attribute 'symbol':='readwrite'} SecondNumber : INT; {attribute 'symbol':='none'} MoreData : ARRAY[0..100] OF BYTE; END_STRUCT END_TYPE
Voci risultanti nel file dei simboli (prestare attenzione a "size
" E "byteoffset
"):
<TypeUserDef name="T_GrosseStruktur" size="208" nativesize="208" typeclass="Userdef" pouclass="STRUCTURE" iecname="GrosseStruktur"> <UserDefElement iecname="PublicNumber" type="T_INT" byteoffset="0" vartype="VAR" /> <UserDefElement iecname="SecondNumber" type="T_INT" byteoffset="104" vartype="VAR" /> </TypeUserDef>>
<TypeUserDef name="T_GrosseStruktur" size="4" nativesize="208" typeclass="Userdef" pouclass="STRUCTURE" iecname="GrosseStruktur"> <UserDefElement iecname="PublicNumber" type="T_INT" byteoffset="0" vartype="VAR" /<UserDefElement iecname="PublicNumber" type="T_INT" byteoffset="0" vartype="VAR" /> <UserDefElement iecname="SecondNumber" type="T_INT" byteoffset="2" vartype="VAR" /> </TypeUserDef>
I seguenti meccanismi possono causare membri con disallineamento della memoria:
{attribute 'relative_offset':='…'}
su un membro
{attribute 'pack_mode':='…'}
in una dichiarazione di stringa
Target setting 'memory-layout\pack-mode'
nella descrizione del dispositivo
{attribute 'pack_mode':='1'} TYPE UngeradeAdressen : STRUCT {attribute 'relative_offset':='3'} {attribute 'symbol':='readwrite'} PublicNumber : INT; {attribute 'symbol':='readwrite'} PublicValue : LREAL; END_STRUCT EMDTYPE
Voci risultanti nel file dei simboli; (prestare attenzione a "size
" E "byteoffset
"):
<TypeUserDef name="T_UngeradeAdressen" size="13" nativesize="13" typeclass="Userdef" pouclass="STRUCTURE" iecname="UngeradeAdressen"> <UserDefElement iecname="PublicNumber" type="T_INT" byteoffset="3" vartype="VAR"> <UserDefElement iecname="PublicValue" type="T_LREAL" byteoffset="5" vartype="VAR" /> </TypeUserDef>
<TypeUserDef name="T_UngeradeAdressen" size="16" nativesize="13" typeclass="Userdef" pouclass="STRUCTURE" iecname="UngeradeAdressen"> <UserDefElement iecname="PublicNumber" type="T_INT" byteoffset="0" vartype="VAR" /> <UserDefElement iecname="PublicValue" type="T_LREAL" byteoffset="8" vartype="VAR" /> </TypeUserDef>
// Each POU contains some implicit variables, which do not get published. Depending on the data type these might cause memory gaps of different sizes. FUNCTION_BLOCK POUx IMPLEMENTS SomeInterface VAR_INPUT in : INT; END_VAR VAR_OUTPUT out : INT; END_VAR VAR END_VAR
Ogni POU contiene alcune variabili implicite, che non vengono pubblicate. Se si tratta di un tipo di dati come __XWORD
, dimensioni diverse dei gap di memoria determinano il layout dei dati lato client, a seconda che il sistema sia a 64 o 32 bit.
Voci risultanti nel file dei simboli per 64 bit e 32 bit; (prestare attenzione a "size
" E "byteoffset
"):
File di simboli, blocco funzione, opzione layout di compatibilità, 64 bit
<TypeUserDef name="T_Baustein" size="24" nativesize="24" typeclass="Userdef" pouclass="FUNCTION_BLOCK" iecname="Baustein"> <UserDefElement iecname="in" type="T_INT" byteoffset="16" vartype="VAR_INPUT" /> <UserDefElement iecname="out" type="T_INT" byteoffset="18" vartype="VAR_OUTPUT" /> </TypeUserDef>
File di simboli, blocco funzione, opzione di layout ottimizzato, 64 bit
<TypeUserDef name="T_Baustein" size="4" nativesize="24" typeclass="Userdef" pouclass="FUNCTION_BLOCK" iecname="Baustein">> <UserDefElement iecname="in" type="T_INT" byteoffset="0" vartype="VAR_INPUT" /> <UserDefElement iecname="out" type="T_INT" byteoffset="2" vartype="VAR_OUTPUT" /> </TypeUserDef>
File di simboli, blocco funzione, opzione layout di compatibilità, 32 bit
<TypeUserDef name="T_Baustein" size="12" nativesize="12" typeclass="Userdef" pouclass="FUNCTION_BLOCK" iecname="Baustein"> <UserDefElement iecname="in" type="T_INT" byteoffset="8" vartype="VAR_INPUT" /> <UserDefElement iecname="out" type="T_INT" byteoffset="10" vartype="VAR_OUTPUT" /> </TypeUserDef>
File di simboli, blocco funzione, opzione di layout ottimizzato, 32 bit
<TypeUserDef name="T_Baustein" size="4" nativesize="12" typeclass="Userdef" pouclass="FUNCTION_BLOCK" iecname="Baustein"> <UserDefElement iecname="in" type="T_INT" byteoffset="0" vartype="VAR_INPUT" /> <UserDefElement iecname="out" type="T_INT" byteoffset="2" vartype="VAR_OUTPUT" /> </TypeUserDef>
Per ulteriori informazioni, vedere: Configurazione dei simboli.