Vai al contenuto
PLC Forum


Fronti di salita sullo stesso merker o uscita


Lucky67

Messaggi consigliati

Purtroppo non ho un plc sottomano e non posso provare e quindi vorrei fare una domanda:

Avendo un ramo con più ingressi programmati come fronti di salita in OR che comandano un'uscita, mi chiedo:

Un ingresso va alto e l'uscita reagisce al fronte andando ON per per un ciclo. Supponiamo che l'ingresso rimanga alto. L'uscita chiaramente dopo l'impulso del fronte in ingresso rimarrà bassa. Se un altro ingresso (in OR) va alto (con l'ingresso precedente in ON fisso), l'uscita reagirà al fronte non curandosi dell'ingresso stazionario?

 

Link al commento
Condividi su altri siti


dina_supertramp

Ciao,

L'RLO in uscita dal parallelo di fronti sarà vero se almeno uno dei fronti è verificato, indipendentemente dagli altri.

Quando si alza l'altro ingresso? 
Nello stesso ciclo di scansione?...E' questo il punto.

Se si alzano in sequenza, ma nello stesso ciclo di scansione, l'uscita la vedrai sempre alta.
Se si alzano in sequenza ma in cicli di scansione diversi, l'uscita sarà spenta dalla fine del ciclo del primo fronte verificato, fino a che non viene verificato il successivo fronte nel successivo ciclo.

Modificato: da dina_supertramp
Link al commento
Condividi su altri siti

16 minuti fa, dina_supertramp ha scritto:

Nello stesso ciclo di scansione?...E' questo il punto.

NO in cicli diversi

 

17 minuti fa, dina_supertramp ha scritto:

Se si alzano in sequenza ma in cicli di scansione diversi, l'uscita sarà spenta dalla fine del ciclo del primo fronte verificato, fino a che non viene verificato il successivo fronte nel successivo ciclo.

Anche se un ingresso rimane sempre alto dopo aver "esaurito" il suo fronte?

Link al commento
Condividi su altri siti

36 minuti fa, 84paolo ha scritto:

se rimane alto il merker di appoggio non si resetta e quindi l'altro fronte non va

Quindi, se ogni volta che viene azionata l'uscita per il suo ciclo di scansione io resetto tutti i merker di appoggio coinvolti nel ramo il fronte successivo azionerà l'uscita anche se un ingresso è attivo stabilmente?

Link al commento
Condividi su altri siti

se il parallelo lo fai solo con gli ingressi e usi una funzione tipo p_trig con un solo merker di appoggio non funziona. se il parallelo lo fai con ogni ingresso il suo p_trig e tutti appoggi diversi funziona senza resettare niente. come hai detto tu se resetti l'appoggio subito la scansione dopo se l'input é alto ti fa un altro fronte. posta un esempio così lo vediamo

Modificato: da 84paolo
Link al commento
Condividi su altri siti

dina_supertramp

Ciao,

In base alla logica che hai allegato vale quello che ti ho scritto. Hai un parallelo di tre fronti.
Avrai l'uscita alta per tutto il ciclo di scansione in cui almeno uno di essi è verificato, se uno degli ingressi interrogati dal fronte resta alto l'uscita non si alza, perchè la stai comandando solo con fronti, senza interrogazioni dirette dell'ingresso. 

In parole povere: se l'ingresso resta alto, l'RLO in uscita dal fronte sarà falso  finito il ciclo di scansione in cui il passaggio da 0 a 1 dell'ingresso è verificato, appunto perchè è un fronte, deve verificare il passaggio da 0 a 1 o viceversa, non verificare che l'ingresso resti alto.

Focalizzati su questo concetto, il RLO in uscita dal fronte è verificato solo per il ciclo di scansione in cui il fronte viene rilevato.

Solo una cosa: su qualsiasi manuale Siemens, anche quelli dell'S7 di vent'anni fa viene detto (e motivato il perchè) che i merker dei fronti non vanno mai richiamati in nessun punto del codice tranne che per il fronte stesso. Togli il reset di quei merker.

Per i merker di fronte: Usare aree statiche dei DB per dichiararli (consiglio mio, fatti un DB di tanti bool dichiarati static che userai solo per i merker di fronte.
Non richiamare mai il merker di fronte (ne in letture ne in scrittura) tranne che per il fronte stesso.

FP.PNG

Modificato: da dina_supertramp
Link al commento
Condividi su altri siti

Alla fine la curiosità ha prevalso sulla pigrizia (per fortuna): ho cercato una cpu l'ho collegata e ho messo dentro una rete simile a quella postata collegata a un counter per vedere se l'uscita dava un clock per fare avanzare il counter stesso. Ho messo due ingressi col fronte e poi uno l'ho messo ON fisso. Lavorando col secondo, su ogni front il counter avanzava ed è quello che mi serve.

 

1 ora fa, dina_supertramp ha scritto:

Solo una cosa: su qualsiasi manuale Siemens, anche quelli dell'S7 di vent'anni fa viene detto (e motivato il perchè) che i merker dei fronti non vanno mai richiamati in nessun punto del codice tranne che per il fronte stesso

 

Da qui, una mia vecchia "querelle" coi fronti di salita/discesa siemens...mi dite cosa  aspetta siemens a togliere quel bit di appoggio che, a mia conoscenza, non usa nessuno? Con il 200 era facilissimo e non c'era (il sotware non era tedesco) mentre col tia portal è stato fatto ancora un paso indietro!!

 

In ogni caso grazie a tutti per la pazienza e per il supporto.

 

 

Link al commento
Condividi su altri siti

dina_supertramp
15 minuti fa, Lucky67 ha scritto:

Alla fine la curiosità ha prevalso sulla pigrizia (per fortuna): ho cercato una cpu l'ho collegata e ho messo dentro una rete simile a quella postata collegata a un counter per vedere se l'uscita dava un clock per fare avanzare il counter stesso. Ho messo due ingressi col fronte e poi uno l'ho messo ON fisso. Lavorando col secondo, su ogni front il counter avanzava ed è quello che mi serve.

Si, proprio così !

 

Quote

Da qui, una mia vecchia "querelle" coi fronti di salita/discesa siemens...mi dite cosa  aspetta siemens a togliere quel bit di appoggio che, a mia conoscenza, non usa nessuno? Con il 200 era facilissimo e non c'era (il sotware non era tedesco) mentre col tia portal è stato fatto ancora un paso indietro!!

Ma vallo a sapere, sono filosofise. Le inc***** che mi sono preso perchè scrivevo il merker di fronte non te le dico.
(evitabilissime leggendo i manuali, cosa che dico la verità, quando inizai a programmare non facevo mai, andavo di metodo distruttivo, mentre ora prima leggo la teoria per poi applicarla e testarla...). Comunque col tuo DB statico dedicato solo ai merker di fronte non sbagli!


Altro metodo: creati il tuo FB "Trig". Quando programmo in testo faccio cosi, non uso la funzione di sistema

Link al commento
Condividi su altri siti

3 ore fa, dina_supertramp ha scritto:

se uno degli ingressi interrogati dal fronte resta alto l'uscita non si alza, perchè la stai comandando solo con fronti

Forse sto interpretando male io.

Nell'esempio, con il passaggio da FALSE a TRUE di "pippo", "topolino" o "pluto" avremo "paperino" TRUE per un ciclo.
Se "pippo" rimane TRUE, e poi "topolino" passa da FALSE a TRUE, viene rilevato il fronte, e "paperino" sarà nuovamente TRUE per un ciclo.

 

 

Tutto quello che c'è nel segmento 2 dell'esempio, va assolutamente tolto.

Modificato: da batta
Link al commento
Condividi su altri siti

6 minuti fa, batta ha scritto:

Forse sto interpretando male io.

Nell'esempio, con il passaggio da FALSE a TRUE di "pippo", "topolino" o "pluto" avremo "paperino" TRUE per un ciclo.
Se "pippo" rimane TRUE, e poi "topolino" passa da FALSE a TRUE, viene rilevato il fronte, e "paperino" sarà nuovamente TRUE per un ciclo.

 

 

Tutto quello che c'è nel segmento 2 dell'esempio, va assolutamente tolto.

 

Si, probabilmente ho interpretato male io la frase di "paolo84" e pensavo di dover resettare i flag di appoggio. Diciamo che ho costruito un casino per una ca...ta. Questo perchè su alcuni plc su "rami di fronti di salita" in parallelo, se un ramo rimane impegnato non vengono più rilevati i fronti e quindi volevo capire siemens come si comportava. Adesso ho compreso corrobarato anche da una prova "fisica". Grazie Batta

Link al commento
Condividi su altri siti

5 ore fa, Lucky67 ha scritto:

Questo perchè su alcuni plc su "rami di fronti di salita" in parallelo, se un ramo rimane impegnato non vengono più rilevati i fronti e quindi volevo capire siemens come si comportava.

Su qualsiasi PLC se si mettono i fronti di salita in parallelo, ogni singolo fronte attiva l'uscita.
Diverso se si mettono in parallelo più contatti, e si rileva il fronte dopo, come nei due esempi che seguono:

 

image.png.f7526d2150b1a19d17a78d9e67ebcce2.png

 

image.png.45bfdac976afe75f66b33bfc88e8a901.png

Link al commento
Condividi su altri siti

30 minuti fa, batta ha scritto:

Su qualsiasi PLC se si mettono i fronti di salita in parallelo, ogni singolo fronte attiva l'uscita.

TI assicuro che per alcuni plc non è così e te lo dico con sicurezza avendoci sbattuto la testa personalmente...è per questo che mi era venuto il dubbio.

Link al commento
Condividi su altri siti

C'è da dire che con questa configurazione Paperino "fa un saltino" ad ogni fronte di almeno uno degli ingressi, a condizione che i singoli fronti degli ingressi siano distanziati di almeno due cicli di scansione. Se i fronti sono più di uno nello stesso ciclo, o compaiono in sequenza nei cicli di scansione immediatamente seguenti, Paperino fa un salto solo, o un salto un po' più lungo. Quindi se lo scopo è sapere se arriva almeno un fronte va bene, ma se lo scopo è contare i fronti, anche se contemporanei o in sequenza un ciclo dopo l'altro, serve un'altra strategia.

Link al commento
Condividi su altri siti

11 ore fa, Claudio F ha scritto:

se lo scopo è sapere se arriva almeno un fronte va bene

 

E' questo lo scopo. comunque grazie della precisazione che era dovuta..

 

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