Vai al contenuto
PLC Forum


Estrapolare l’indirizzo di un bit in un array


Linotix

Messaggi consigliati

Salve, dovrei estrapolare quale bit va a 1 su un array di 64 bool , tenendo conto che può esserci solo un bit alto alla volta quindi quando questo va da 0 a 1 quello precedente va da 1 a 0. Dovrei poi trasferire l’indirizzo di questo bit all’interno di un loop dove ci sono dei calcoli che ne fanno aumentare o diminuire il valore di un bit oppure di un byte a seconda dei casi.. un po’ complicato per le mie capacità attuali. Soluzioni? Grazie

Link al commento
Condividi su altri siti


possibili soluzione :

Potresti fare delle condizioni se x(y) = true ......

Dove x è il nome della variabile e y l'indice.

 

Altra soluzione fare un ciclo for next e saggiare il contenuto... 

Sicuramente c'è ne sono altre.... 

 

Link al commento
Condividi su altri siti

	  SET   
      S     #APP_RESET
      L     P##START_ADDRESS
      LAR1  
      L     W [AR1,P#0.0]
      T     #DB_NR
      L     D [AR1,P#2.0]
      LAR1  
      AUF   DB [#DB_NR]
      L     #LENGHT_IN_BIT
NEXT: T     #CICLO
      U     DBX [AR1,P#0.0]
      SPBN  GOON
      L     #LENGHT_IN_BIT
      L     #CICLO
      -I    
      T     #BIT_ADDRESS
      SET   
      R     #APP_RESET
GOON: +AR1  P#0.1
      L     #CICLO
      LOOP  NEXT
      U     #APP_RESET
      SPBN  RST
      L     -1
      T     #BIT_ADDRESS
RST:  NOP   0
      SAVE

EyOk2oz.png

 

EAMvpm5.png

 

0Y2ndF3.png

 

WpyBCNx.png

 

T3h3uiw.png

 

GShPTF4.png

 

9BBhx6Q.png

 

Con questo codice avrai indirizzo -1 se non ci sono bit a 1 (per differenziare da indirizzo 0 nel caso il primo bit controllato fosse a 1)

in #bit_address avrai l'indirizzo del bit interessato, come richiesto, in modo tu possa usarlo nel tuo ciclo.

 

Ciao!

 

Link al commento
Condividi su altri siti

  • 4 months later...

Salve. Rispolvero questo argomento per chiedere una cosa. Come posso fare per avere in uscita invece che un numero intero l’intero indirizzo che punta ad una db diversa, es se è alto il bit db1.dbx5.0 in uscita dovrei avere db10.dbx5.0, magari da mettere direttamente su una variabile fc out pointer. Grazie

Link al commento
Condividi su altri siti

  • 2 weeks later...

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