Vai al contenuto
PLC Forum


Estrapolare l’indirizzo di un bit in un array


Messaggi consigliati

Inserito:

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


Inserita:

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

 

Inserita:

Sinceramente non riesco a capire come impostare le condizioni di cui parli

Inserita:
	  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!

 

  • 4 months later...
Inserita:

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

  • 2 weeks later...
Inserita:

Te la butto li, usa il puntatore:

lar1 P#bit_da_Funzione
AUF DB[N_db_qualsiasi]
s dbx[ar1,p#0.0]

Saluti

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