, Uscita OFF al raggiungimento del valore target (contatore veloce)
Se il valore corrente corrisponde al valore target diTargetValue del canale contatore veloce specificato da iChannel, il flag di uscita specificato da pYOutput passa immediatamente a FALSE.
Ingresso
Un fronte di salita attiva la funzione; valutare il flag di controllo del contatore veloce utilizzando HscInfo_IsActive
FPS: 0, 2
FP-X R: 0, 1
FP-X 16K C14T: 0, 1, 2
FP-X 32K C30T, C60T: 0, 1, 2, 3
FP0R: 0, 1, 2, 3
FP0: 0, 1
FP-e: 0, 1
Risultato del puntatore ottenuto da GetPointer da una variabile globale che fornisce numero canale e uscita
Specificate un valore di dato a 32 bit per il valore target che sia compreso nel seguente intervallo:
FP0, FP-e: -838808–+8388607
FPS, FP-X, FP0R: -2147483467–+2147483648
Uscita
TRUE se la combinazione di Channel%d
e pYOuput.iOffset
non corrisponde a una combinazione valida di numero canale e uscita come determinato dalla variabile globale
Questa istruzione non in linea è parte delle istruzioni TOOL per i contatori veloci. Per una descrizione dettagliata delle istruzioni utilizzate internamente, vedere : F167_HighSpeedCounter_Reset
Per convalidare la combinazione di canale e uscita Y, il compilatore richiede il seguente modello di nome per le variabili globali: %sHsc_TargetValueMatch_Channel%d_Y%d_%s
Utilizzare sempre questo modello per le variabili globali nel controllo di corrispondenza del valore target.
Channel%d
deve essere un numero canale contatore veloce abilitato nei registri di sistema
Y%d
deve essere un indirizzo di uscita esplicito supportato dal PLC
FP-S, FP0, FP-e: |
Y0–Y7 |
FP-S (V3.1 o superiore), FP0R: |
Y0–Y1F |
FP-X: |
Y0–Y29F |
%s
è un descrittore opzionale all'inizio del modello
_%s
è un descrittore opzionale alla fine del modello
Opzionale | Modello fisso | Opzionale |
g_b |
Hsc_TargetValueMatch_ChannelA_Y11F |
_MotorOn |
Questa variabile globale genera il codice per il canale A e l'uscita Y11F.
Nella lista variabili globali si definiscono variabili alle quali possono accedere tutti i POU del progetto.
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
VAR
bExecute: BOOL:=0;
iChannel1: INT:=1;
diTargetValue1: DINT:=15000;
bIsActive: BOOL:=FALSE;
diElapsedValue: DINT:=0;
bReset: BOOL:=FALSE;
bErrorReset: BOOL:=FALSE;
END_VAR
Utilizzate HscInfo_IsActive per valutare il canale specificato da iChannel1. Se viene rilevato un fronte di salita su bReset e se bIsActive non è TRUE, l'istruzione viene eseguita. La combinazione di numero canale e contatto di uscita viene convalidata nella variabile globale g_bHsc_TargetValueMatch_Channel1_Y7_YellowLamp_On. Quando il contatore veloce sul canale 1 raggiunge il valore target diTargetValue1, l'uscita Y7 viene impostata su FALSE.
BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
ACTIVE_NETWORK := 0 ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 3 ;
NETWORK_BODY
B(B_F,HscInfo_IsActive!,,9,0,18,3,,?DiChannel?C);
B(B_VARIN,,iChannel1,7,1,9,3,);
B(B_VAROUT,,bIsActive,18,1,20,3,);
L(1,0,1,3);
END_NETWORK_BODY
END_NET_WORK
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 7 ;
NETWORK_BODY
B(B_CONTACT,,bReset,2,1,4,3,R);
B(B_CONTACT,,bIsActive,6,1,8,3,N);
B(B_VARIN,,iChannel1,31,2,33,4,);
B(B_VARIN,,diTargetValue1,31,4,33,6,);
B(B_VAROUT,,bErrorReset,47,1,49,3,);
B(B_F,GetPointer!,,26,3,33,5,,?D?C);
B(B_VARIN,,g_bHsc_TargetValueMatch_Channel1_Y7_YellowLamp_On,24,3,26,5,);
B(B_F,Hsc_TargetValueMatch_Reset!,,33,0,47,6,,?DbExecute?DiChannel?DpYOutput?DdiTargetValue?CbError);
L(1,2,2,2);
L(4,2,6,2);
L(8,2,33,2);
L(1,0,1,7);
END_NETWORK_BODY
END_NET_WORK
END_BODY
bIsActive:=HscInfo_IsActive(iChannel1);
Hsc_TargetValueMatch_Reset(bExecute := DF(bReset) AND NOT bIsActive,
iChannel := iChannel1,
pYOutput := GetPointer(g_bHsc_TargetValueMatch_Channel1_Y7_YellowLamp_On),
diTargetValue := diTargetValue1,
bError => bErrorReset);