fabio.intermite Inserito: 4 ottobre 2014 Segnala Share Inserito: 4 ottobre 2014 Scusate se forse mi perdo in un bicchiere d'acqua ma non riesco a capire. Ho la necessita di confrontare la variabile temporanea dell'OB100 ( OB100_STRTUP) con una costante B#16#81. Lo scopo è quello di vedere se è stato esegutio un "manual warm restart" o un "automatic warm restart". Si tratta solo una esercitazione per comprendere il funzionamento di un OB. Bene..confrontare due byte per vedere se sono uguali.. come faccio? lo step7 mi mette a disposizione solo funzioni per confrontare interi, doppi interi e reali. Link al commento Condividi su altri siti More sharing options...
elettrix01 Inserita: 5 ottobre 2014 Segnala Share Inserita: 5 ottobre 2014 Ciao, in AWL ti consiglio di fare una cosa del genere: L #OB100_STRTUP L B#16#81 ==I = M0.0 Se vuoi usare KOP devi prima usare l'istruzione MOVE per copiare OB100_STRTUP in una variabile di tipo INT e poi fare il confronto con CMP ==I Link al commento Condividi su altri siti More sharing options...
drugo66 Inserita: 5 ottobre 2014 Segnala Share Inserita: 5 ottobre 2014 Ciao, hai provato ad eseguire il confronto con ==I anche se si tratta di byte ? Ho provato adesso con il simulatore di Step 7 e funziona senza problemi ... Link al commento Condividi su altri siti More sharing options...
fabio.intermite Inserita: 5 ottobre 2014 Autore Segnala Share Inserita: 5 ottobre 2014 Ho segguito il consiglio di Elettrix01 ed ero anche roiuscito a trovare una vecchia discussione sullo stesso tema. Da quello che ho capito, in AWL puoi confrontare i due byte con il comando ==I ma bisogna fare attenzione (correggettemi se dico fesserie). Se per esempio, in AWL confronto MB10 ed il MB110 (due merker byte), in realta sto confrontando le due WORD MW09 ed MW109 ( due merker word). Quindi il confronto è attendibilie se nessuna altra aperazione lavora con il MB09 ed il MB109 (due merker byte). L'operazione di movere i due byte in due merker word e poi confrontarli con la funzione CMP==I del KOP, mi sembra più affidabile. Drugo66, in KOP la funzione CMP ==I accetta solo variabili dichiarate come intere, se ci metto un merker byte o una merker word rimane tutto rosso. Link al commento Condividi su altri siti More sharing options...
drugo66 Inserita: 5 ottobre 2014 Segnala Share Inserita: 5 ottobre 2014 Vero, ti chiedo scusa, ho pensato solo all'AWL. Per quello che sostieni, invece, basta provare con 2 byte adiacenti e vedere cosa accade ... Link al commento Condividi su altri siti More sharing options...
elettrix01 Inserita: 5 ottobre 2014 Segnala Share Inserita: 5 ottobre 2014 La guida AWL di Step7 v5.5 dice riguardo all'istruzione L: Link al commento Condividi su altri siti More sharing options...
JumpMan Inserita: 5 ottobre 2014 Segnala Share Inserita: 5 ottobre 2014 Se per esempio, in AWL confronto MB10 ed il MB110 (due merker byte), in realta sto confrontando le due WORD MW09 ed MW109 ( due merker word). Non è vero! Ricordiamoci che tutte le operazioni vengono svolte sugli accumulatori. Quando tu carichi un byte con L MB10 il suo valore viene caricato nel byte basso di ACCU 1 e tutti gli altri bit dell' accumulatore vengono azzerati (come si vede chiaramente dal quote di elettrix) L'operazione di confronto ==I confronta i 16 bit meno significativi di ACCU1 (bytes L-H e L-L) con quelli meno significativi di ACCU2. 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