Valeur de consigne atteinte : désactivation de la sortie
Lorsque la valeur courante correspond à la valeur de consigne diTargetValue de la voie du compteur rapide spécifiée par iChannel, le drapeau de sortie spécifié par pYOutput devient immédiatement FALSE.
Entrée
Un front montant active la fonction ; contrôle du drapeau de contrôle du compteur rapide à l’aide de 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
Résultat du pointeur obtenu via GetPointer à partir d’une variable globale qui renvoie le numéro de voie et la sortie
Permet d’indiquer une valeur de données de 32 bits pour la valeur de consigne dans l’intervalle suivant :
FP0, FP-e : -838808–+8388607
FPS, FP-X, FP0R: -2147483467–+2147483648
Sortie
TRUE si la combinaison de Channel%d
et pYOuput.iOffset
ne correspond pas à une combinaison valide de numéro de voie et de sortie telle que déterminée par la variable globale.
Cette instruction non inline fait partie des instructions Tool pour compteurs rapides. Pour en savoir plus sur les instruction(s) utilisées en interne, voir : F167_HighSpeedCounter_Reset
Pour valider la combinaison de la voie et de la sortie Y, le compilateur requiert le modèle de nom suivant pour les variables globales : %sHsc_TargetValueMatch_Channel%d_Y%d_%s
Utilisez toujours ce modèle pour les variables globales dans la fonction de contrôle de la sortie lorsque la valeur de consigne est atteinte.
Channel%d
doit être un numéro de voie de compteur rapide, activé dans les registres système
Y%d
doit être une adresse de sortie explicite prise en charge par l’automate
FP-S, FP0, FP-e: |
Y0–Y7 |
FP-S (V3.1 ou supérieure), FP0R : |
Y0–Y1F |
FP-X : |
Y0–Y29F |
%s
est un descripteur optionnel au début du modèle
_%s
est un descripteur optionnel à la fin du modèle
Optionnel | Modèle fixe | Optionnel |
g_b |
Hsc_TargetValueMatch_ChannelA_Y11F |
_MotorOn |
Cette variable globale génère le code pour la voie A et la sortie Y11F.
Dans la liste des variables globales, vous définissez des variables qui sont accessibles par tous les POU dans le projet.
Toutes les variables d’entrée et de sortie utilisées pour programmer cette fonction ont été déclarées dans l’en-tête du POU. Le même en-tête de POU est utilisé pour tous les langages de programmation.
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
Utilisez HscInfo_IsActive pour contrôler la voie spécifiée par iChannel1. Lorsqu’un front montant est détecté sur bReset et lorsque bIsActive n’est pas TRUE, l’instruction est exécutée. La combinaison du numéro de voie et du contact de sortie est validée dans la variable globale g_bHsc_TargetValueMatch_Channel1_Y7_YellowLamp_On. Lorsque le compteur rapide sur la voie 1 atteint la valeur de consigne diTargetValue1, la sortie Y7 devient 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);