Vai al contenuto
PLC Forum


Impostare i minuti e secondi di un Timer da Pannello


daddioo

Messaggi consigliati

Ciao a tutti come al solito ho bisogno un vostro aiuto.

Dovrei imposta minuti e secondi, esempio( 10.30= 10minuti e 30 secondi) con un pannello Schneider Magelis su un PLC s7 300, ho fatto tante prove ma non sono riuscito, ho trovato sul forum questo, purtroppo fa soltanto i minuti senza secondi.

2311968981_5e8fb80bf8_o.png

 

Poi sempre per cortesia vorrei sapere come posso fare soltanto per i secondi per esempio quando imposto 2 sul pannello devo ottenere 2s'.

Grazie a tutti voi per il vostro aiuto

Giuseppe

Link al commento
Condividi su altri siti


Il formato del timer S7 è il seguente:
- nei 12 bit a destra (da 0 a 11) è contenuto il valore in formato BCD

- i bit 11 e 12 contengono la base tempi, nel seguente modo:

-- 00 = 10 ms

-- 01 = 100 ms

-- 10 = 1 s

-- 11 = 10 s

- i bit 14 e 15 sono riservati e, nel caso di valore di preset, vanno lasciati a zero.

 

Nell'esempio vedi che i minuti vengono trasformati in decine di secondi. Il valore poi viene convertito da decimale a BCD. Il risultato (che non deve essere superiore a 999, e questo controllo, nell'esempio, manca) viene messo in OR con 3000 Hex. Quel 3000 Hex serve per impostare la base tempi che, in questo caso, sarà di 10 secondi, e ti permette di arrivare ad un valore massimo di 9990 secondi, ovvero 166 minuti e 30 secondi.

Se ti va bene la base tempi di 10 secondi, non devi far altro che sommare, subito dopo la moltiplicazione, i secondi a #Tmp1, e mettere il risultato sempre in #Tmp1.
Se vuoi passare ad una base tempi di 1 secondo, dovrai moltiplicare i minuti per 60, sommare i secondi, sostituire 3000 Hex con 2000 Hex. In questo caso, il valore massimo del timer sarà di 999 secondi, ovvero 16 minuti e 39 secondi.

 

In alternativa, potresti sostituire il timer S7 con un TON. In questo caso, il preset è in millisecondi su una variabile DInt (o Time, che è sempre una DInt), ed il valore massimo è di 2147483647 millisecondi, ovvero 24 giorni, 20 ore, 31 minuti, 23 secondi, 647 millisecondi .

Link al commento
Condividi su altri siti

Per la gestione del caso mm.ss io prendo la parte intera e la moltiplico per 60 e poi aggiungo i decimali moltiplicato per 100  è ho il tempo tutto in secondi da passare al timer.

Quindi prima di di tutto calcolo l'intero e lo sottraggo dal dato iniziale e moltiplicato per 100 questi sono secondi da sommare all'intero moltiplicato per 60.

Modificato: da max.bocca
Link al commento
Condividi su altri siti

Grazie Batta e max.bocca per la risposta.

Io vorrei scrivere direttamente dal pannello operatore Schneider Magelis 4430, esempio : 1.30 ( 1M . 30S ) in unico temporizzatore S_EVERZ, sempre s'è possibile.

 in questo forum qualcuno parlava di utilizzare un SFB4 TON, io ci ho provato ma non riesco a venirne fuori non sò più come fare, non riesco a trovare le istruzioni come parametrizzare SFB, vorrei un esempio come scriverlo, 

Grazie a tutti anticipatamente

 

Link al commento
Condividi su altri siti

nella libreria Standard Librery/IEC Function Block, c'è l'FC40 che converte il formato Time in S5T, da HMI netti le tue 2 variabili minuti e secondi, le converti in formato TIME come da segmento 2 dell' esempio di @cagliostro e poi lo passi a questo FC che lo converte in S5T

Link al commento
Condividi su altri siti

Grazie a cagliostro e acquaman, l'esempio di cagliostro mi è stato molto utile, invece per visualizzare i minuti e secondi che scorrono come potrei fare ? devo prenderli dalla DB45 ?

una volta che funziona tutto, poi devo creare in totale 5 temporizzatore, credo che devo ripetere 5 volte l'esempio di cagliostro. abbiate pazienza sono un principiante.

Poi chiedo ad acquaman se per cortesia può farmi un esempio riguarda al blocco SFC40, io ci ho provato però non risco a capire come parametrizzarlo.

Praticamente il lavoro che devo fare: Creare 5 temporizzatore più la visualizzazione del tempo che scorre, tutto con un pannello operatore Magelis.

Grazie ancora e scusatemi per la mia incompetenza.

Giuseppe 

Link al commento
Condividi su altri siti

3 minuti fa, daddioo ha scritto:

una volta che funziona tutto, poi devo creare in totale 5 temporizzatore, credo che devo ripetere 5 volte l'esempio di cagliostro. abbiate pazienza sono un principiante.

Si ma devi cambiare la DB di istanza.

Il tempo che passa li leggi nella DB45, nella variabile ET lo vedi in millisecondi, quindi devi convertirlo come meglio credi.

Se ti basta vedere i minuti che scorrono devi dividere la variabile ET per 60000, se vuoi vedere i secondi devi dividerla per 1000.
Per i minuti e secondi dividi per 60000 e trovi i minuti, il resto lo dividi per 1000 e trovi i secondi.

 

Link al commento
Condividi su altri siti

Esempio per la visualizzazione su HMI in due campi dati distinti, dei minuti e secondi trascorsi.

Le variabili usate come nell'esempio precedente sono aree di memoria MDxxxx, nessuno ti vieta di usare dei DB...........a te la scelta.

 

 image.jpeg.4ca20a1adb94ae04539f77aa47638edd.jpeg

Link al commento
Condividi su altri siti

Nello screenshot di esempio che ti ho allegato nel precedente post ho commesso un errore.........

Nell'istruzione MOD_DI nel parametro di ingresso IN1 non devi inserire la MD220 ma sempre la DB45.DBD8, cioè la variabile ET del DB45 di istanza del timer.

image.jpeg.28d06834ab48c7bc9e1aecf1293eb0d5.jpeg

Modificato: da cagliostro
Link al commento
Condividi su altri siti

Grazie Cagliostro per la correzione del errore, adesso ho fatto la correzione e funziona una meraviglia.

Se dovessi avere bisogno posso contare su di voi, grazie di cuore a tutti voi per l'aiuto.

E un grazie allo Staff

Giuseppe

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