Vai al contenuto
PLC Forum


Tia V15 timer si bloccano


villa31

Messaggi consigliati

Buongiorno, ho iniziato a usare la V15 ho riscontrato parecchi problemi con i timer TON all'avvio della CPU se il timer è attivo, si blocca... Avete riscontrato problemi simili? 

Link al commento
Condividi su altri siti


I Timer mi hanno sempre dato problemi. La prima cosa da fare, è aggiornare il firmware all'ultima versione (che dovrebbe essere 2.6.1).
Comunque, inspiegabilmente, i Timer Siemens, per avviarsi, vogliono vedere un fronte di salita, e non semplicemente lo stato alto sull'ingresso, e questo, a volte, causa problemi.
Per esempio, se il DB del timer viene reinizializzato (magari perché è richiamato come multiistanza, o perché all'interno di un DB dedicato ai timer che viene modificato), il timer non si avvia se lo stato dell'ingresso è già alto.
Io mi trovo bene a lavorare con i PLC Siemens, ma che i tedeschi non siano capaci, dopo anni, di far funzionare correttamente un timer, trovo sia una cosa a dir poco vergognosa.
Per risolvere questi problemi con i timer, mi sono creato una mia funzione, ed utilizzo i timer Siemens solo in casi molto rari.

Link al commento
Condividi su altri siti

Operational Amplifier

Ho anche riscontrato che se dichiari un timer e non dichiari la sua uscita Q nel programma il Timer non Funziona...🙄 

Link al commento
Condividi su altri siti

1 ora fa, Adr1 scrisse:

aggiungi un bit di first scan prima del timer, mi sembra che avevamo risolto così.

Sì, in questo modo si risolve, ma è comunque un ripiego per risolvere il funzionamento zoppicante di un banalissimo timer.

 

 

1 ora fa, Operational Amplifier scrisse:

Ho anche riscontrato che se dichiari un timer e non dichiari la sua uscita Q nel programma il Timer non Funziona...

Questo non rientra nei "malfunzionamenti", è chiaramente specificato nella guida. E poi, se non utilizzo l'uscita, cosa richiamo il timer a fare?

 

Anche il fatto che serva il fronte sull'ingresso è descritto nella guida. Però di solito non ci si aspetta che un timer non venga avviato.
Ma, la cosa più grave, è che il timer rischia di non ripartire se viene reinizializzato il DB di istanza dove viene dichiarato il timer.

Modifichi una FB dove c'erano dichiarate multiistanze dei timer, e ti trovi con le uscite dei timer basse e i timer che non contano se non viene visto un fronte sull'ingresso.
Definire questa cosa scandalosa, è solo per voler essere teneri.

Link al commento
Condividi su altri siti

Operational Amplifier
Quote
3 ore fa, batta scrisse:

Questo non rientra nei "malfunzionamenti", è chiaramente specificato nella guida. E poi, se non utilizzo l'uscita, cosa richiamo il timer a fare?

 

Può anche essere specificato nella guida ma mi aspetto che se creo un'istanza del Timer ed imposto a TRUE l'ingresso il Timer conti a prescindere dall'utilizzo dell'uscita che è lo stadio finale.

Modificato: da Operational Amplifier
Link al commento
Condividi su altri siti

Anche noi cerchiamo di usare il meno possibile i timer.

Ci siamo scritti una FC (Delay ON e Delay OFF) che utilizza dei contatori con il tempo ciclo PLC per incrementare il conteggio.

Forse non sarà precisissima, ma per noi va benissimo.

 

Ciao

Link al commento
Condividi su altri siti

3 ore fa, cdc scrisse:

Ci siamo scritti una FC (Delay ON e Delay OFF) che utilizza dei contatori con il tempo ciclo PLC per incrementare il conteggio.

Stessa cosa che ho fatto io.
Rilevo il tempo di scansione con TIME_TCK, scarto valori non validi quando TIME_TCK va in overflow (ogni 2147483647 ms), e devo dire che la precisione mi pare assolutamente sovrapponibile a quella dei timer di sistema.
Ho inserito anche la possibilità di congelare il conteggio, e creato anche una funzione con tempi differenti per il ritardo della commutazione da off a on e da on a off.
Questa la uso spesso per filtrare segnali da fotocellule o da sensori.

Link al commento
Condividi su altri siti

Ciao,

onestamente non capisco il problema ...

Creo sempre una variabile "PLC in run" all'avvio della scansione della CPU, che mi serve anche per altro, ed eventualmente taglio gli ingressi dei timer che utilizzo immediatamente all'avvio con quel bit, ben pochi a dire il vero; la maggior parte degli altri timer si avviano con le sicurezze abilitate, quindi il problema non l'ho mai avuto.

Per il resto penso che siamo noi utilizzatori a doverci adattare al funzionamento delle varie istruzioni e non viceversa; spesso si smadonna come pochi per far funzionare una routine, poi si apre il manuale ed è tutto lì', nero su bianco.

Proprio ieri mi è capitato che non si avviava un timer all'interno di una FB, poi, dopo alcuni minuti di "imbarazzo", ho visto che nelll'altra esecuzione dello stesso FB avevo usato lo stesso DB di istanza ...

Link al commento
Condividi su altri siti

8 ore fa, drugo66 scrisse:

penso che siamo noi utilizzatori a doverci adattare al funzionamento delle varie istruzioni e non viceversa

Sì, ma le istruzioni devono funzionare bene.
Immagina solo di dover ritardare il segnale di un sensore, quindi con condizioni non legate a sicurezze o precedenti comandi di marcia.
Accendi il PLC. Il segnale del sensore è alto. Il timer non conta, e l'uscita del timer rimane bassa.
Ok, lo sai, e metti un bit di prima scansione sull'ingresso del timer. Già parliamo però di una pezza, non della vera soluzione del problema.

Ma, come spiegato, ancora più grave: fai una FB; dentro ci metti, come multiistanza, uno o più timer; fai una modifica alle variabili della FB; trasferisci la modifica, ed il DB di istanza viene reinizializzato; se ci sono timer che avevano già completato il conteggio e con l'ingresso già alto, dopo la modifica ti troverai con il timer che non conta e l'uscita del timer bassa.
Non riesco a pensare a questo come "normale comportamento della funzione Timer", al quale noi ci dovremmo adattare. Per me si tratta di un comportamento anomalo della funzione Timer, che i tedeschi dovrebbero aver già corretto da anni, e che invece continuiamo a trascinarci dietro.
Sul Forum Siemens ti consigliano di non dichiarare i timer come multiistanza, ma di creare una struttura di timer da dichiarare come IN/OUT, ed appoggiare quindi i timer ad un DB esterno alla funzione. Anche questa però è sempre una pezza, non il giusto modo di programmare. E, se modifichi la struttura dei timer, e quindi reinizializzi il DB dove sono dichiarati i timer, il problema, comunque, si ripresenta.
Drugo, tu sai che io lavoro molto volentieri con Siemens, ma questa dei Timer è una stronzata che non trova scusanti.

Link al commento
Condividi su altri siti

Ci sono almeno due motivi:

1 - non rispecchiano il linguaggio standard. Ci sono ancora più che altro per compatibilità con i vecchi programmi.

2 - non si possono usare come multiistanza. Per utilizzarli in una FB da richiamare più volte, dovresti dichiararli uno per uno come IN/OUT.

Link al commento
Condividi su altri siti

michele.berlese

Se si usano FB TON o TOF è necessario porre attenzione, oltre alla questione del fronte, al valore del preset. Se il PT è a zero, l'uscita Q rimane a zero in quanto PT a zero viene interpretato come init del timer. Non aspettatevi che con PT = 0 ms, Q = IN. 

Link al commento
Condividi su altri siti

  • 1 month later...
il 21/7/2019 at 08:51 , drugo66 scrisse:

Ciao,

onestamente non capisco il problema ...

Creo sempre una variabile "PLC in run" all'avvio della scansione della CPU, che mi serve anche per altro, ed eventualmente taglio gli ingressi dei timer che utilizzo immediatamente all'avvio con quel bit, ben pochi a dire il vero; la maggior parte degli altri timer si avviano con le sicurezze abilitate, quindi il problema non l'ho mai avuto.

Per il resto penso che siamo noi utilizzatori a doverci adattare al funzionamento delle varie istruzioni e non viceversa; spesso si smadonna come pochi per far funzionare una routine, poi si apre il manuale ed è tutto lì', nero su bianco.

Proprio ieri mi è capitato che non si avviava un timer all'interno di una FB, poi, dopo alcuni minuti di "imbarazzo", ho visto che nelll'altra esecuzione dello stesso FB avevo usato lo stesso DB di istanza ...

Si ci dobbiamo adattare, ma è anche vero che il funzionamento di un timer deve essere una cosa standard... Inoltre il ton sulla v14 funzionava bene 

Link al commento
Condividi su altri siti

Nicola Carlotto

Tante volte alle prime armi si tende a creare logiche ladder copiando il timer ton ed incollandoli   su vari rami del programma, per poi vedere che non si attivano.

Lo sbaglio sta' proprio qua copiando ed incollando senza creare un nuovo timer.

ciao

Link al commento
Condividi su altri siti

Nicola, hai ragione, è l'errore più classico.

Ma ha anche ragione Batta: fino al mio post precedente non mi era mai capitato, ma, guarda i casi della vita, mi è successo proprio in settimana; meno male che mi sono ricordato della sua risposta e sono riuscito a porvi rimedio senza ammattire più di tanto.

Quindi, grazie grande Batta.

Link al commento
Condividi su altri siti

Lavoro con SIemens e con altri PLC da una vita (da S5 in poi ..) ma questa dei timer su TIA non avevo ancora avuto modo di sperimentarla.

Forse è per questo motivo che in ditte come la IMA (dove ho lavorato di recente) i software su PLC Siemens con TIA portal utilizzano come timer semplici funzioni scritte in SCL

e richiamati da un OB con interrupt a tempo.

 

.. se è così allora dire che con TIA  Siemens ha fatto 2 passi avanti e 3 indietro.. rispetto al ad altro costruttori di PLC.

E' inammissibile che la struttura base di un PLC presenti tali problemi ...

 

.. personalmente sarei un po stanco di utilizzare Siemens e soprattutto TIA portal da un po di tempo 

Speriamo che si accorgano di quanta gente si lamenta e risolvano tanti problemi su questo  TIA portal.

 

 

Link al commento
Condividi su altri siti

7 ore fa, frussosw scrisse:

.. se è così allora dire che con TIA  Siemens ha fatto 2 passi avanti e 3 indietro.. rispetto al ad altro costruttori di PLC.

Adesso non esageriamo. Come già detto, trovo il problema dei timer una cosa scandalosa, ma dire che ha fatto passi indietro, non ci sta proprio.
Anche perché sono abbastanza sicuro che questo problema non sia del TIA V15, e nemmeno delle CPU 1200/1500, ma era presente già nel S7-300.
Il fatto è che, con S7-300, molto raramente si usavano le FB TON/TOF.
Cosa che, in un certo senso, rende il fatto ancora più scandaloso: in oltre 20 anni i tedeschi non hanno ancora messo a punto una funzione Timer come si deve.
poi, comunque, il TIA ha molti altri pregi.

 

7 ore fa, frussosw scrisse:

Speriamo che si accorgano di quanta gente si lamenta e risolvano tanti problemi su questo  TIA portal.

Forse perché non sai quanti si lamentano anche degli altri sistemi di sviluppo.

Link al commento
Condividi su altri siti

No non hanno fatto passi indietro ma è davvero scandaloso, meglio farsi timer con contatore di clock, dopo 40 anni dai primi PG è da volarli dalla finestra,

io non tollero situazioni del genere, con tutto quello che fanno pagare una licenza, che vi pongano rimedio altrimenti qualcuno la chiede gratis...

Modificato: da leleviola
Link al commento
Condividi su altri siti

il 19/7/2019 at 17:25 , batta scrisse:

Questo non rientra nei "malfunzionamenti", è chiaramente specificato nella guida. E poi, se non utilizzo l'uscita, cosa richiamo il timer a fare?

Credo si intenda con "non dichiarare l'uscita" il non collegarla direttamente al timer, ma utilizzarla altrove puntando a "NomeTimer.Q". Cioè, così:
Timer.png.b6fc4627d785e04c2e71111fef0881e1.png

 

E' capitato, ma non sempre, anzi raramente, e senza che io abbia capito il perché, che senza uscita "attaccata", il timer non funzioni; peccato, perché personalmente preferisco accedere all'uscita "Q".

Link al commento
Condividi su altri siti

7 minuti fa, Cesare Nicola scrisse:

E' capitato, ma non sempre, anzi raramente, e senza che io abbia capito il perché, che senza uscita "attaccata", il timer non funzioni; peccato, perché personalmente preferisco accedere all'uscita "Q".

lo preferisco anch'io, anche perchè saresti obbligato a crearti un ulteriore uscita attaccata all'uscita del timer per poi utilizzare i contatti della nuova uscita per utilizzare la funzione di temporizzazione, mi sembra più logico fare infatti come dici tu e da quando in quando non è possibile fare ciò su qualsiasi altra unità programmabile? Non voglio aggiungere altro altrimenti divento 😬

Link al commento
Condividi su altri siti

51 minuti fa, leleviola scrisse:

saresti obbligato a crearti un ulteriore uscita attaccata all'uscita del timer per poi utilizzare i contatti della nuova uscita per utilizzare la funzione di temporizzazione

L'escamotage potrebbe essere dedicare un merker da attaccare a tutti i timer, uno per tutti, con un simbolo tipo "merker che non serve a nulla" o "che ti venisse un accidente". Quel merker non lo usi mai e continui col "NomeTimer.Q". Brutto, ma dovrebbe funzionare.

Link al commento
Condividi su altri siti

6 minuti fa, acquaman scrisse:

Funzionano entrambi i casi senza distinzione.

 

Mah, una volta ricordo di aver avuto qualche problema con la prima soluzione, senza essere riuscito a capire esattamente di cosa si trattasse (soluzione che sto continuando ad usare, comunque). Il titolo del segmento che ho dato "NON FUNZIONA", è fuorviante; funziona eccome, ma a volte potrebbe esserci qualche problema. Se ne è già parlato anche in passato, per esempio qui:

 

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