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 )
|