Vai al contenuto
PLC Forum


Puntamento indiretto


Messaggi consigliati

Inserito:

Salve a tutti,

avrei necessità di eseguire un trasferimento dati ciclicamente (da indirizzo 0 a 1000) di una DB con diversi valori impostati ad altra DB.

Mi spiego, con un puntatore che incrementa di 1 ogni secondo devo prendere il primo valore (se il puntatore vale 1) di una DB(ex:DB100.DBW1) e trasferirlo su altra DB (ex: DB200.DBW 100) per poi usarlo come posizionatore, con valore di puntatore 2 il secondo campo della DB (ex: DB100.DBW2)e trasferirlo sullo stesso punto della DB di appoggio (ex: DB200.DBW100)  e questo per 1000 step.

 

Vorrei poter impostare, se possibile, la DB di prelievo dati, il valore del puntatore e la DB di appoggio.

 

Mi sembra che si tratti di un puntamento indiretto.

Qualcuno ha qualche esempio da farmi avere??

 

Grazie


Inserita:

Ciao,

nel 1200 puoi utilizzare una variabile come indice per un array; quindi, se nel tuo DB definisci il tuo array, potrai fare quello che ti serve senza l'utilizzo di puntatori; un esempio al momento non ce l'ho, però ti assicuro che è molto semplice: prova a guardare nel manuale o nella guida in linea.

Inserita:

Grazie per la risposta...ma mi ero dimenticato di specificare che non uso un 1200 ma una IM 151-8 PN-DP, e anche se utilizzo il TIA portal come software,il puntamento con un array precedentemente descritto non funziona.

Se avete qualche altro consiglio...ringrazio

 

HB.

Inserita:
Quote

ma mi ero dimenticato di specificare che non uso un 1200 ma una IM 151-8 PN-DP

Allora dovevi scrivere nella sezione del 300.

 

In ogni caso, se utilizzi SCL puoi fare la stessa cosa (intendo l'utilizzo di array suggerito da drugo66) anche col 300.

Se devi utilizzare puntatori in AWL, cerca nel forum, e vedrai che l'argomento è già stato trattato parecchie volte.

Inserita:

   

      U      M    100.5                  // Clock 1 sec
      FP    M    101.0
      SPBN  ZERO
      L     MW   102                    // Indice pointer
      SLD   3                           // Creo il pointer
      LAR1  
      AUF   DB   100                    // Carico la DB d'origine
      L     DBW [AR1,P#0.0]             // Carico la word indicizzata
      T     DB101.DBW    0              // Trasferisco dove mi interessa
      L     MW   102                    // Indice pointer
      +     2
      T     MW   102                    // Sommo 2 per incrementare l'indice al ciclo successivo
      L     1000
      >I                                // Confronto se l'indice supera i 1000
      SPBN  ZERO                        // In caso, riparto da 0 e ricomincia il ciclo
      L     0
      T     MW   102
ZERO: NOP   0

 

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