Vai al contenuto
PLC Forum

Partecipa anche tu alla Live su Youtube martedì 28/01/2025 per festeggiare i 24 anni di PLC Forum

Per ulteriori informazioni leggi questa discussione: https://www.plcforum.it/f/topic/326513-28012025




Chiarimento Istruzione Awl - Sapete spiegarmi come funziona?


Messaggi consigliati

Inserito:

Salve a tutti, vi chiedo se riuscite a spiergarmi come funziona questa istruzione AWL non essendo un programmatore ma un semplice manutentore

Grazie a chi voglia spendere un po del suo tempo per me

AUF DB 220 // DB allarmi, immagine attuale

AUF DI 221 // Immagine ciclo precedente

U(

L DBD 0

UD DW#16#FFFFFFFF // filtraggio allarmi non interessanti sirena

L DID 0

INVD

UD

L DW#16#0

<>D

)


Inserita:

AUF DB 220 // dichiara DB

AUF DI 221 // dichiara DB di istanza (DI)

U(

L DBD 0// carica dword del DB

UD DW#16#FFFFFFFF // carica maschera

L DID 0 // carica dword dal db di istanza

INVD // inverte tutti i bit della dword(0->1, 1->0)

UD // AND bit a bit

L DW#16#0 // carica zero

<>D // se il risultato del AND bit a bit è diverso da 0, setta RLC

)

in pratica alza RLC quando si alza un bit della DBD 0.

poi da qualche parte ci saranno le istruzioni che copia la DBD immagine attuale sulla DID immagine precedente. questo ti azzera RLC

tradotto in laddeer è una cosa del genere

allarm__mask__all_prec

--||------||-------|\|-------|------ out

--||------||-------|\|-------|

--||------||-------|\|-------|

immagina in parallelo tutti i 32 rami dei corrispondenti bit delle dword

Inserita: (modificato)

Grazie mille per il chiarimento che è stato efficente.

l'unica cosa che non mi torna è che nell'istruzione

UD DW#16#FFFFFFFF // filtraggio allarmi non interessanti sirena

dove FFFFFF corisponde a dei bit sul DB ( db220)

il confronto dovrebbe essere ignorato qualunche sia il risultato

Modificato: da superpolipo
Inserita:

La maschera serve per poter filtrare gli allarmi che non devono interessare la sirena. Finché la maschera è "FFFFFFFF" è come non ci fosse, ma è già lì, pronta per essere utilizzata (mettendo a zero i bit da mascherare), in caso di necessità.

Inserita:

Spiegato a parole, senza entrare nel merito delle singole istruzioni.

La DB220 contiene lo stato attuale degli allarmi

La DB221 contiene lo stato precedente

Vengono caricati gli allarmi attuali (un po' pochini se stanno tutti in una DW, e scritto così non sembra esserci nulla di ricorsivo... comunque dipende dal'applicazione... possono anche essere più che sufficienti)

Vengono "filtrati" con una maschera fissa (IMHO sarebbe meglio se anche la maschera fosse in una DB, magari con possibilità di personalizzazione da SCADA o da pannello) per decidere quali sono "rilevanti" per far suonare la sirena

In risultato viene confrontato con lo stato precedente per stabilire se ci sono allarmi nuovi, e quindi, far suonare la sirena (se l'allarme era già attivo la sirena sta già suonando, oppure è già stata resettata e non deve suonare di nuovo)

Volendo fare i puntigliosi, io avrei fatto prima il confronto con lo stato precedente, e poi mascherato per stabilire se far suonare la sirena, comunque agli effetti finali non cambia nulla

ciao

Inserita:

nell'esempio rportato vi è solo una Dword ma in effetti ce ne sono molte di più solamente essendo tutte in or capita una le altre sono uguali

Inserita:

Beh, ma se sono più DW tanto valeva fare un loop indicizzato... a meno che non siano solo 3 o 4 per cui può non valerne la pena. E' anche vero che per fare un loop avrebbe dovuto memorizzare da qualche parte anche la maschera, altrimenti resterebbe la stessa per tutte le DW

comunque questo è solo il mio parere, poi ognuno programma a modo suo ;)

ciao

Inserita:

Per essere completi le DW sono 50 anche se molti bit non sono usati perche disponibili e, essendo un programma fornito da terzi su commissione noi "poveri " manutentori dobbiamo adeguarci e capire come è sviluppato il programma per poi metterci le mani dopo la consegna del lavoro.

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