Possibilité d’accéder au registre spécial de données dans lequel le code de contrôle du compteur rapide et de la sortie impulsionnelle est sauvegardé, à l’aide de la variable système sys_wHscOrPulseControlCode. (La variable système sys_wHscOrPulseControlCode correspond au registre spécial de données DT90052.)
Opérations réalisées par le code de contrôle du compteur rapide
Pour annuler l’exécution d’une instruction, définissez le bit 3 du registre de données, dans lequel le code de contrôle du compteur rapide (sys_wHscOrPulseControlCode) est sauvegardé, sur TRUE. Le drapeau de contrôle du compteur rapide passe à FALSE. Pour que l’instruction puisse être à nouveau exécutée, définissez le bit 3 sur FALSE.
X0 Entrée du compteur rapide
Lorsque le bit 2 du code de contrôle est défini sur TRUE, il est impossible de réinitialiser le matériel via l’entrée reset spécifiée dans les registres système. Le comptage continue même si l’entrée reset passe à TRUE. La réinitialisation du matériel est désactivée jusqu’à ce que le bit 2 soit réinitialisé à 0.
Contrôle de l’entrée comptage
X0 Entrée du compteur rapide
Lorsque le bit 1 du code de contrôle est défini sur TRUE, le comptage n’est pas autorisé et la valeur courante ne change pas. Le comptage continue lorsque le bit 1 est réinitialisé sur FALSE.
X0 Entrée du compteur rapide
Lorsque le bit 0 du code de contrôle est défini sur TRUE, une réinitialisation du logiciel est exécutée et la valeur courante est définie sur 0. La valeur courante garde la valeur 0 jusqu’à ce que le bit 0 soit réinitialisé sur FALSE.
Les bits 0–15 du code de contrôle sont affectés par groupes de quatre. Dans chaque groupe, le paramétrage des bits est représenté par un nombre hexadécimal (par ex. 00020000 0000 1001 = 16#2009).
0 : continuer/1 : annuler
0 : activée/1 : désactivée
0 : autorisé/1 : non autorisé
0 : non/1 : oui
Exemple : 16#2009
Groupe |
Valeur |
Description |
|
---|---|---|---|
IV |
2 |
Numéro de voie : 2 |
|
III |
0 |
(Fixe) |
|
II |
0 |
(Fixe) |
|
I |
9 |
Hex 9 correspond aux données binaires 1001 |
|
Annuler l’instruction du compteur rapide : annuler (bit 3) |
1 |
||
Entrée reset : activée (bit 2) |
0 |
||
Comptage : autorisé (bit 1) |
0 |
||
Réinitialiser la valeur courante sur 0 : oui (bit 0) |
1 |
Les bits 0–15 du code de contrôle sont affectés par groupes de quatre, chaque groupe contenant les paramètres pour une voie. Dans chaque groupe, le paramétrage des bits est représenté par un nombre hexadécimal (par ex. 0000 0000 1001 0000 = 16#90).
0 : continuer/1 : annuler
0 : activée/1 : désactivée
0 : autorisé/1: non autorisé
0 : non/1 : oui
Groupe |
IV |
III |
II |
I |
Voie |
3 |
2 |
1 |
0 |
Groupe |
Valeur |
Description |
|
---|---|---|---|
IV |
0 |
– |
|
III |
0 |
– |
|
II |
9 |
Numéro de voie : 1 Hex 9 correspond aux données binaires 1001 |
|
Annuler l’instruction du compteur rapide : annuler (bit 3) |
1 |
||
Entrée reset : activée (bit 2) |
0 |
||
Comptage : autorisé (bit 1) |
0 |
||
Réinitialiser la valeur courante sur 0 : oui (bit 0) |
1 |
||
I |
0 |
– |
La valeur courante est mise à TRUE en activant l’entrée reset (0). Le paramétrage de l’entrée reset (bit 2) permet de désactiver l’entrée reset définie dans les registres système.
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
bSoftwareReset: BOOL:=FALSE;
(*Activates the function*)
END_VAR
VAR CONSTANT
HSC_CH0_RESET_ELAPSED_VALUE: WORD:=16#0001;
(*Resets elapsed value of channel 0*)
HSC_CH0_CONTINUE: WORD:=16#0000;
(*Continues counting in channel 0*)
END_VAR
VAR
END_VAR
La réinitialisation est exécutée à l’étape 1, puis 0 doit être entré avant que l’étape 2 ne démarre le comptage. La réinitialisation seule ne suffit pas à démarrer le comptage.
BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
ACTIVE_NETWORK := 0 ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 8 ;
NETWORK_BODY
B(B_VARIN,,HSC_CH0_RESET_ELAPSED_VALUE,22,2,24,4,);
B(B_CONTACT,,bSoftwareReset,5,1,7,3,R);
B(B_VARIN,,HSC_CH0_CONTINUE,22,6,24,8,);
B(B_F,E_MOVE!,Instance,24,0,30,4,,?DEN?D?AENO?C);
B(B_VAROUT,,sys_wHscOrPulseControlCode,30,2,32,4,);
B(B_F,E_MOVE!,Instance,24,4,30,8,,?DEN?D?AENO?C);
B(B_VAROUT,,sys_wHscOrPulseControlCode,30,6,32,8,);
L(1,2,5,2);
L(7,2,8,2);
L(8,2,24,2);
L(8,6,24,6);
L(8,2,8,6);
L(1,0,1,8);
END_NETWORK_BODY
END_NET_WORK
END_BODY
if DF(bSoftwareReset) then
sys_wHscOrPulseControlCode:=HSC_CH0_RESET_ELAPSED_VALUE;
sys_wHscOrPulseControlCode:=HSC_CH0_CONTINUE;
end_if;
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
bSoftwareReset: BOOL:=FALSE;
(*Activates the function*)
END_VAR
VAR CONSTANT
HSC_CH1_RESET_ELAPSED_VALUE: WORD:=16#1001;
(*Resets elapsed value of channel 1*)
HSC_CH1_CONTINUE: WORD:=16#1000;
(*Continues counting in channel 1*)
END_VAR
VAR
END_VAR
La réinitialisation est exécutée à l’étape 1, puis 0 doit être entré avant que l’étape 2 ne démarre le comptage. La réinitialisation seule ne suffit pas à démarrer le comptage.
BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
ACTIVE_NETWORK := 0 ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 8 ;
NETWORK_BODY
B(B_VARIN,,HSC_CH1_RESET_ELAPSED_VALUE,24,2,26,4,);
B(B_CONTACT,,bSoftwareReset,5,1,7,3,R);
B(B_VARIN,,HSC_CH1_CONTINUE,24,6,26,8,);
B(B_F,E_MOVE!,Instance,26,0,32,4,,?DEN?D?AENO?C);
B(B_VAROUT,,sys_wHscOrPulseControlCode,32,2,34,4,);
B(B_F,E_MOVE!,Instance,26,4,32,8,,?DEN?D?AENO?C);
B(B_VAROUT,,sys_wHscOrPulseControlCode,32,6,34,8,);
L(1,2,5,2);
L(7,2,8,2);
L(8,2,26,2);
L(1,0,1,8);
L(8,6,26,6);
L(8,2,8,6);
END_NETWORK_BODY
END_NET_WORK
END_BODY
if DF(bSoftwareReset) then
sys_wHscOrPulseControlCode:=HSC_CH1_RESET_ELAPSED_VALUE;
sys_wHscOrPulseControlCode:=HSC_CH1_CONTINUE;
end_if;