Jump to content
PLC Forum


Linotix

Estrapolare l’indirizzo di un bit in un array

Recommended Posts

Linotix

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

Share this post


Link to post
Share on other sites

max.bocca

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

 

Share this post


Link to post
Share on other sites
Linotix

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

Share this post


Link to post
Share on other sites
DesmoGiec
	  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!

 

Share this post


Link to post
Share on other sites
Linotix

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

Share this post


Link to post
Share on other sites
TravelMen

Te la butto li, usa il puntatore:

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

Saluti

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...