Operazioni di temporizzazione

Premettiamo alla descrizione delle operazioni di temporizzazione alcuni chiarimenti riguardo alla codifica dei tempi.

Quando si avvia un temporizzatore con una delle operazioni illustrate più avanti, il valore della parola bassa di ACCU1 verrà utilizzato per l’impostazione del tempo come mostrato nel seguente schema.

Tabella 38: Codifica valori di tempo per S7 300

Bit di ACCU1

15

14

13

12

11

10

9

8

7

6

5

4

3

2

1

0

Codifica

B1

B0

T11

T10

T9

T8

T7

T6

T5

T4

T3

T2

T1

T0

I bit 13 e 12 determinano la base tempi; i bit da 0 ad 11, in codifica BCD, determinano il numero di intervalli di detta base che costituiscono la durata della temporizzazione. I bit 14 e 15 vengono trascurati.

La base è codificata nel modo specificato nella tabella seguente.

Tabella 39: Codifica dei valori di base tempo per S7 300

B1

B0

Valore

Base

0

0

0

0.01s

0

1

1

0.1s

1

0

2

1s

1

1

3

10s

Quindi, il più piccolo tempo rappresentabile è 1 centesimo di secondo, un intervallo con base da un centesimo di secondo; il più grande è 9990 secondi, 999 intervalli da 10 secondi: quasi 3 ore.

Se, ad esempio, si desidera avviare un temporizzatore da 350s occorrerà caricare in ACCU1 il valore (0010_0011_0101_0000)2, o l’equivalente esadecimale (2350)16, con un’istruzione L W#16#2350.

L’errore massimo che si commette in una temporizzazione è pari ad un intervallo della base tempi utilizzata; quindi, quando possibile, è sempre conveniente utilizzare la rappresentazione con la base più piccola. Dovendo avviare un temporizzatore da 9 secondi, è quindi preferibile il caricamento di una costante che esprima detto tempo come 900 intervalli da un centesimo (W#16#0900), piuttosto che 90 da un decimo (W#16#1090) o, peggio ancora, 9 intervalli da un secondo (W#16#2009).

Una seconda possibilità di impostazione di tempo, più comoda, è offerta con il caricamento di costante tipo S5TIME. Tale costante ha il formato S5TIME#aH_bbM_ccS_dddMS; dove ‘a’ rappresenta il numero delle ore (H), ‘bb’ il numero dei minuti (M), ‘cc’ il numero dei secondi (S) e ‘ddd’ il numero dei millisecondi (MS) del tempo da impostare. La base tempo ed il numero degli intervalli in detta base che approssimano il tempo impostato, vengono calcolati automaticamente dal compilatore del linguaggio.

Nell’esempio precedente, l’istruzione da utilizzare per il caricamento di una costante di tempo da 350s sarebbe L S5TIME#5M_50S; dopo l’operazione di caricamento il contenuto della parola bassa dell’accumulatore 1 sarà ancora una volta (2350)16.

SI [SP] (Impulso)

Attivazione di un temporizzatore ad impulso. La temporizzazione viene attivata sul fronte di salita di RLC con il tempo codificato specificato nella parola bassa di ACCU1. Il tempo continua a scorrere fintanto che RLC=1. Se RLC diventa 0, il tempo viene impostato su 0.

Lo stato del temporizzatore è alto per tutto lo scorrere del tempo.

Operandi ammessi: T

Figura 58: Temporizzatore ad impulso per S7 300

Temporizzatore ad impulso per S7 300

SV [SE] (Impulso prolungato)

Attivazione di un temporizzatore ad impulso prolungato. La temporizzazione viene attivata sul fronte di salita di RLC con il tempo codificato specificato nella parola bassa di ACCU1. Lo stato di RLC non influenza ulteriormente la temporizzazione.

Lo stato del temporizzatore è alto per tutto lo scorrere del tempo.

Operandi ammessi: T

Figura 59:Temporizzatore ad impulso prolungato per S7 300
Temporizzatore ad impulso prolungato per S7 300

SE [SD] (Ritardo all’eccitazione)

Attivazione di un temporizzatore con ritardo all’eccitazione. La temporizzazione viene attivata in corrispondenza del fronte di salita di RLC con il tempo codificato specificato nella parola bassa di ACCU1. Se RLC diventa 0, il tempo viene impostato su 0.

Lo stato del temporizzatore è alto quando il tempo è trascorso e RLC si trova ancora allo stato alto.

Operandi ammessi: T

Figura 60: Temporizzatore con ritardo all’eccitazione per S7 300

Temporizzatore con ritardo all’eccitazione per S7 300

SS (Ritardo all’eccitazione con memoria)

Attivazione di un temporizzatore con ritardo all’eccitazione con memoria. La temporizzazione viene attivata in corrispondenza del fronte di salita di RLC con il tempo codificato specificato nella parola bassa di ACCU1. Se RLC diventa 0, il tempo non viene influenzato.

Lo stato del temporizzatore è alto quando il tempo è trascorso. Esso ritorna allo stato basso solo dopo un reset del temporizzatore con operazione R.

Operandi ammessi: T

Figura 61:Temporizzatore con ritardo all’eccitazione con memoria per S7 300

Temporizzatore con ritardo all’eccitazione con memoria per S7 300

SA [SF] (Ritardo alla diseccitazione)

Attivazione di un temporizzatore con ritardo alla diseccitazione. La temporizzazione viene attivata in corrispondenza del fronte di discesa di RLC con il tempo codificato specificato nella parola bassa di ACCU1. Se RLC diventa 1, il tempo viene reimpostato al valore iniziale.

Lo stato del temporizzatore è alto quando RLC = 1 oppure quando il tempo sta scorrendo.

Operandi ammessi: T

Figura 62: Temporizzatore con ritardo alla diseccitazione per S7 300

Temporizzatore con ritardo alla diseccitazione per S7 300

R (Reset di un temporizzatore)

Se RLC=1, il tempo viene azzerato. Se RLC=0, l’operazione viene ignorata.

Operandi ammessi: T

^