Vai al contenuto
PLC Forum


TIA15 Siemens FB (Function Block) e TON


gremodic

Messaggi consigliati

Buongiorno a tutti, 

sono un novizio dei PLC Siemens. Volevo chiedere alcune info riguardo la realizzazione di FB.

 

  1. Posso usare tutte le istruzioni di base e avanzate che vedo disponibili o c'è qualche limitazione? (Ad esempio posso usare tranquillamente la funzione SCALE all'interno di una FB? io immagino di si visto che il funzionamento rimane sempre sequenziale)
  2. Quando provo ad istanziare all'interno di un FB un TON, ad esempio per ritardare un allarme (quindi ad uso interno), il software mi propono 3 scelte per il titpo di istanza del TON ("Istanza Singola", "Multi-Istanza", "Istanza del Parametro"). Quale di queste 3 soluzioni è la più cosnigliata? non sono riuscito bene a coglierne le differenze.
Link al commento
Condividi su altri siti


12 minuti fa, gremodic ha scritto:

Posso usare tutte le istruzioni di base e avanzate che vedo disponibili o c'è qualche limitazione?

No, nessuna limitazione.

 

12 minuti fa, gremodic ha scritto:

Quale di queste 3 soluzioni è la più cosnigliata? non sono riuscito bene a coglierne le differenze.

Non ce n'è una migliore. Dipende da cosa devi fare, e anche da preferenze personali.
Unica soluzione da scartare, è l'istanza singola se la FB che stai scrivendo deve essere utilizzata più volte. In questo caso, sarebbe come richiamare più volte sempre lo stesso timer.
Nel caso di FB da richiamare più volte, la soluzione più usata è la multiistanza. Anche "Istanza del parametro" andrebbe bene ma, se all'interno della tua FB utilizzi, per esempio, 10 TON, dovresti passare aalla funzione 10 diversi TON come parametro. Capirai che è piuttosto scomodo.
 

Attenzione che, purtroppo, i timer richiamati come multiistanza presentano però un grave problema: se reinizializzi il DB di istanza, se l'ingresso del TON è già alto (quindi non viene rilevato il passaggio da False a True dell'ingresso del timer), il timer potrebbe non avviarsi. Tu vedresti l'ingresso abilitato, ma il timer che non conta e che, quindi, non attiva l'uscita.
Devi sempre assicurarti che venga rilevato il fronte per avviare il timer.
Si tratta di una cosa, a mio avviso, tanto grave quanto inspiegabile. Inspiegabile perché non riesco a capire come Siemens, dopo tanti anni, non abbia ancora risolto questo problema.
Io mi sono creato una mia funzione Timer e, molto spesso, utilizzo quella al posto dei TON/TOF Siemens.

Link al commento
Condividi su altri siti

Grazie per la risposta.

 

Il FB che volevo realizzare era un semplice blocco per la gestione dell'analogica di ingresso con relativi allarmi e la possibilità di ritardarli.

 

Per cui vorrei inserire 4 TON all'interno del FB.

 

Avendo ad esempio 8 Analogiche significa che devo richiamare il blocco 8 volte per cui mi sconsigli di usare "Istanza singola" perche è come se le 8 istanze condividessero lo stesso TON giusto?

 

In quali condizioni posso avere una reinizializzazione del DB? (immagino ad un riavvio del PLC? in quel caso potrei metttere una pezza col bit di first scan?)

Link al commento
Condividi su altri siti

5 ore fa, gremodic ha scritto:

Avendo ad esempio 8 Analogiche significa che devo richiamare il blocco 8 volte per cui mi sconsigli di usare "Istanza singola" perche è come se le 8 istanze condividessero lo stesso TON giusto?

No. Se devi richiamare la tua FB 8 volte, non puoi usare i timer all'interno di questa FB come istanza singola, perché sarebbe come richiamare 8 volte sempre gli stessi timer.
Devi inserirli nella tua FB come multiistanza.
Come istanza singola dovrai quindi richiamare la tua FB che, all'interno di ogni istanza, avrà le istanze dei timer.
Ad ogni richiamo della tua FB, ovviamente, dovrai associare un diverso DB di istanza.

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