Vai al contenuto
PLC Forum


Limite Temporizzatori S7-300 - Tempo massimo impostabile


lappone

Messaggi consigliati

Salve a tutti! Spero di essere il benvenuto su questo forum.

Sono da molto tempo a digiuno di Siemes, ho lavorato da 3 anni a questa parte con PLC AB.

Ora mi ritrovo a programmare una CPU S7-313C.

Per le mie automazioni necessito di temporizzatori (TON-TOF) con temporizzazioni anche di 5-6 ore.

Con AB posso arrivare fino a 8 ore circa, metre il limite massimo con Siemens è 2ore e 46 minuti.

Qualcuno ho un consiglio da darmi per aggirare questa limitazione?

Vi ringrazio.

Link al commento
Condividi su altri siti


potresti creare un temporizzatore semplicemente contando un impulso di due temporizzatori settati in precedenza, ovvero.... tu scrivi due temporizzatori che si rincorrono, cioè il funzionamento di uno è tagliato dal successivo, anche non simmetrici, esempio,,,,,,1 minuto e 1 secondo : quindi ogni minuto ricevi un impulso, che sommi a mano a mano e poi lo confronti con il tuo valore di tempo limite che devi fare

nelle caratteristiche della CPu puoi settare il byte di merker, esempio 2....il bit del 2.5 corrisponde a circa mezzo secondo ( infatti in genere si usa questo per far la peggiare le lampadine

utilizzando però un clock cosi ristretto.... per fare 8 ore devi contare un bel po ovvero 60 secondi per 60 minuti per 8 ore

se ti crei invece con i due temporizzatori un clock ogni ora ( ...per assurdo ) devi contare solo 8 impulsi

verifica solo in base alle tue esigenze la precisione di quanto ti ho detto sopra....nel senso che a mio avviso il Byte che ti fornisce il lampeggio della CPU non credo sia garantito al centesimo...quindi ogni volta, anche se di poco, aggiungi e sommi un errore

buon lavoro

Link al commento
Condividi su altri siti

Utilizzi la funzione (impostabile dal profilo hw) dei merker oscillatori (di solito il byte MB100) e utilizzi il merker con la risoluzione che deve avere la progressione del tuo temporizatore. Prendi una word o una double word e la incrementi con il merker suddetto come clok (naturalmente utilizzando un fronte) andando a fare un confronto ogni volta se la word incrementata è uguale al tuo valore impostato. Al raggiungimento del valore setti ciò che ti serve (merker o valore che dir si voglia). Lo puoi fare anche con un contatore...vedi tu.

Link al commento
Condividi su altri siti

Io utilizzo spesso il sistema indicato da Lucky67 anche perche in molti casi ho bisogno di un numero elevato di temporizzatori .

Inoltre ho notato che la precisione del marker di clock è molto migliore di quella dei temporizzatori S7.

Ciao

Link al commento
Condividi su altri siti

Ho testato i vostri consigli, ho trovato il blocco funzionale SFB la soluzione migliore...

La temporizzazione massima raggiungibile è di 24 giorni.... :ph34r:

Altro quesito:

I blocchi SFB necessitano di blocchi dati.

Attualmente, per testare, ho impostato manualmente i valori di tempo (es PT = T#10S).

Non capisco come gestire queste variabili in modo dinamico con un pannello operatore (tramite ricette).

Con PLC AB e HMI AB o EATON, la mia ricetta compilava tutti preset dei temporizzatori andando a scrivere su "T4:0.PRE" il valore da me scelto.

Non so se mi sono spiegato in maniera potabile.

In semplicità, al pannello che indirizzo PLC devo dare per modificare il valore dentro al database?

Sto ripassando il manuale pagina per pagina, ma non ne vengo fuori.

Link al commento
Condividi su altri siti

Al momento ho disponibile un'EATON (ha un software proprietario ma è scaricabile gratuitamente dal sito), in futuro avrò a disposizione un SIEMENS TP 177B da programmare con WinCC Flexible.

Sono a digiuno di SIEMENS, sono rimasto a S7-200, questo S7-300 mi sta facendo impazzire...

Link al commento
Condividi su altri siti

Sulla tua ricetta, invece di impostare un valore "s5t#" usi un valore "time" che è sempre espresso in ms quindi basta scalarlo per ottenere un valore da scrivere in minuti o ore o secondi a seconda delle necessità (questa funzione è presente in quasi tutti i pannelli operatori)

Link al commento
Condividi su altri siti

Io utilizzo il tipo di dati time, infatti i miei tof lavorano con T#xMxS.

Quello che non mi è chiaro è che queste variabili sono all'interno di Data Base.

Il problema che mi sorge è: Come dico al pannello operatore che deve moficare la variabile con il percorso DB1==>Indirizzo 8.0==>Tipo TIME==>Valore T#10000MS

:blink:

Modificato: da lappone
Link al commento
Condividi su altri siti

devi associare una variabile tipo "time" all'interno della DB che avrà come indirizzo per es. db1.dbw0 come timer 0 oppure db1.dbw2 per timer 1 e così via...

Link al commento
Condividi su altri siti

  • 2 months later...

Le funzioni SFB4 (TON) e SFB5 (TOF) sono perfette.

Ora mi sorge un'altro problema.

L'operatore tramite HMI (TP177A o 177B) deve essere in grado di impostare un tempo di funzionamento espresso in ore-minuti.

Io collego l'indirizzo del DB, seleziono la variabile PT.

Imposto il tipo TIME ma nel tipo di formatto (HEX, Binario, Decimale) non riesco a capire cosa combinare.

Devo lavorare in HEX? Scalare o convertire?

Con AB ad esempio, nell'HMI lavoro con numeri INT (24 e 59 ad esempio), nella CPU specifico che 24 sono ore e 59 sono minuti.

Modificato: da lappone
Link al commento
Condividi su altri siti

      L     DBXX.DBW X       // Dec. [0.1s]
      ITB   
      L     W#16#1000        // Base dei tempi in decimi di secondo
      OW    
      T     DBXX.DBW Y      // Timer T... [Hex]

Molto semplicemente si può convertire un numero intero in un timer. In questo caso viene convertito in decimi di secondo. Perciò se imposto la prima variabile a 5 il timer sarà da 500ms se lo imposto a 100 sarà 10 secondi.

Se al posto di W#16#1000 ci metto W#16#0000 la base dei tempi sarà espressa in 0.01s, se metto W#16#2000 sarà secondi e se metto W#16#3000 sarà 10s.

DBXX.DBW X sarà una variabile che imposti a monitor (una variabile word), DBXX.DBW Y sarà il tuo S5Time

Link al commento
Condividi su altri siti

Molto semplicemente si può convertire un numero intero in un timer.

Non ho capito.

Forse mi sono spiegato male anch'io.

Necessito di utilizzare i TON/TOF SFB4-5.

Il tipo di dato per i temporizzatori è TIME.

Io il dato TIME all'interno del DB della CPU lo devo esprimere in T#3h5m.

Dal pannello operatore non sono in grado di trovare una soluzione per far passare a T# i dati necessari.

Il mio dilemma è: da due campi I/O (ore e minuti) del TP, come faccio a pilotare un TOF con tipo di dati non s5time ma TIME?

Oppure come mi hai fatto l'esempio tu, dovrei convertire l'intero inserito nel TP in... Qualcosa di tipo TIME.

Nell'esempio 3 c'è quello che avrei bisogno:

WinCC_flexible_Timerformat_05_e.gif

L'esempio di SIEMENS è perfetto, però mi servirebbe in KOP. :-)

Modificato: da lappone
Link al commento
Condividi su altri siti

Il link che hai riportato fa esattamente quello che ti ho postato. leggendo la guida in linea sembra che il formato #TIME sia una semplice Dword. Non necessita perciò una conversione tipo quella riportata.

Dovrebbe essere sufficiente dichiarare una variabile con formato TIME (in un DB o in una variabile locale) e fare L variabile da monitor T Variabile creata.

Scusa ma credo sia sufficiente creare una variabile TIME nel pannello per risolvere il problema. Al limite guarda la guida in linea del pannella che usi per sapere come funziona, io non ho mai usato variabili in formato TIME

Link al commento
Condividi su altri siti

Oltre a SFB4-SFB5 puoi dare un'occhiata se QUESTO fa al caso tuo.

La funzione attualmente prevede l'utilizzo di una variabile di tipo INT, quindi il preset massimo è 32767. Cosa siano quei 32767, lo decidi tu dandogli il clock opportuno.

Se utilizzi per il clock 1 secondo, arrivi a contare fino ad oltre 9 ore.

Se vuoi estendere ancora il campo mantenendo però un clock breve, basta una piccola modifica alla funzione ed utilizzi una variabile DINT.

Se da pannello operatore vuoi impostare il tempo in ore/minuti/secondi, ti basta fare un semplice calcolo per convertire il tutto in secondi.

Esempio:

L Ore
L 60
*I
L Minuti
+I
L 60
*I
L Secondi
+I
T Preset

Se sul pannello operatore imposti il limite massimo delle ore a 8 (quindi preset massimo = 8h 59m 59s), non devi neanche fare controlli per non superare il valore 32767.

Link al commento
Condividi su altri siti

Ok Batta.

Come nell'altra discussione ti ringrazio, domani provo subito.

Il link che hai riportato fa esattamente quello che ti ho postato. leggendo la guida in linea sembra che il formato #TIME sia una semplice Dword. Non necessita perciò una conversione tipo quella riportata.

Vero, sono io che ormai sono cotto. :dunce:

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