Valeur de consigne atteinte : activation de la sortie (sortie impulsionnelle)
Lorsque la valeur courante correspond à la valeur de consigne de la sortie impulsionnelle, la sortie spécifiée passe immédiatement à TRUE.
Entrée
Voie de la sortie impulsionnelle :0–3
Permet d’indiquer une valeur de données de 32 bits pour la valeur de consigne dans l’intervalle suivant : : -2147483467 à +2147483648
Sortie
Sortie passant à TRUE lorsque la valeur courante correspond à la valeur de consigne :Y0–Y1F
Caractéristiques de la sortie impulsionnelle
Valeur de consigne: 10000
Valeur courante de la sortie impulsionnelle
Condition d’exécution
Drapeau "Contrôle de sortie actif"
Sortie API
La sortie API passe à TRUE lorsque la valeur courante correspond à la valeur de consigne. De plus, le drapeau "Contrôle de sortie actif" passe à FALSE et l’instruction est désactivée.Si la sortie spécifiée n’est pas implémentée, seule la mémoire interne de l’adresse WY correspondante est définie ou réinitialisée.
Opération d’interruption
Le programme d’interruption est exécuté lorsque la valeur courante correspond à la valeur de consigne. Toute interruption entrée dans la liste des tâches est activée automatiquement. Un numéro de programme d’interruption spécial est affecté à chaque numéro de voie.
Voies utilisées par les programmes d’interruption :
Interrupt8 |
Voie0 |
Interrupt9 |
Voie1 |
Interrupt10 |
Voie2 |
Interrupt11 |
Voie3 |
Définissez "Sortie impulsionnelle" pour la voie souhaitée dans les registres système.
Lors de l’exécution de cette instruction, le drapeau "Contrôle de sortie actif" (par ex. sys_bIsPulseChannel0ControlActive) pour la voie utilisée passe à TRUE. Aucune autre instruction du compteur rapide avec contrôle de sortie (F166_PulseOutput_Set ou F167_PulseOutput_Reset) utilisant la même voie, ne peut être exécutée tant que le drapeau de contrôle est TRUE.
Cette instruction est disponible pour toutes les instructions de sortie impulsionnelle, à l’exception de F173_PulseOutput_PWM, et peut être exécutée avant ou après exécution d’une instruction de sortie impulsionnelle.
FPWIN Pro ne contrôle pas si une sortie est utilisée dans d’autres instructions (OUT, SET, RST, KEEP et autres instructions F). Une sortie double n’est pas détectée.
Pour qu’une sortie API passe à FALSE après avoir été commutée sur TRUE par cette instruction, utilisez une instruction RST ou MOVE.
Lorsque le bit 2 du registre de données, dans lequel le code de contrôle de la sortie impulsionnelle (sys_wHscOrPulseControlCode) est sauvegardé, est sur TRUE, l’exécution des instructions de sortie impulsionnelle est annulée et le drapeau de contrôle de la sortie impulsionnelle passe à FALSE. Réinitialisez le bit 2 sur FALSE pour permettre l’exécution des instructions à nouveau.
Si le programme principal et le programme d’interruption contiennent le code de la même voie, veillez à ce qu’ils ne soient pas exécutés simultanément.
Dans votre programme de positionnement, nous recommandons fortement de permettre un arrêt forcé.
L’état du drapeau de contrôle du compteur rapide ou du drapeau de la sortie impulsionnelle peut changer au cours d’une scrutation. Par exemple, si le nombre d’octets reçus est lu plusieurs fois, il peut y avoir plusieurs états au cours d’une scrutation.
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
out_0: BOOL:=FALSE;
(*output Y0 of PLC*)
END_VAR
VAR
start: BOOL:=FALSE;
(*start condition*)
@'': @'';
END_VAR
La fonction est exécutée lorsque la variable start est sur TRUE.
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_F,F166_PulseOutput_Set!,Instance,12,1,26,6,,?DEN?Hn_diPulseOutputChannel?Ds_diTargetValue?AENO?Cd_Y);
B(B_VARIN,,0,10,3,12,5,);
B(B_VARIN,,10,10,4,12,6,);
B(B_VAROUT,,out_0,26,3,28,5,);
B(B_CONTACT,,start,5,2,7,4,R);
L(1,3,5,3);
L(7,3,12,3);
L(1,0,1,6);
END_NETWORK_BODY
END_NET_WORK
END_BODY
IF DF(start) then
F166_PulseOutput_Set(n_diPulseOutputChannel := 0,
s_diTargetValue := 10,
d_Y => out_0);
END_IF;