mrborel Inserito: 31 agosto 2015 Segnala Share Inserito: 31 agosto 2015 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. GrazieCordiali saluti Link al commento Condividi su altri siti More sharing options...
mazzinga Inserita: 31 agosto 2015 Segnala Share Inserita: 31 agosto 2015 (modificato) la soluzione è molto semplice,se il valore della tua word è 1 entri nell'IF eltrimenti esciX=la tua wordIF X=1 then IstruzioniELSE istruzioneENDIF Modificato: 31 agosto 2015 da mazzinga Link al commento Condividi su altri siti More sharing options...
mrborel Inserita: 31 agosto 2015 Autore Segnala Share Inserita: 31 agosto 2015 Quindi per esempio:dm5000[10] := 2#10XX XXXX 00XX XXXX IF dm5000[10].06 = 1 OR dm5000[10].05=1 ect ect THENistruzioniELSEistruzioni?!?ma non mi funziona.....grazie Link al commento Condividi su altri siti More sharing options...
step-80 Inserita: 31 agosto 2015 Segnala Share Inserita: 31 agosto 2015 IF dm5000[10].06 = 1 OR dm5000[10].05=1Creo 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 1In questo caso credo che la word debba essere >=1 sbaglio? Link al commento Condividi su altri siti More sharing options...
mrborel Inserita: 31 agosto 2015 Autore Segnala Share Inserita: 31 agosto 2015 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 More sharing options...
lucios Inserita: 31 agosto 2015 Segnala Share Inserita: 31 agosto 2015 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 H1if var1 <> 0 thenfaccio qualcosaelsefaccio altroend if Link al commento Condividi su altri siti More sharing options...
mrborel Inserita: 31 agosto 2015 Autore Segnala Share Inserita: 31 agosto 2015 Grazie,ho risolto cosi:var := dmxx[xx] ;IF var1 = 16#8000 THEN faccioelsealtro Link al commento Condividi su altri siti More sharing options...
lucios Inserita: 1 settembre 2015 Segnala Share Inserita: 1 settembre 2015 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 More sharing options...
Messaggi consigliati
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 accountAccedi
Hai già un account? Accedi qui.
Accedi ora