visualizza l'elenco degli articoli
STEP 7 -- Creazione programma S7 -- Richiamo di blocchi e funzioni
Come si può predisporre una protezione blocco per i propri blocchi?
Avvertenze e consigli per il richiamo e la parametrizzazione di SFB, SFC e funzioni standard IEC
Come avviene il trasferimento di variabili "stringa", p. es. da un blocco dati ad un blocco funzionale?
Informazione sull’argomento "Richiamo di blocchi e funzioni"
Come avviene la programmazione di un tipo dati composto nel campo IN_OUT di un FB?
Come si possono creare e aggiornare le multi-istanze?
Come si possono aggiornare richiami di blocchi (conflitti di time stamp) diventati non validi nei blocchi in cui si effettua il richiamo?
Come avviene la verifica della consistenza dei blocchi dopo le modifiche nel programma STEP7?
Come si può passare un parametro del tipo "BLOCK_DB" ad un FC?
Qual è la differenza tra le istruzioni di richiamo CALL e UC opp. CC?
Qual è la differenza tra un blocco dati di istanza e un blocco dati globale e come influisce un'istruzione di richiamo CALL sul registro DB?
Come avviene la programmazione di un tipo dati composto nel campo IN_OUT di un FB?
Numero di ordinazione:

Istruzioni
Con i tipi dati composti per i parametri di trasferimento (IN_OUT) dell'FB, le variabili vengono memorizzate nel DB di istanza come rinvio con un POINTER a 6 byte (48 bit). In questo modo nel DB di istanza non c'è il valore ma bensì un POINTER a 6 byte. Questo POINTER punta al parametro attuale che quindi deve essere tassativamente disinserito. STEP 7 conosce i tipi dati composti "Date_and_Time", "String", "Array", "Struct" e "UDT".

Un esempio di come si dovrebbe programmare l'accesso indiretto al primo byte di un tale tipo dati si trova nella Figura 01. Questo modo di procedere, come descritto in questo esempio, serve per il salvataggio dati.


Figura 01

Il POINTER a 6 byte viene caricato tramite la variabile IN_OUT "Symbol_des_InOut". Dal POINTER a 6 byte il numero del blocco dati viene poi trasferito in una variabile temporanea "DB_Num" . Con questo numero di DB salvato e tramite l'istruzione "AUF DB[#DB_Num]" viene aperto il DB e poi viene caricato l'indirizzo nel registro indirizzi 1.

L'istruzione "L B[AR1,P#0.0]" agisce in modo che si ottengono i dati salvati o l'indirizzo corretto. Se si volesse, al posto di questo esempio, utilizzare l'istruzione "L Symbol_des_InOut[1]", allora non caricare i dati salvati dal registro indirizzi, ma bensì i dati direttamente dal parametro IN_OUT, i cui valori possono però essere cambiati. Qui tenere conto delle informazioni della Guida in linea STEP7, sotto

  • "Evitare errori nel richiamo di blocchi".

Avvertenza
L'esempio descritto vale solo per l'area DB, poiché la CPU in caso contrario va nello stato di "STOP". Non è ammessa una numerazione con 0 (DB0).

Il file "InOutvar.zip" contiene un progetto STEP7 con due stazioni S7 per l'esempio di programma sopra descritto:

  • Stazione: "Beispiel in tedesco" con i commenti in tedesco,
  • Stazione: "Example in inglese" con i commenti in inglese.

InOutvar.zip ( 222 KB )

 Articolo con ID:19106712   Data:2007-01-02 
Questo articoloè stato utilenon è stato utile                                 
mySupport
My Documentation Manager 
Newsletter 
CAx-Download-Manager 
Support Request
Vai all'articolo
Stampa
Creazione PDF 
Invia l'articolo
QuickLinks
Strumento di compatibilità 
Aiuto
Aiuto on-line
Guided Tour