Vai al contenuto
PLC Forum

Partecipa anche tu alla Live su Youtube martedì 28/01/2025 per festeggiare i 24 anni di PLC Forum

Per ulteriori informazioni leggi questa discussione: https://www.plcforum.it/f/topic/326513-28012025




Timer Con S7


Messaggi consigliati

Inserito:

Ciao a tutti,

con Siemens sono un po' arrugginito e cosi' dopo aver provato, invano, a cercare aiuto con l'. scrivo qui.

Devo fare uns cosa semplicissima: tramite un HMI devo mettere la durata di un timer, che puo' variare da 1 secondo a 1 ora.

Per il timer devo usare una variabile del tipo S5TIME, e fin qui tutto ok. Ora pero', voglio che la variabile con il valore dato dall'operatore tramite HMI venga convertita in S5TIME.

Ho fatto passare tutte le SFB e SFC ma non ho trovato niente di simile.

Grazie

RonTheBon


Inserita:

Ma sull'HMI non puoi impostare direttamente il valore in S5TIME?

Inserita:

No, posso solo immettere un valore. L'HMI non e' un Siemens poiche' dobbiamo usarlo anche con altri PLC. Se no sarebbe stato troppo facile eheheh.

Inserita: (modificato)

Riporto direttamente dal sito Siemens

DOMANDA

Come si converte un valore integer oppure real nel formato S5TIME?

RISPOSTA

Il requisito è che il valore fornito contenga il tempo in ms. Poi la conversione può avvenire in due passi nel modo seguente.

Per prima cosa si converte il valore fornito nel formato Double Integer e si scrive il risultato in una variabile del tipo Time.

I valori integer vengono convertiti nel formato Double Integer con il comando "ITD" ed i valori Real con "RND".

Con l'utilizzo dell'FC40 -> "Standard Library > IEC Function Blocks > FC40" (TIM_S5TI), il formato TIME viene convertito nel formato S5TIME.

Esempio

In un sorgente AWL la programmazione per una conversione INT > S5 Time ha il seguente aspetto:

VAR_INPUT

wert_i : INT ;

END_VAR

VAR_OUTPUT

zeit_s5 : S5TIME ;

END_VAR

VAR_TEMP

tmp_time : TIME ;

END_VAR

BEGIN

NETWORK

TITLE =

L #wert_i;

ITD ;

T #tmp_time;

NETWORK

TITLE =

CALL "TIM_S5TI" (

IN := #tmp_time,

RET_VAL := #zeit_s5);

END_FUNCTION

Questo è il sito di riferimento:

http://support.automation.siemens.com/WW/l...=99&lang=it

Modificato: da drei
Inserita:

Se non lo specifichi potevo solo immaginarlo.

Comunque se hai un valore espresso in secondi, basta che imposti i bit 12 e 13 della word a 1 e 0 e nei tre nibble piu bassi scrivi il valore del tempo in BCD. I bit 14 e 15 sono irrilevanti.

Le basi tempo possibili sono:

13 12

0 0 10ms

0 1 100ms

1 0 1s

1 1 10s

Inserita:

Solo per fornire una soluzione diversa da quelle già postate: dai un'occhiata qui.

A questo timer passi il valore di preset come intero (quindi da 0 a 32767). Devi solo crearti un bit di clock, per esempio fronte di salita del merker di clock di sistema con frequenza 1 Hz (vedi configurazione hardware).

Se il limite di preset INT non ti basta (se vuoi usare una base tempi di 100 ms con una INT non arrivi ad un'ora), apporti una semplice modifica alla FC e lavori con DINT.

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