Vai al contenuto
PLC Forum


Confronto Tra Due Byte.


fabio.intermite

Messaggi consigliati

fabio.intermite

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


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

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

fabio.intermite

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

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

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

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