Vai al contenuto
PLC Forum


AR1 E AR2


ANElet

Messaggi consigliati

buon giorno,

 

qualcuno sa spiegarmi cosa serve questa istruzione scritta in un FB? l'ho trovata in un software che un cliente mi ha passato per fare un lavoro, siccome non sono molto ferrato sul discorso registri indirizzi volevo sapere se qualcuno poteva aiutarmi.

 

      LAR1  P#DIX132.0
      TAR2                       // MULTIINSTANCE CALL OFFSET
      +AR1

 

      L     0
      T D [ AR1 , P#0.0 ]        

      T D [ AR1 , P#4.0 ]          

 

grazie anticipatamente

Link al commento
Condividi su altri siti


Indirizzamento indiretto,

LAR1 carica inAR1 il valore del puntatore

TAR2 trasferisce il contenuto di AR2 in ACCU1 

+AR1 aggiunge il contenuto di ACCU1 ad AR1 e carica il valore in AR1

 

Per la seconda parte trasferisci i primi 4 bytes del puntatore in AR1 e poi la seconda parte del puntatore, altri 4 bytes in AR1; non ne sono certo ma dovrebbe essere riferito alla data e ora di sistema.

 

Ho provato a spiegare cio che ho capito dovendo interpretare in passato una funzione di inizializzazione simile, attendiamo il parere di chi è più esperto.

Link al commento
Condividi su altri siti

Grazie per la risposta 

 

anche io ho utilizzato in passato l'indirizzamento indiretto di registri utilizzando solo AR1 senza grossi problemi, ma senza mai utilizzare AR2;

infatti il mio dubbio si focalizza soprattutto su quel "TAR2"

perchè va scritta??? A cosa serve?

ho letto su parecchi forum che l'AR2 viene modificato quando sono presenti delle multiistanze nel blocco richiamante (FB) altrimenti di norma viene settato P#0.0 di modo che punti alla prima variabile del blocco dati di istanza

 

Non so se mi sono spiegato bene; in parole povere non capisco l'utilità di dover inserire TAR2 all'interno del codice per poi andarlo a sommare all' AR1.

 

faccio presente che questa istruzione è scritta all'interno di un FB, ed è ripetuta in più segmenti, però l'FB in questione all'interno della sua interfaccia non ha dichiarato nessun'altro blocco dati di istanza per cui secondo me non esiste una multiistanza in questo FB o sbaglio?

 

grazie e spero di non aver creato confusione  

Link al commento
Condividi su altri siti

    TAR2                       // MULTIINSTANCE CALL OFFSET
    +AR1 

 

Carica il puntatore AR2 nell'accumulatore 1, +AR1 somma l'accumulatore 1 ad AR1.

Quindi viene sommato AR2 ad AR1.

 

Perchè venga fatto dipende dal programma.

Link al commento
Condividi su altri siti

Quote

Carica il puntatore AR2 nell'accumulatore 1

 

Ok ma quale puntatore, visto che non c'è indirizzamento?

 

Quote

 LAR1  P#DIX132.0

 

Mi spiego meglio, questa istruzione carica il puntatore in AR1   "P#DIX132.0", in AR2 in questo caso è stato caricato in precedenza o a quale puntatore fa riferimento?

 

  L     0
      T D [ AR1 , P#0.0 ]        
      T D [ AR1 , P#4.0 ]      

Queste istruzioni sono riferite alla data di sistema?

Link al commento
Condividi su altri siti

Se vuoi sapere la funzione dell'operatore, già ti è stata spiegata.

Se vuoi sapere come funziona, credo sarebbe opportuno mettere il codice rimanente.

La sola porzione non dice nulla ;)

Link al commento
Condividi su altri siti

E' tutto riferito al codice riportato sopra nel primo messaggio.

 

 LAR1  P#DIX132.0
      TAR2                       // MULTIINSTANCE CALL OFFSET
      +AR1
 
      L     0
      T D [ AR1 , P#0.0 ]        
      T D [ AR1 , P#4.0 ]          

 

@0.0 ha scritto:

 

Quote

Carica il puntatore AR2 nell'accumulatore 1

 

Vorrei capire in questo caso è stato definito in precedenza quale puntatore in AR2 o quale puntatore viene caricato in AR2?

Link al commento
Condividi su altri siti

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