Uscita ON 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 TRUE.
Ingresso
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
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
Channel%d
e pYOuput.iOffset
non corrisponde a una combinazione valida di numero canale e uscita come determinato dalla variabile globaleQuesta istruzione non in linea è parte delle istruzioni TOOL per i contatori veloci. Per una descrizione dettagliata delle istruzioni utilizzate internamente, vedere : F167_HighSpeedCounter_Reset F166_HighSpeedCounter_Set
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 |
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;
diTargetValue0: DINT:=15000;
bIsActive: BOOL:=FALSE;
diElapsedValue: DINT:=0;
bSet: BOOL:=FALSE;
bErrorSet: BOOL:=FALSE;
END_VAR
Utilizzate HscInfo_IsActive per valutare il canale specificato da iChannel1. Se viene rilevato un fronte di salita su bSet 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_Y1_RedLamp_On. Quando il contatore veloce sul canale 1 raggiunge il valore target diTargetValue0, l'uscita Y1 viene impostata su TRUE.
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_VAROUT,,bErrorSet,46,1,48,3,);
B(B_CONTACT,,bSet,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,,diTargetValue0,31,4,33,6,);
B(B_F,GetPointer!,,26,3,33,5,,?D?C);
B(B_VARIN,,g_bHsc_TargetValueMatch_Channel1_Y1_RedLamp_On,24,3,26,5,);
B(B_F,Hsc_TargetValueMatch_Set!,,33,0,46,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_Set(bExecute := DF(bSet) AND NOT bIsActive,
iChannel := iChannel1,
pYOutput := GetPointer(g_bHsc_TargetValueMatch_Channel1_Y1_RedLamp_On),
diTargetValue := diTargetValue0,
bError => bErrorSet);