Valeur de consigne atteinte : activation de la sortie (sortie impulsionnelle)
Lorsque la valeur courante correspond à la valeur de consigne diTargetValue de la voie de sortie impulsionnelle spécifiée par iChannel, le drapeau de sortie spécifié par pYOutput devient immédiatement TRUE.
Entrée
Un front montant active la fonction. Évaluez le drapeau de contrôle de la voie de sortie impulsionnelle avec PulseInfo_IsTargetValueMatchActive
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 sorties impulsionnelles. Pour en savoir plus sur les instruction(s) utilisées en interne, voir :F166_PulseOutput_Set
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 :%sPulse_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 sortie impulsionnelle 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 |
Pulse_TargetValueMatch_ChannelA_Y11F |
_MotorOn |
Cette variable globale génère le code pour la voie A et la sortie Y11F.
Vue d’ensemble des instructions Tool de sortie impulsionnelle
F166_PulseOutput_Set Valeur de consigne atteinte : activation de la sortie (sortie impulsionnelle)
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_EXTERNAL
g_bPulse_TargetValueMatch_Channel1_YA_Horn1_On: BOOL:=FALSE;
END_VAR
VAR
diTargetValue0: DINT:=11000;
iChannel1: INT:=1;
bIsActive: BOOL:=FALSE;
bErrorSet: BOOL:=FALSE;
bSet: BOOL:=FALSE;
END_VAR
Utilisez PulseInfo_IsTargetValueMatchActive pour vérifier si la voie iChannel1 est active. Lorsqu’un front montant est détecté sur bSet 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_bPulse_TargetValueMatch_Channel1_YA_Horn1_On. Lorsque la sortie impulsionnelle sur la voie 1 atteint la valeur de consigne diTargetValue0, la sortie YA devient 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_VARIN,,iChannel1,7,1,9,3,);
B(B_VAROUT,,bIsActive,26,1,28,3,);
B(B_F,PulseInfo_IsTargetValueMatchActive!,,9,0,26,3,,?DiChannel?C);
L(1,0,1,3);
END_NETWORK_BODY
END_NET_WORK
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 6 ;
NETWORK_BODY
B(B_VAROUT,,bErrorSet,51,1,53,3,);
B(B_CONTACT,,bSet,3,1,5,3,R);
B(B_CONTACT,,bIsActive,7,1,9,3,N);
B(B_VARIN,,iChannel1,32,2,34,4,);
B(B_VARIN,,diTargetValue0,32,4,34,6,);
B(B_F,GetPointer!,,27,3,34,5,,?D?C);
B(B_VARIN,,g_bPulse_TargetValueMatch_Channel1_YA_Horn1_On,25,3,27,5,);
B(B_F,Pulse_TargetValueMatch_Set!,,34,0,48,6,,?DbExecute?DiChannel?DpYOutput?DdiTargetValue?CbError);
L(5,2,7,2);
L(1,2,3,2);
L(9,2,34,2);
L(48,2,51,2);
L(1,0,1,6);
END_NETWORK_BODY
END_NET_WORK
END_BODY
bIsActive:=PulseInfo_IsTargetValueMatchActive(iChannel1);
Pulse_TargetValueMatch_Set(bExecute := DF(bSet) AND NOT bIsActive,
iChannel := iChannel1,
pYOutput := GetPointer(g_bPulse_TargetValueMatch_Channel1_YA_Horn1_On),
diTargetValue := diTargetValue0,
bError => bErrorSet);