Vai al contenuto
PLC Forum


Puntare Bit Per Alzare Merker


lappone2

Messaggi consigliati

Salve a tutti.

Sto lavorando con i puntatori per alzare un merker.

Sono un principiante, quindi chiedo pietà per la mia ignoranza..

:)

Mi spiego meglio...

Ho una variabile INT (la chiamo X), con valori da 1 a 20, in base al suo valore vorrei ottenere:

Se varibabile 1, trasferisco DBX84.0 in M0.0

Se varibabile 2, trasferisco DBX84.1 in M0.0

Se varibabile 3, trasferisco DBX84.4 in M0.0

ecc...

In pratica il mio offset di spostamento è la mia variabile X.

Quello che non mi è chiaro, è come posso trasformare il puntatore per scorrere i bit da DBX84.0 fino a DBX86.3 (valore da 1 a 20 di X) e alzare M0.0 in base al valore di DBX.

Modificato: da lappone2
Link al commento
Condividi su altri siti


 L     MW    10                    // MW10 è la X
      ITD                               // converto in un intero 32 bit
      L     L#1                         // in informatica e' meglio contare da zero
      -D                                // sottraggo 1 per partire da zero
      L     P#DBX 84.0                  // carico l'indirizzo di DBX84.0. Il relativo DB è stato aperto prima
      +D                                // sommo l'indirizzo all'indice
      LAR1                              // e trasferisco il risultato ad AR1
      U      [AR1,P#0.0]                // interrogo il bit  secondo AR1 spiazzato di niente (0.0)
      =     M      0.0                  // e lo assegno

in questo sito, se cerchi attentamente, c'e' un tutorial sui puntatori.

Link al commento
Condividi su altri siti

      AUF   DB    10                    //Apri il DB (esempio DB10)

      L     P#DBX 84.0                  // carica l'indirizzo del bit 84.0
      L     #NrBit                      // Somma l'indice del bit da 1 a 20
      +D    
      +     L#-1                        // sottrai 1 per allineamento a 0
      T     #Adr                        // scrivi indirizzo in variabile DINT 

      U     DBX [#Adr]                  // Interroga stato bit
      =     M      0.0

Questo è solo uno dei vari metodi possibili.

Link al commento
Condividi su altri siti

Grazie di cuore.

Si, ho scaricato la guida Puntatori_S7.pdf.

Il mio codice era simile, tranne per per il -1 per l'allinemento.

OPN "DBlavoro"

L #X

L P#DBX 84.0

+D

T #Y

L DBX [#Y] //errore da step7, adesso ne conosco il motivo ;)

T #z

La cacchiata era:

U DBX [#Adr] // Interroga stato bit

= M 0.0 U DBX [#Adr] // Interroga stato bit

= M 0.0

Un sentito grazie a tutti per la vostra inesauribile bontà.

Modificato: da lappone2
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...