Vai al contenuto
PLC Forum


IF su WORD in array


mrborel

Messaggi consigliati

Salve a tutti,

premessa: sono un neofita, molto neofita!

Linguaggio ST.

Problema: ho un array di X word. Vorrei riuscire a determinare con un IF se almeno un dei bit X è a 1. Quindi 10XX XXXX 00XX XXXX. Al posto delle X se c'è almeno un 1 devo entrare in un ciclo altrimenti se tutte le X sono zero entrare nell'else. Come faccio a creare questa condizione?!? 

Mi spiego meglio, vorrei che se fossi nella condizione 1000 0000 0000 0000 entrasse in un IF, in tutti gli altri casi no. La domanda può essere molto banale e mi scuso in anticipo. 

Grazie

Cordiali saluti

 

Link al commento
Condividi su altri siti


la soluzione è molto semplice,se il valore della tua word è 1 entri nell'IF eltrimenti esci

X=la tua word

IF X=1 then

  Istruzioni

ELSE

  istruzione

ENDIF

 

 

Modificato: da mazzinga
Link al commento
Condividi su altri siti

Quindi per esempio:

dm5000[10] := 2#10XX XXXX 00XX XXXX

 

 

IF dm5000[10].06 = 1 OR dm5000[10].05=1 ect ect THEN

istruzioni

ELSE

istruzioni

?!?

ma non mi funziona.....

grazie

 

Link al commento
Condividi su altri siti

IF dm5000[10].06 = 1 OR dm5000[10].05=1

Creo tu debba togliere .06 e .05 in quanto come consigliava mazzinga il confronto va fatto sulla word e non sul singolo bit. 

almeno un dei bit X è a 1

In questo caso credo che la word debba essere >=1 sbaglio?

Link al commento
Condividi su altri siti

Allora mi sono spiegato male: 

ho questa word 10xx xxxx 00xx xxxx.

Con le x valori casuali.

Se faccio word>=1 non ottengo il risultato che voglio.

Se almeno uno delle X è uguale a uno devo fare determinare istruzioni, se sono tutti a zero altre.

Inoltre potrebbe anche essere 0 il primo bit a sinistra ma questo è un altro caso.

 

 

Link al commento
Condividi su altri siti

Fai una maschera della word, cioè fai un AND della word con il valore 1 in esadecimale poi fai il confronto con il risultato dell'AND se è diverso da 0.

Non conosco il linguaggio Omron quindi ti faccio l'esempio in un metalinguaggio:

var1=tuaword AND H1

if var1 <> 0 then

faccio qualcosa

else

faccio altro

end if

Link al commento
Condividi su altri siti

Bene, anche perchè rileggendo mi sono accorto di averti detto una stupidaggine. La maschera di AND deve essere fatta escludendo il bit che non ti interessa. Nel tuo caso hFE se il primo bit a sinistra è il meno significativo.

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