Vai al contenuto
PLC Forum


Confronto Tra Due Byte.


Messaggi consigliati

fabio.intermite
Inserito:

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.


Inserita:

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

Inserita:

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

fabio.intermite
Inserita:

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.

Inserita:

Vero,

ti chiedo scusa, ho pensato solo all'AWL.

Per quello che sostieni, invece, basta provare con 2 byte adiacenti e vedere cosa accade ...

Inserita:

La guida AWL di Step7 v5.5 dice riguardo all'istruzione L:

PlcFor4.PNG

Inserita:

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.

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