È possibile accedere al registro dati speciale in cui sono memorizzati i codici di controllo del contatore veloce e dell'uscita ad impulsi con la variabile di sistema sys_wHscOrPulseControlCode. (La variabile di sistema sys_wHscOrPulseControlCode corrisponde al registro dati speciale DT90052.)
Operazioni effettuate dal codice di controllo del contatore veloce
L'esecuzione delle istruzioni di uscita ad impulsi si interrompe mettendo il bit 3 del registro dati nel quale è memorizzato il codice di controllo per il contatore veloce (sys_wHscOrPulseControlCode) su TRUE. Allora il flag di controllo del contatore veloce passa a FALSE. Per riabilitare l'esecuzione dell'istruzione del contatore veloce, riportare il bit 3 a FALSE.
X0 Ingresso contatore veloce
Quando il bit 2 del codice di controllo è impostato su TRUE, non è possibile effettuare un reset hardware utilizzando l'ingresso di reset specificato nei registri di sistema. Il conteggio continua anche se l'ingresso di reset è passato a TRUE. Il reset hardware resta disabilitato finché il bit 2 viene resettato su 0.
Conteggio operazione controllo ingresso
X0 Ingresso contatore veloce
Quando il bit 1 del codice di controllo è impostato su TRUE, il conteggio è proibito e il valore corrente mantiene il suo valore attuale. Il conteggio prosegue quando il bit 1 viene resettato su FALSE.
X0 Ingresso contatore veloce
Quando il bit 0 del codice di controllo è impostato su TRUE, viene eseguito un reset software del valore corrente di conteggio che viene posto a 0. Il valore corrente resta al valore 0 finché il bit 0 non viene resettato su FALSE.
I bit 0–15 del codice di controllo vengono allocati in gruppi di quattro. L'impostazione dei bit in ciascun gruppo è rappresentata da un numero esadecimale (p.es. 00020000 0000 1001 = 16#2009).
0: continua/1: annulla
0: abilitato/1: disabilitato
0: permetti/1: proibisci
0: no/1: sì
Esempio: 16#2009
Gruppo |
Valore |
Descrizione |
|
---|---|---|---|
IV |
2 |
Numero di canale: 2 |
|
III |
0 |
(fisso) |
|
II |
0 |
(fisso) |
|
I |
9 |
9 esadec. corrisponde a 1001 binario |
|
Annulla istruzione contatore veloce: annulla (bit 3) |
1 |
||
Ingresso di reset: abilitato (bit 2) |
0 |
||
Conta: permetti (bit 1) |
0 |
||
Resetta valore corrente su 0: sì (bit 0) |
1 |
I bit 0–15 del codice di controllo vengono allocati in gruppi di quattro e ciascun gruppo contiene le impostazioni per un canale. L'impostazione dei bit in ciascun gruppo è rappresentata da un numero esadecimale (p.es. 0000 0000 1001 0000 = 16#90).
0: continua/1: annulla
0: abilitato/1: disabilitato
0: permitti/1: proibisci
0: no/1: sì
Gruppo |
IV |
III |
II |
I |
Canale |
3 |
2 |
1 |
0 |
Gruppo |
Valore |
Descrizione |
|
---|---|---|---|
IV |
0 |
– |
|
III |
0 |
– |
|
II |
9 |
Numero di canale: 1 9 esadec. corrisponde a 1001 binario |
|
Annulla istruzione contatore veloce: annulla (bit 3) |
1 |
||
Ingresso di reset: abilitato (bit 2) |
0 |
||
Conta: permetti (bit 1) |
0 |
||
Resetta valore corrente su 0: sì (bit 0) |
1 |
||
I |
0 |
– |
Impostando l'ingresso di reset su TRUE, si imposta il valore corrente su 0. Usare il reset hardware (bit 2) per disabilitare l'ingresso di reset situato nei registri di sistema.
Tutte le variabili di ingresso e uscita utilizzate per programmare questa funzione sono state dichiarate nell'intestazione del POU.La stessa intestazione del POU è utilizzata per tutti i linguaggi di programmazione.
VAR
bSoftwareReset: BOOL:=FALSE;
(*Activates the function*)
END_VAR
VAR CONSTANT
HSC_CH0_RESET_ELAPSED_VALUE: WORD:=16#0001;
(*Resets elapsed value of channel 0*)
HSC_CH0_CONTINUE: WORD:=16#0000;
(*Continues counting in channel 0*)
END_VAR
VAR
END_VAR
Il reset viene effettuato nel passo 1, e 0 viene inserito immediatamente dopo nel passo 2 per avviare il conteggio. Il solo reset non fa avviare il conteggio.
BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
ACTIVE_NETWORK := 0 ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 8 ;
NETWORK_BODY
B(B_VARIN,,HSC_CH0_RESET_ELAPSED_VALUE,22,2,24,4,);
B(B_CONTACT,,bSoftwareReset,5,1,7,3,R);
B(B_VARIN,,HSC_CH0_CONTINUE,22,6,24,8,);
B(B_F,E_MOVE!,Instance,24,0,30,4,,?DEN?D?AENO?C);
B(B_VAROUT,,sys_wHscOrPulseControlCode,30,2,32,4,);
B(B_F,E_MOVE!,Instance,24,4,30,8,,?DEN?D?AENO?C);
B(B_VAROUT,,sys_wHscOrPulseControlCode,30,6,32,8,);
L(1,2,5,2);
L(7,2,8,2);
L(8,2,24,2);
L(8,6,24,6);
L(8,2,8,6);
L(1,0,1,8);
END_NETWORK_BODY
END_NET_WORK
END_BODY
if DF(bSoftwareReset) then
sys_wHscOrPulseControlCode:=HSC_CH0_RESET_ELAPSED_VALUE;
sys_wHscOrPulseControlCode:=HSC_CH0_CONTINUE;
end_if;
Tutte le variabili di ingresso e uscita utilizzate per programmare questa funzione sono state dichiarate nell'intestazione del POU.La stessa intestazione del POU è utilizzata per tutti i linguaggi di programmazione.
VAR
bSoftwareReset: BOOL:=FALSE;
(*Activates the function*)
END_VAR
VAR CONSTANT
HSC_CH1_RESET_ELAPSED_VALUE: WORD:=16#1001;
(*Resets elapsed value of channel 1*)
HSC_CH1_CONTINUE: WORD:=16#1000;
(*Continues counting in channel 1*)
END_VAR
VAR
END_VAR
Il reset viene effettuato nel passo 1, e 0 viene inserito immediatamente dopo nel passo 2 per avviare il conteggio. Il solo reset non fa avviare il conteggio.
BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
ACTIVE_NETWORK := 0 ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 8 ;
NETWORK_BODY
B(B_VARIN,,HSC_CH1_RESET_ELAPSED_VALUE,24,2,26,4,);
B(B_CONTACT,,bSoftwareReset,5,1,7,3,R);
B(B_VARIN,,HSC_CH1_CONTINUE,24,6,26,8,);
B(B_F,E_MOVE!,Instance,26,0,32,4,,?DEN?D?AENO?C);
B(B_VAROUT,,sys_wHscOrPulseControlCode,32,2,34,4,);
B(B_F,E_MOVE!,Instance,26,4,32,8,,?DEN?D?AENO?C);
B(B_VAROUT,,sys_wHscOrPulseControlCode,32,6,34,8,);
L(1,2,5,2);
L(7,2,8,2);
L(8,2,26,2);
L(1,0,1,8);
L(8,6,26,6);
L(8,2,8,6);
END_NETWORK_BODY
END_NET_WORK
END_BODY
if DF(bSoftwareReset) then
sys_wHscOrPulseControlCode:=HSC_CH1_RESET_ELAPSED_VALUE;
sys_wHscOrPulseControlCode:=HSC_CH1_CONTINUE;
end_if;