Retour à l’origine
Entrée
Adresse de départ de la zone contenant le tableau de données
Voie de la sortie impulsionnelle :
FP-S : 0,2
FP-X R : 0,1
FP-XC14T : 0,1,2
FP-X C30T/C60T : 0,1,2,3
Après l’activation du servosystème, il y a une différence entre la valeur de la position initiale (valeur courante) et la position mécanique réelle de l’axe, et cette différence ne peut pas être prédéterminée. La valeur interne doit être synchronisée avec la position réelle des axes. La synchronisation est réalisée à l’aide d’un retour à l’origine pendant lequel une valeur de position est enregistrée à un point de référence connu (origine). Lorsqu’une instruction retour à l’origine est exécutée, des impulsions de sortie sont émises jusqu’à ce que l’entrée retour à l’origine soit activée. L’affectation des entrées/sorties est déterminée par la voie utilisée. Pour décélérer le mouvement à l’approche de la position d’origine, désignez une entrée proche de l’origine (near home) et définissez le bit 4 du registre spécial de données, dans lequel le code de contrôle de la sortie impulsionnelle (sys_wHscOrPulseControlCode) est sauvegardé, sur TRUE puis de nouveau sur FALSE. La sortie reset du compteur de déviation peut être définie sur TRUE lorsque le retour à l’origine est terminé. Pendant un retour à l’origine, la valeur dans la zone de la valeur courante peut différer de la valeur réelle. Lorsque le retour à l’origine est terminé, la valeur courante passe à 0.
Sélectionnez un des deux modes de fonctionnement :
Type 1 : L’entrée du point d’origine est activée indépendamment de la présence ou non d’une entrée proche de l’origine (near home), indépendamment du fait qu’une décélération est en cours ou qu’elle est terminée.
Sans entrée proche de l’origine :
Avec entrée proche de l’origine :
Type 2 : L’entrée du point d’origine est activée uniquement lorsque la décélération (démarrée par l’entrée proche de l’origine) est terminée.
Utilisez le DUT prédéfini suivant :
F171_PulseOutput_Home_DUT
Les paramètres suivants peuvent être indiqués dans le DUT :
Code de contrôle
Vitesse initiale et finale
Vitesse de consigne
Temps d’accélération/de décélération
Signal de réinitialisation du compteur de déviation
Caractéristiques de la sortie impulsionnelle
La fréquence de la sortie impulsionnelle change selon les temps d’accélération et de décélération spécifiés.
La différence entre la vitesse de consigne et la vitesse initiale détermine la pente des rampes.
Informations générales sur la programmation
Même lorsque l’entrée du point d’origine est activée, l’exécution de cette instruction déclenche la sortie impulsionnelle.
Si l’entrée proche de l’origine (near home) est activée pendant l’accélération, la décélération commence.
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.
Le signal de réinitialisation du compteur de déviation est affecté aux numéros de sorties dédiées, spécifiques à chaque type d’automate.
En cas d’édition en mode RUN, la sortie impulsionnelle est interrompue mais elle reprend lorsque les modifications du programme ont été transférées.
FP-X : Lorsqu’une instruction de sortie impulsionnelle est exécutée et lorsque des impulsions sont sorties, le drapeau de contrôle de la sortie impulsionnelle (par ex. sys_bIsPulseChannel0Active) de la voie correspondante est TRUE. Aucune autre instruction de sortie impulsionnelle ne peut être exécutée tant que ce drapeau est TRUE.
FPS : Le drapeau de contrôle du compteur rapide (par ex. sys_bIsHscChannel0ControlActive) et le drapeau de contrôle de la sortie impulsionnelle (par ex. sys_bIsPulseChannel0Active) sont affectés au même drapeau interne (par ex. R903A). Par conséquent, lorsqu’une instruction du compteur rapide ou de la sortie impulsionnelle est exécutée, le drapeau de contrôle du compteur rapide (par ex. sys_bIsHscChannel0ControlActive) et le drapeau de contrôle de la sortie impulsionnelle (par ex. sys_bIsPulseChannel0Active) pour la voie utilisée sont sur TRUE. Aucune instruction du compteur rapide ou de la sortie impulsionnelle ne peut être exécutée tant que ce drapeau est sur TRUE.
FPS : Définissez un des compteurs rapides affectés à une voie de sortie impulsionnelle sur "Inutilisé" dans les registres système.
FP-X : Définissez "Sortie impulsionnelle" pour la voie souhaitée dans les registres système.
FPS : L’exécution de l’instruction de contrôle de l’interpolation circulaire F176_PulseOutput_Center définit le drapeau de contrôle de l’interpolation circulaire (sys_bIsCircularInterpolationActive) sur TRUE. L’état de ce drapeau est maintenu jusqu’à ce que la valeur de consigne soit atteinte (même si la condition d’exécution n’est plus TRUE). Pendant ce temps, les autres instructions de sortie impulsionnelle ne peuvent pas être exécutées.
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.
N° de voie |
Sortie reset du compteur de déviation |
Entrée du point d’origine |
0 | Y2 | X2 |
2 | Y5 | X5 |
La fonction sortie impulsionnelle n’est disponible que si la cassette d’entrée/sortie impulsionnelle (AFPX-PLS) a été installée.
N° de voie |
Sortie reset du compteur de déviation |
Entrée du point d’origine |
0 | ||
(connecteur 1 pour montage des cassettes) | Y102 | X102 |
1 | ||
(connecteur 2 pour montage des cassettes) | ||
(C30/60R uniquement) | Y202 | X202 |
N° de voie |
Sortie reset du compteur de déviation |
Entrée du point d’origine |
0 | Y4 ou Y8 | X4 |
1 | Y5 ou Y9 | X5 |
2 | – | X6 |
3 (C30/60R uniquement) | – | X7 |
Dans la liste des variables globales, vous définissez des variables qui sont accessibles par tous les POU dans le projet.
Le DUT F171_PulseOutput_Home_DUT est prédéfini dans la bibliothèque FP Library.
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
X0_bMotorSwitch: BOOL:=FALSE;
(*at X0*)
END_VAR
VAR
dutHome: F171_PulseOutput_Home_DUT:=dwControlCode := 16#1125;
(*Control code:
Digit 3: 1= Duty ratio 25%
Digit 2: 1= Frequency range 48Hz-100kHz
Digit 1: 2 =Operation mode type 1
Ditig 0: 5= CCW + deviation counter clear signal*)
diInitialSpeed: DINT:=100;
diTargetSpeed: DINT:=2000;
diAccelerationTime: DINT:=300;
@'': @'';
END_VAR
BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
ACTIVE_NETWORK := 0 ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 16 ;
NETWORK_BODY
B(B_CONTACT,,X0_bMotorSwitch,4,1,6,3,R);
B(B_F,E_MOVE!,Instance,17,4,23,8,,?DEN?D?AENO?C);
B(B_F,E_MOVE!,Instance,17,8,23,12,,?DEN?D?AENO?C);
B(B_VAROUT,,dutHome.diTargetSpeed,23,6,25,8,);
B(B_VARIN,,diTargetSpeed,15,6,17,8,);
B(B_VAROUT,,dutHome.diAccelerationDecelerationTime,23,10,25,12,);
B(B_VARIN,,diAccelerationTime,15,10,17,12,);
B(B_F,E_MOVE!,Instance,17,12,23,16,,?DEN?D?AENO?C);
B(B_VAROUT,,dutHome.diDeviationCounterClearSignalOutputTime,23,14,25,16,);
B(B_VARIN,,10,15,14,17,16,);
B(B_F,E_MOVE!,Instance,17,0,23,4,,?DEN?D?AENO?C);
B(B_VAROUT,,dutHome.diInitialAndFinalSpeed,23,2,25,4,);
B(B_VARIN,,diInitialSpeed,15,2,17,4,);
L(7,2,7,6);
L(7,6,7,10);
L(1,2,4,2);
L(6,2,7,2);
L(7,2,17,2);
L(7,6,17,6);
L(7,10,17,10);
L(7,10,7,14);
L(7,14,17,14);
L(1,0,1,16);
END_NETWORK_BODY
END_NET_WORK
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 8 ;
NETWORK_BODY
B(B_CONTACT,,X0_bMotorSwitch,6,3,8,5,R);
B(B_VARIN,,dutHome,15,4,17,6,);
B(B_VARIN,,0,15,5,17,7,);
B(B_F,F171_PulseOutput_Home!,Instance,17,2,30,7,,?DEN?Ds_dutDataTable?Hn_iPulseOutputChannel?AENO);
B(B_COMMENT,,Example for home position return,1,1,18,2,);
L(1,4,6,4);
L(8,4,17,4);
L(1,0,1,8);
END_NETWORK_BODY
END_NET_WORK
END_BODY
IF DF(X0_bMotorSwitch) then
dutHome.diInitialAndFinalSpeed:=diInitialSpeed;
dutHome.diTargetSpeed:=diTargetSpeed;
dutHome.diAccelerationDecelerationTime:=diAccelerationTime;
dutHome.diDeviationCounterClearSignalOutputTime:=10;
END_IF;
(*Example for home position return*)
IF DF(X0_bMotorSwitch) then
F171_PulseOutput_Home(s_dutDataTable := dutHome,
n_iPulseOutputChannel :=0);
END_IF;