Vai al contenuto
PLC Forum


Fronte di salita e fronte di discesa


salernozz

Messaggi consigliati

Salve.....

Lo so....

è la seconda domanda che voglio porvi oggi... quindi decidete se darmi retta o no (che cosa palese, bravo salernozz!)

 

Partiamo dal presupposto che non so bene come girarmi su quest' argomento, tranne il fatto di sapere cosa sono e a cosa servono e quando sono attivi

__________________________________________________________________________________________________________________________

 

Ho da comandare un processo in cui ho la necessità di interrogare fronti di salita e di discesa.. il problema è che spesso i fronti sono degli stessi finecorsa.. per esempio:

 

In una parte del programma interrogo I0.0 come fronte di salita.. e salvo l' ultimo stato ricevuto in una ''memoria del Fronte'' che ho dichiarato in un DB

Mettiamo caso che ancora, in un altra parte del programma, dovessi interrogare un altra volta il fronte di quel I0.0, ma in questo caso è un fronte negativo..

 

___________________________________________________________________________________________________________________________

 

A questo punto mi chiedo.. ma le memorie dei fronti, devono essere le stesse?

 

E nel caso nel programma avessi interrogato un altra volta il fronte positivo? Magari nel segmento 1 ha già salvato in memoria che è andato ad 1 e nel segmento 2, cosa fa e come si comporta?

 

____________________________________________________________________________________________________________________________

 

Grazie mille (parte 28382541594) per l' aiuto, capisco che come argomento non è proprio piccolo piccolo

 

 

 

 

 

Salernozz

Modificato: da salernozz
Link al commento
Condividi su altri siti


Forse non ho ben capito il problema, ma se parli della seconda variabile che va messa sotto il contatto che legge il fronte è solo una variabile di appoggio, che serve al programma per distinguere il fronte. Credo sia meglio per evitare problemi che ogni contatto abbia la sua variabile di appoggio

Link al commento
Condividi su altri siti

1 ora fa, salernozz scrisse:

ma le memorie dei fronti, devono essere le stesse?

Assolutamente no!!!
Per rilevare il fronte di salita, ti devi appoggiare ad una variabile. Per rilevare il fronte di discesa (anche se è dello stesso ingresso) ti devi assolutamente appoggiare ad una variabile diversa.

Link al commento
Condividi su altri siti

Come vedi ci sono diverse istruzioni per verificare i fronti, sia di un singolo operando che di un fronte derivante da una serie di operandi, insomma c'è da capire di cosa hai bisogno, comunque sia ogni istruzione di fronte di singolo operando ha sempre bisogno di una memoria di appoggio per la verifica del fronte, perciò se la vuoi ripetere l'istruzione c'è bisogno sempre di una nuova memoria, vero è che però che se appoggi il fronte in uscita a un'altra memoria non c'è bisogno ogni volta di ripetere l'istruzione

Link al commento
Condividi su altri siti

Provo a fare una spiegazione.

Innanzitutto lo stato degli ingressi viene memorizzato nell'IPI (immagine processo ingressi), che verrà utilizzata per tutta la scansione del programma. Se un ingresso cambia di stato durante l'elaborazione, non ne viene tenuto conto fino al ciclo di scansione successivo. Ci sono dei casi particolari per interrogare istantaneamente le periferie, ma per ora tralasciamoli.

Per rilevare un fronte di salita o di discesa il PLC ha bisogno di una memoria di appoggio dove mettere lo stato che il segnale aveva durante la scansione precedente, questa memoria di appoggio può essere anche un bit di una DB, non necessariamente un merker.

Questa memoria non la devi usare per fare altre cose.

Però puoi appoggiare il fronte su un'ulteriore memoria (o DBX).

Esempio:

E0.0   M0.0    M0.1

--||----(P.Trig)----()-

 

Quando ci sarà un fronte positivo di E0.0 L'istruzione P.Trig alzerà M0.1 che da quel momento rimarrà a 1 fino a che la successiva scansione del programma elaborerà nuovamente il segmento rappresentato sopra. A questo punto se E0.0 è ancora a 1 M0.1 andrà a zero perché questo giro non vi è stato fronte di salita. Lo stesso vale se E0.0 si è spento.

Tieni presente che M0.1 lo potrai usare come interrogazione del fronte per tutto il programma elaborato da quel segmento in poi.

 

Se nel programma invece memorizzi qualcos'altro in M0.0 mandi all'aria il funzionamento del fronte.

 

Tieni conto che P.trig restituisce 1 per il fronte di quello che si trova in ingresso, se oltre a E0.0 hai in serie altra roba, Ptrig rileverà il fronte solo quando tutta la serie sarà soddisfatta.

 

Orvuà

 

 

Link al commento
Condividi su altri siti

@Cialtrone capito, non ero a conoscenza di P.Trig ma come vedo e come ho capito dalla tua spiegazione è un altro modo per usare il fronte di salita

Grazie mille per avermi spiegato questa cosina che per me era nuova, proverò ad usarla se necessario

 

@batta Va bene, ora provo ad appoggiarmi ad una variabile che mi dichiaro in un DB

 

@leleviola dovevo utilizzare un ingresso (finecorsa) con: in un punto interrogato come fronte di salita e in un altro interrogato come fronte di discesa..

 

 

a questo punto provo a dichiarare due bit in un DB, uno per il fronte positivo e l' altro per quello negativo, così i due fronti li uso solo in un punto del mio programma

 

Grazie per i consigli

 

Link al commento
Condividi su altri siti

Insomma la gestione dei fronti in Siemens è sempre un po' una rottura proprio per la necessità di di appoggiare tutto a altre memorie, con altri prodotti invece non hai tutte ste menate perchè inserisci direttamente l'istruzione ---|^|--- frointe di salita con abbinato l'operando di cui devi verificare il fronte ed è tutto fatto e puoi moltiplicare l'istruzione fronte quante volte vuoi, insomma che in Siemens nel 2019 non si siano ancora accorti della noiosa abitudine e vi abbiano posto rimedio è abbastanza noioso, almeno per me, sperimao mi ascoltino....

Modificato: da leleviola
Link al commento
Condividi su altri siti

1 minuto fa, leleviola scrisse:

Insomma la gestione dei fronti in Siemens è sempre un po' una rottura

Concordo, poi dipende da quale ambiente provieni, io fino al mese scorso usavo ancora S5 dove per interrogare un fronte dovevi fare un blocco SR, roba da matti.

Consiglio a Salernozz di provare a cercare questo vecchio metodo (tutt'ora utilizzabile) per capire meglio il meccanismo dei fronti... e la pazienza di chi lo ha preceduto...:thumb_yello:

Link al commento
Condividi su altri siti

6 minuti fa, leleviola scrisse:

insomma che in Siemens nel 2019 non si siano ancora accorti della noiosa abitudine e vi abbiano posto rimedio è abbastanza noioso, almeno per me, sperimao mi ascoltino....

Se vogliamo muovere critiche a Siemens abbiamo mille motivi, ma questo non lo considero proprio.

 

Link al commento
Condividi su altri siti

5 minuti fa, salernozz scrisse:

ma si può fare presente di questa cosa a siemens vero? 

Come no, se ti va bene non ti danno retta, se ti va male rilasciano il TIA16 da 200.000GB dove i fronti sono una figata, ma tutto il resto un macello :wallbash:

Link al commento
Condividi su altri siti

4 minuti fa, Cialtrone scrisse:

Consiglio a Salernozz di provare a cercare questo vecchio metodo (tutt'ora utilizzabile) per capire meglio il meccanismo dei fronti... e la pazienza di chi lo ha preceduto...:thumb_yello:

SR, va bene, ci proverò

 

 

Proprio adesso, Cialtrone scrisse:

Come no, se ti va bene non ti danno retta, se ti va male rilasciano il TIA16 da 200.000GB dove i fronti sono una figata, ma tutto il resto un macello :wallbash:

:blink:

Link al commento
Condividi su altri siti

Per evitare storie si può rilevare il fronte in un punto solo del programma (tipicamente all'inizio, se si rileva alla fine pippo sarà in ritardo di una scansione) ed appoggiarlo ad un bit che poi si può interrogare quante volte si vuole. 

 

Fronte1.thumb.png.11070b996f0ec198bb11333eb66f73da.png

 

 

 

 

Modificato: da step-80
Link al commento
Condividi su altri siti

9 minuti fa, Cialtrone scrisse:

Come no, se ti va bene non ti danno retta, se ti va male rilasciano il TIA16 da 200.000GB dove i fronti sono una figata, ma tutto il resto un macello 

Perché sempre tutto questo pessimismo? Come già detto, ci sono mille motivi per cui lamentarsi, ma ad ogni nuova versione ci sono sempre stati miglioramenti.
Perché va così di moda lamentarsi sempre, anche basandosi su bugie come quella che "tutto il resto è un macello"?

Link al commento
Condividi su altri siti

12 minuti fa, step-80 scrisse:

Per evitare storie si può rilevare il fronte in un punto solo del programma (tipicamente all'inizio, se si rileva alla fine pippo sarà in ritardo di una scansione) ed appoggiarlo ad un bit che poi si può interrogare quante volte si vuole. 

 

 

Grazie step, ho provato ora ora! :thumb_yello:

 

6 minuti fa, batta scrisse:

Perché va così di moda lamentarsi sempre, anche basandosi su bugie come quella che "tutto il resto è un macello"?

:wacko: ora viene fuori un putiferio

Link al commento
Condividi su altri siti

  • 2 weeks later...
Cesare Nicola
il 26/9/2019 at 14:20 , leleviola scrisse:

nsomma la gestione dei fronti in Siemens è sempre un po' una rottura proprio per la necessità di di appoggiare tutto a altre memorie, con altri prodotti invece non hai tutte ste menate perchè inserisci direttamente l'istruzione ---|^|--- frointe di salita con abbinato l'operando di cui devi verificare il fronte ed è tutto fatto e puoi moltiplicare l'istruzione fronte quante volte vuoi,

E' vero, anche a me piace poco però basta saperlo e non è una tragedia.

Io spesso faccio così, sfruttando le potenzialità dell'ingiustamente criticato Tia; creo una tabella di variabili che chiamo "Fronti" e la lascio vuota. Quando mi serve un fronte, inizio a scrivere il nome che gli voglio dare, che per me è "FPx" dove x è un numero: inizio a scrivere "Fp..." e l'auto-completamento di Tia mi propone tutti gli "FP" già utilizzati; ne definisco al volo da lì dove sono, senza aprire la tabella variabili, uno nuovo col numero successivo all'ultimo che vedo e il gioco è fatto.
Un altro sistema, che non uso, è dare al bit di memoria del fronte lo stesso nome del bit di cui si rileva il fronte, con un suffisso o prefisso. Cioè, la memoria del fronte di "Pulsante_start" potrà essere "FP_Pulsante_start" o "Pulsante_start_FP"; anche in questo caso si è sicuri di non duplicare le memorie. Però, se domani "Pulsante_start" diventa "Pulsante_avvio", crei un disallineamento tra simbolo del pulsante e simbolo della memoria; disallineamento innocuo ma per me fastidioso.

Link al commento
Condividi su altri siti

il 26/9/2019 at 14:29 , batta scrisse:

Se vogliamo muovere critiche a Siemens abbiamo mille motivi, ma questo non lo considero proprio.

 

 

E' chiaro che si fa di necessità virtù però permettimi che nel 2019 e, soprattutto dove un sistema di sviluppo è stato progettato ex-novo, avere ancora dei rimasugli anni 80 mi pare quanto meno opinabile (anche perchè gli bastava copiare quanto già proponevano con microwin per il 200).

Link al commento
Condividi su altri siti

  • 2 months later...

Riapro un attimo la discussione per vedere se ho le idee chiare.

Ci sono parecchi modi per utilizzare un fronte di salita o discesa. L'importante è non ripetere le variabili di memoria associate al bit ingresso/uscita più di una volta nel ciclo.

 

1)Se dovessimo attivare un'uscita con un fronte (collegato per esempio ad un proximity) si utilizza una funzione Fronte (P o N) associata o ad un MERKER o ad un DB.

2)Se due segmenti sono analoghi (per esempio il nostro proximity attiva e disattiva CONTEMPORANEAMENTE un'uscita) si può usare la STESSA memoria per i due segmenti; questo appunto perché i due segmenti sono simili (e simultanei) e i fronti non si ostacolano.

3)Si può usare o un merker o un db per gestire le memorie dei fronti, oppure inviando l'uscita del fronte ad un merker si può utilizzare quest'ultimo come richiamo di tanti segmenti senza compromettere il fronte stesso......(questa non ne sono sicuro).

 

Spero di essere stato chiaro e non avere fatto confusione.

Link al commento
Condividi su altri siti

Non si capisce bene cosa vuoi sapere, spiegati meglio, la stessa memoria come dici al punto 2) non si può usare per due segmenti diversi con due istruzione fronte separate, puoi usare la medesima uscita risultato di un istruzione fronte per usarla in più punti nel programma, questo si per avere un unica memora che certifichi la veridicità dell'istruzione fronte in questione

Link al commento
Condividi su altri siti

  • 2 weeks later...
Il 6/1/2020 alle 23:48 , leleviola ha scritto:

Non si capisce bene cosa vuoi sapere, spiegati meglio, la stessa memoria come dici al punto 2) non si può usare per due segmenti diversi con due istruzione fronte separate, puoi usare la medesima uscita risultato di un istruzione fronte per usarla in più punti nel programma, questo si per avere un unica memora che certifichi la veridicità dell'istruzione fronte in questione

si in pratica dici di usare UN fronte per due istruzioni (due bobine per esempio)...per quanto riguarda i punti 1 e 3?

 

 

per il punto due vedi i 2 primi segmenti

Screenshot_20200118-175120.jpg

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