Vai al contenuto
PLC Forum


Operazione Logiche A Parola


fabianon

Messaggi consigliati


E' un AND tra le 2 word poste in IN1 e IN2, il risultato va in OUT

Nel tuo caso IN2 è una costante che in binario vale: 0000 0000 0000 1111

Per cui fare l'AND tra la MW10 che entra in IN1 e la costante 0000 0000 0000 1111 equivale a dire mascherare i bit più significativi lasciando passare solo i primi 4 bit meno significativi, esempio:

IN1 = 1010 1111 0100 0101   // <<< MW10  
IN2 = 0000 0000 0000 1111   // <<< W#16#F 
OUT = 0000 0000 0000 0101   // <<< MW20
Modificato: da JumpMan
Link al commento
Condividi su altri siti

Ti faccio un esempio in AWL dove UW corrisponde a WAND_W, supponiamo di voler rilevare il fronte positivo di uno qualsiasi tra 16 allarmi e in caso di nuovo allarme attivare una sirena, per farlo con la logica booleana servono grossomodo una settantina di istruzioni, lavorando con le word il codice si riduce a 10 istruzioni:

      L     #MemAll_0_16                // Memorie 16 allarmi
      INVI                              //   inverti tutti i bit (ACCU1 ha lo stato precedente NEGATO dei 16 allarmi)
      L     #Allarmi_0_16               // 16 Allarmi (ACCU2 ha lo stato attuale dei 16 allarmi)
      T     #MemAll_0_16                //   (memorizza per il ciclo successivo senza cambiare ACCU1 e ACCU2)
      UW                                // WAND_W tra ACCU1 e ACCU2 (passano dall' UW solo i bit che sono a 1 e prima erano a 0)
      L     0                           // Confronta il risultato del WAND_W con 0
      <>I                               //   se <>0 è stato rilevato un fronte 
      S     #Sirena                     //     quindi setta il bit #Nuovo_Allarme

      U     #Tacitazione                // Pulsante tacitazione
      R     #Sirena                     //    resetta il bit

Lavorando in doppia parola (INVD, UD, <>D) potrei anche gestire 32 allarmi sempre con 10 istruzioni in luogo di 140 istruzioni booleane !

------------------

Ma ci sono anche applicazioni più banali, come p.es. filtrare la base dei tempi dal valore di un temporizzatore.

Modificato: da JumpMan
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...