Vai al contenuto
PLC Forum


S7-300 - Fronte di salita


Messaggi consigliati

southofsanity
Inserito:

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


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

Inserita:

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.

Inserita:

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

Inserita:

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.

Inserita:

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

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

Inserita:
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?

Inserita:

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

Inserita:

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

Inserita: (modificato)

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
Inserita:

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.

Inserita:

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

  • 9 years later...
Inserita:

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

Inserita:

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.

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