Vai al contenuto
PLC Forum


Attivare Lo Stesso Merker In Più Punti


alessandro

Messaggi consigliati

Ciao a tutti.

Sono in discussione con un mio collega sull'etica di poter attivare uno stesso merker in più punti di un programma, anche nello stesso segmento.

Faccio un esempio:

se vb1=0 allora attiva m1.0, m1.1, m1.2

se vb1=1 allora attiva m1.1, m1.2

se vb1=2 allora attiva m1.2, m1.3

Abbiamo provato a caricare un cosa del genere (con molti più merker) su un S7-200 e sembrava non dare nessun problema.

Poi abbiamo sostituito i merker con delle uscite (q0.0, q0.1...) e non si attivava nessuna uscita.

Link al commento
Condividi su altri siti


Massimo Vergani

puoi farlo usando set e reset oppure usando salti condizionati,

ma con l'assegnazione diretta del bit, non funziona.

infatti se è valida la condizione vb=0 viene assegnato lo stato 1 ai merker m1.0-m1.1-m1.2

ma quando il programma legge il segmento successivo e trova non valida la condizione vb1=1 assegna lo stato 0 ai merker , m1.1 - m1.2 idem per il 3° segmento.

ciao

Link al commento
Condividi su altri siti

Dipende essenzialmente dal *modo* che usi per attivare la bobina. Se utilizzi delle istruzioni SET (... e ovviamente inserisci anche le corrette RESET) direi ok, se invece inserisci delle bobine "normali" lo stato della bobina dipende unicamente dallo stato dell'ultima catena programmata in cui compare la bobina in questione (sempre che non sia saltata da un jump...)

ciao

Andrea

Link al commento
Condividi su altri siti

forse mi sbaglio, ma non penso che funzioni con il set e reset, vale sempre l'ultima condizione verificata. Con i salti non ci sono problemi.....

Link al commento
Condividi su altri siti

forse mi sbaglio, ma non penso che funzioni con il set e reset, vale sempre l'ultima condizione verificata. Con i salti non ci sono problemi.....

Quando una catena "non è vera" e comanda una bobina "normale", la bobina viene settata a zero, viceversa se comandasse una bobina RESET (o SET) semplicemente non ne modificherebbe lo stato

Andrea

Link al commento
Condividi su altri siti

salve io parlo per i plc siemens

la cosa vi assicuro che funziona come dice massimo vergani enon ci sono altri modi

il reset comunque ha sempre ragione sul set o =merker

i mercher o le uscite funzionano nello stesso modo

ciao a tutti :D:D:D

Link al commento
Condividi su altri siti

Puoi lasciare le istruzioni di assegnazione, ma devi inserire un salto condizionato dopo ogni gruppo di istruzioni.

Esempio per il 300:

L DW0
L 1
==I
=M0.0
=M0.1
=M0.2
SPB END

L DW0
L 2
==I
=M0.1
=M0.2
SPB END

L DW0
L 3
==I
=M0.2
=M0.3
SPB END

END: NOP 0

In questo modo la prima condizione che si verifica esclude le successive.

Comunque non è un gran bel modo di lavorare in quanto i merker vengono prima azzerati e poi settati, il valore giusto lo hanno solo dopo l'etichetta END !

Se devi attivare delle uscite dovresti trasferire tali merker sulle uscite dopo l'etichetta END.

Modificato: da JumpMan
Link al commento
Condividi su altri siti

Claudio Monti
il reset comunque ha sempre ragione sul set

Non è vero, questo solo perché siamo abituati a scriverli in questa sequenza...

Se si scrive prima la riga del RESET e poi quella del SET ed entrambe sono vere (e già questo non dovrebbe avvenire - ma è solo per fare l'esempio), a fine esecuzione del ciclo il merker sarà settato ovvero a 1!

Link al commento
Condividi su altri siti

Chiaramente con un plc ci puoi fare quello che vuoi. E' caldamente consigliabile che tu non attivi e non setti uno stesso merker in più parti del programma. Anche perchè con plc moderni ai un'ifinità di merker e puoi assegnare diversi merker per poi fare una or finale sul merker che ti serve. Anche per una questione di leggibilità.

Saluti

Link al commento
Condividi su altri siti

Sono pienamente d'accordo con SUIBAF.

L'assegnazione di una uscita (o merker) è consigliabile farla in un solo punto del programma, questo ne migliora la leggibilità ed eventualmente aiuta in caso di ricerca guasti o quando si deve verificare il funzionamento di logiche e programmi.

Io personalmente seguirei il consiglio di SUIBAF.

Ciao a tutti!!!

Link al commento
Condividi su altri siti

ifachsoftware

La gestione tramite multipli Set / Reset e' fondamentale per implementare una codifica Grafcet anche in programmi che non lo supportano nativamente.

Link al commento
Condividi su altri siti

Claudio Monti

Giusto, ifachsoftware!

In questi casi diventa "utile" anche se non necessario, ti puoi sempre appoggiare ad altri merker che poi attivano altri... è comunque una palla.

Per tutti gli altri casi, anche dal punto di vista del debug del software e ricerca guasti, consiglio di non usare lo stesso merker in più punti, soprattutto se questi punti sono sparsi all'interno di diverse subroutine o sezioni.

Può diventare utile l'utilizzo dello stesso merker con istruzioni tipo "case" del VB, ma alla fine corrispondono a dei salti condizionati...

Se proprio non riesci a farne a meno, cerca almeno di raggrupparli vicini!

Una cosa che sconsiglio veramente è invece l'uso della stessa uscita in più punti!

Il discorso è del tutto uguale ai merker, ma attivando le uscite in questo modo si rischia di causare danni all'automazione o a persone senza sapere esattamente da dove è generato l'errore (magari disattivi l'uscita con l'emergenza ed in realtà da un'altra parte il programma te la mantiene attiva).

... resta sempre il discorso di non utilizzare il PLC per gestioni d'emergenza ;) (il mio è un esempio di casi in cui la realizzazione sbagliata del SW in più punti possa creare seri problemi!)

Link al commento
Condividi su altri siti

Akira non mi appoggiare così palesemente altrimenti tutti capiscono che oltre ad essere un collega sei anche un mio caro amico.

Ciao a tutti.

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