Vai al contenuto
PLC Forum


S7-300 - Fronte di salita


southofsanity

Messaggi consigliati

southofsanity

Se una condizione è vera mi attiva il fronte e qui ci siamo,

ma se spengo il plc con la condizione ancora vera e alla riaccensione è sempre vera

perchè mi devi riattivare il fronte nuovamente ?

Non lo condivido oppure o padellato qualcosa

Link al commento
Condividi su altri siti


Non lo condivido oppure o padellato qualcosa

Qualcosa hai padellato senz'altro. Lo "o" senza la "h", per esempio :) Scherzi a parte è normale che succeda quello che descrivi. Se all'accensione l'ingresso è alto questo "1" viene interpretato come fornte di salita, perchè effettivamente c'è stato un fronte di salita, essendo la memoria immagine dell'ingresso passata da "0" a "1". Se vuoi evitare l'inconveniente devi prevedere, nel blocco di inizializzazione, il reset dei fronti dopo, p.e., 100ms dal power on.

Link al commento
Condividi su altri siti

Se quello che dici è vero, southofsanity, verifica di avere usato un merker per il fronte, tra quelli ritentivi. Se non lo è, semplicemente nella configurazione della CPU aumenta l'area dei dati ritenuti, in modo da comprendere anche il merker in oggetto.

Ovviamente l'area ritentiva ha una durata limitata nel tempo, in caso di lunghi spegnimenti, quindi vedi anche di scrivere una logica capace di capire la riaccensione e non generare il secondo fronte.

Link al commento
Condividi su altri siti

Se ricordo bene l'area ritentiva non dovrebbe avere una durata limitata nel tempo. Quando la rete diventa OFF, prima dell'arresto della cpu, tutto ciò che è ritentivo è salvato in micro memmory card il cui contenuto è conservato per minimo 10 anni.

Saluti a tutti

Link al commento
Condividi su altri siti

I merker ritentivi sono dichiarati così perché mantengono lo stato acquisito nel processo al momento dello spegnimento della CPU, quindi, se a tua condizione è appoggiata ad un merker ritentivo e allo spegnimento è ancora attiva, alla ripartenza avrai una nuova condizione vera e quindi un nuovo fronte.

Viceversa se una volta acquisito il fronte ti preoccupi di resettare la condizione, vedrai che in caso di ripartenza della CPU il fronte rimane basso.

Link al commento
Condividi su altri siti

Sotto all'istruzione "P" il merker va messo, in questo caso, ritentivo. Supponiamo di fare il rilevamento del fronte di salita di E0.0 (a sinistra di "P") e di volere l'impulso sulla uscita A0.0 (a destra di "P") per visualizzare il lampo sul Led. Quando il processore esegue l'istruzione "P" nel merker ritentivo (es: M0.0) c'è lo stato che l'ingresso E0.0 aveva nella scansione precedente e così può fare il confronto.

L'istruzione "P" è possibile realizzarla in modo elementarecome si faceva nel veccio S5. Occorre realizzare 2 segmenti. Nel primo si mettono in And E0.0 e M0.0 invertito che comandano A0.0. nel seconod segmento c'è E0.0 che comanda M0.0.

Saluti

Link al commento
Condividi su altri siti

L'istruzione "P" è possibile realizzarla in modo elementare come si faceva nel veccio S5. Occorre realizzare 2 segmenti. Nel primo si mettono in And E0.0 e M0.0 invertito che comandano A0.0. nel seconod segmento c'è E0.0 che comanda M0.0.

E' proprio vero che al giorno d'oggi la grammatica è diventata meno che un'opinione. Guarda che leggendo il tuo scritto si fa fatica a capire cosa intendi, cos'è una domanda? o un'affermazione?.

Comunque per quanto concerne l'istruzione P o N credo che sia sufficientemente elementare, non devi far altro che assegnargli un indirizzo valido e questo merker si attiverà per un ciclo quando la condizione che lo precede passa da falsa a vera ( P ) o da vera a falsa ( N ).

L'unica avvertenza che bisogna rispettare è che in caso di utilizzo in una funzione con indirizzamento simbolico, la variabile deve essere assegnata all'area di In/Out.

Link al commento
Condividi su altri siti

L'unica avvertenza che bisogna rispettare è che in caso di utilizzo in una funzione con indirizzamento simbolico, la variabile deve essere assegnata all'area di In/Out.

Cosa vuol dire?

Link al commento
Condividi su altri siti

Per la generazione dei fronti di salita ove non prevista la relativa funzione (esempio S5), proprio in relazione al discorso dell'attivazione rilevando allìavvio lo stato già alto anziché la variazione da basso ad alto, c'è da dire che gli esempi di programmazione sono sempre sbagliati.

Generalmente negli esempi si trova quanto segue:

U E0.0
UN M0.0
= M0.1

U E0.0
= M0.0
Se M0.0 non è ritentivo, all'avvio con E0.0 alo verrebbe rilevato un fronte. Si può aggirare il prolema come segue:
U E0.0
U M0.0
= M0.1

UN E0.0
= M0.0

Link al commento
Condividi su altri siti

Questo è ciò che andiamo dicendo fin dall'inizio del thread.

Io però voglio chiedere a gaserma quanto ha affermato in merito al simbolico, essendo io fervo sostenitore del medesimo; ma non comprendo l'affermazione sua che avevo quotato. ???

Link al commento
Condividi su altri siti

Significa che se tu usi una funzione con indirizzamento simbolico (che anch'io apprezzo molto) non puoi assegnare il merker di "Fronte" all'area di In ma lo devi assegnare all'area In/Out.

Questo almeno è la mia esperienza con il Kop, non so dire se in Awl non ci sia questa esigenza.

Modificato: da gaserma
Link al commento
Condividi su altri siti

Intendi se lo passi come parametro ad una funzione?

Certo che, in questo caso, il parametro deve essere di IN/OUT, indipendentemente dal linguaggio usato.

Mi pare più che logico. La funzione infatti ha bisogno sia di leggere che di modificare lo stato del bit usato per generare il fronte.

Link al commento
Condividi su altri siti

Ho cercato di spiegare cosa fa e come funziona l'istruzione "P" facendo vedere come essa è realizzabile manualmente. In S7-300 ed in S7-1200 c'è la possibilità di scegliere se si vuole ancora, oppore no, l'impulsino della durata di una scansione se la rete diventa OFF e poi ON con il contatto sempre chiuso sull'ingresso: si tratta di scegliere la memoria sotto all'istruzione "P" (KOP) ritentiva o non ritentiva. In S7-200 questa possibilità non c'è.

Mi sembra che solo ragionado, passo passo come fa il PLC, sulla funzione di rilevamento realizzata manualmente, si possa capire chiaramente.

sSaluti

Link al commento
Condividi su altri siti

  • 9 years later...

Buongiorno,

 

Anche se sono messaggi molto vecchi, voglio comunicarvi la mia esperienza. premetto che si tratta di PLC s7 1500, quindi mi scuso anticipatamente se mi accodo a queti messaggi per S7 300

 

Ho avuto la stessa problematica di southofsanity, ho risolto mascherando la "falsa" transizione da 0 a 1 da memoria ritentiva a memoria di lavoro, mediante l'utilizzo del bit "FirstScan",

in questo modo la CPU riporta il bit ritentivo allo stato "pre spegnimento" di 1 e poi tutto sembra funzionare regolarmente. Per adesso sto lavorando con PLC SIM Advanced

Farò altri test con CPU fisiche.

 

Grazie a tutti

 

Sergio

Link al commento
Condividi su altri siti

Se come memoria di appoggio per il rilevamento del fronte usi una memoria ritentiva, non viene rilevato il fronte, nel passaggio in run, se il segnale è già alto.
Comunque, anche con il FirstScan va bene.

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