Vai al contenuto
PLC Forum


Puntatori S7-300


Messaggi consigliati

Inserito:

Un saluto a tutti. In un programma di una macchina che fa collaudo pezzi vengono richiamati valori da una db con dei puntatori , effettua diversi test e ad ognuno va a leggere il suo valore di riferimento:

AUF db 60

L DBB [AR1,P#1.1]

Ovviamente nel registro AR1 va a caricare diversi valori , io vorrei capire in quale parte di db60 vado a leggere , se esiste un sistema per sapere in un preciso momento dove mi porta il puntatore.

Anche se spiegato in maniera un pò agricola spero che mi capiate.

Grazie


Inserita:

Con Step7, attivando la visualizzazione dello stato (icona con gli occhialini oppure Test --> Controlla o, ancora, Ctrl + F7), in AWL ti appare sulla destra la tabella con visualizzati gli stati. Facendo click col tasto destro sull'ìintestazione delle colonne, appare il menù contestuale con le voci "Mostra" e "Nascondi". Scegli di mostrare "Registro indirizzi 1".

Per interpretare il valore che leggi, devi conoscere il formato del registro indirizzi. Per questo, ti rimando alla lettura della guida in linea di Step7.

Spero di aver risposto alla tua domanda, perché non è molto chiaro quello che chiedi.

Inserita:

Con l'istruzione L DBB [AR1,P#1.1] non carichi in AR1 ma nell'accumulatore 1, il contenuto del byte (DBB) puntato da AR1 + l'offset (nel tuo caso P#1.1].

In AR1 devi caricare un indirizzo tramite l'istruzione LAR1.

Altrimenti senza scomodare AR1, puoi, una volta aperta la DB con AUF, creare un puntatore in una MD e usare questo per caricare i valori che ti servono:

AUF DB60

L 2

T MD 10

L DBB [MD10]

T MB 20

Con questo codice carichi il valore di DB60.dbb2 in MB20. MD10 è il tuo puntatore.

Ciao

Inserita:
Con questo codice carichi il valore di DB60.dbb2 in MB20. MD10 è il tuo puntatore.

No.

Nel tuo esempio, punti a DBX0.2 (che non è un idirizzo valido per leggere un byte), non a DBB2.

Inserita:

Non mi ricordavo più che i puntatori erano espressi a bit.

Allora per puntare a dbx2.0 devo caricare 16 in MD10.

Sei sicuro che non ti legga ugualmente un byte anche se punti a DBX0.2 (da dbx0.2 a dbx1.1)?

Sicuramente è una cosa senza senso, ma secondo me ti permette di farlo comunque.

Ciao

Inserita:
Sei sicuro che non ti legga ugualmente un byte anche se punti a DBX0.2 (da dbx0.2 a dbx1.1)?

Sicuramente è una cosa senza senso, ma secondo me ti permette di farlo comunque.

Proverò, ma non credo.

Inserita:

Innanzi tutto chiedo scusa per la risposta tardiva a causa dell' influenza. Come sempre i vostri consigli sono preziosi. Facendo come dite voi in awl durante la fase di test del programma in una colonna avevo il valore di ar1 , aggiungevo l' offset ed avevo l' indirizzo della db.

Grazie 1000

  • 1 month later...
Inserita:

buongiorno a tutti,ho una fc che recita

L #M_ADX8 //Absolute Addres of Memory to Read ( * 8) (int)

LAR1

L #B_IX //Index of Bit to Read, 0 the first element (int)

+AR1

U M [AR1,P#0.0]

= #B_OUT //Status of Read Bit (bool)

qualcuno sa dirmi se è corretta e come posso usarla?

grazie in anticipo

Inserita:

ok scusate ho risolto....devo moltiplicare *8.... c'è anche scritto!!!!

ciao

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...