Ingresso conteggio indietro
I contatori realizzati con il Function Block CT_FB sono ingressi conteggio indietro. L'area di conteggio SV (valore target) va da 1 a 32767.
Ingresso
contatto di conteggio (indietro)
ogni qualvolta viene rilevato un fronte di salita in Count, il valore 1 viene sottratto dal valore corrente EV fino a raggiungere il valore 0
contatto di reset
ogni qualvolta viene rilevato un fronte di salita in Reset, il valore 0 viene allocato a EV e l'uscita di segnale C viene resettata; ogni qualvolta viene rilevato un fronte di discesa in Reset, il valore di SV viene allocato a EV
Valore di impostazione
valore di EV dopo una procedura di reset
Uscita
uscita segnale
viene impostata quando EV diventa 0
Valore corrente
valore attuale del contatore
Il valore può essere modificato durante l'operazione di conteggio scrivendo sulla variabile dall'editor di programmazione.
Per poter lavorare correttamente, è necessario resettare il Function Block CT_FB prima di ogni utilizzo.
Il numero di contatori disponibili è limitato e dipende dalle impostazioni nei registri di sistema 5 e 6. Il compilatore alloca un indirizzo NUM* ad ogni istanza di contatore. Gli indirizzi vengono allocati contando indietro, a partire dall'indirizzo più alto possibile.
La funzione CT di base (ingresso conteggio indietro) utilizza la stessa area indirizzi NUM* (ingresso Num). Per evitare errori (conflitti di indirizzo), è consigliabile non utilizzare la funzione CT e il Function Block CT_FB insieme in uno stesso progetto.
Diagramma tempi
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
copy_name: CT_FB;
set_value: INT:=10;
signal_output: BOOL:=FALSE;
count_contact: BOOL:=FALSE;
Reset_CT: BOOL:=FALSE;
machine_error: BOOL:=FALSE;
number_error: INT:=0;
END_VAR
In questo esempio vengono utilizzate variabili. Potete anche utilizzare costanti per le variabili di ingresso. Ogni qualvolta viene rilevato un fronte di salita in count_contact, il valore 1 viene sottratto dal valore corrente EV. Signal_output viene impostato su TRUE se il valore corrente EV diventa zero.
BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
ACTIVE_NETWORK := 0 ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 6 ;
NETWORK_BODY
B(B_FB,CT_FB!,copy_name,9,1,15,6,,?BCount?BReset?BSV?AC?AEV);
B(B_VARIN,,count_contact,7,2,9,4,);
B(B_VARIN,,Reset_CT,7,3,9,5,);
B(B_VARIN,,set_value,7,4,9,6,);
B(B_VAROUT,,signal_output,15,2,17,4,);
L(1,0,1,6);
END_NETWORK_BODY
END_NET_WORK
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 6 ;
NETWORK_BODY
B(B_F,E_MOVE!,Instance,10,1,16,5,,?DEN?D?AENO?C);
B(B_VARIN,,copy_name.EV,8,3,10,5,);
B(B_VAROUT,,number_error,16,3,18,5,);
B(B_CONTACT,,machine_error,4,2,6,4,);
L(1,3,4,3);
L(6,3,10,3);
L(1,0,1,6);
END_NETWORK_BODY
END_NET_WORK
END_BODY
Se desiderate chiamare il Function Block in una lista istruzioni, inserite quanto segue: