Lire l’état des axes d’un module de positionnement
Cette instruction FP lit l’état du module de positionnement sur le connecteur désigné par s1_Slot et pour l’axe spécifié par s2_Axis lorsque le déclencheur EN est TRUE. Le résultat est sauvegardé dans d1_Status.
Entrée
Numéro du connecteur
Numéro d’axes
Valeurs : 1–4, 8 (axe virtuel)
Sortie
Informations sur l’état du module
Types d’informations sur l’état du module
Bit |
Informations sur l’état du module |
TRUE |
---|---|---|
0 |
Fonctionnement test sur les axes |
Pendant le fonctionnement test sur un axe configuré avec Configurator PM. |
1 |
Erreur |
Si une erreur est apparue sur un axe spécifié. |
2 |
Avertissement |
Si un avertissement est apparu sur un axe spécifié. |
3 |
Occupé |
Si l’axe spécifié est en cours de fonctionnement. |
4 |
Opération terminée |
Si l’opération sur un axe spécifié est terminée. |
5 |
Retour à l’origine terminé |
Si le retour à l’origine sur un axe spécifié est terminé. |
Si la zone spécifiée à l’aide du modificateur d’adresse est en dehors des limites autorisées.
Si le numéro de connecteur est en dehors de l’intervalle autorisé.
Si la zone spécifiée à l’aide du modificateur d’adresse est en dehors des limites autorisées.
Si le numéro de connecteur est en dehors de l’intervalle autorisé.
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
bStart: BOOL:=FALSE;
iSlotNumberPositioningUnit: INT:=0;
(*slot unit where the positioning unit is assigned 1- 64*)
iPositioningUnit_Axis: INT:=0;
(*Axis of the positioning unit to obtain status for (1-4: axis; 8: virtual axis)*)
dutPositioningUnitAxisStatus: BOOL16_OVERLAPPING_DUT;
(*Status of the positioning unit axis:
b0: Tool operation
b1: Error annunciation
b2: warning annunciation
b3: busy
b4: operation done
b5: home return done*)
END_VAR
La fonction est exécutée lorsque la variable bStart est définie 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,FP_POS_UNIT_GET_STATUS!,,17,1,31,6,,?DEN?Ds1_Slot?Ds2_Axis?AENO?Cd1_Status);
B(B_VARIN,,iSlotNumberPositioningUnit,15,3,17,5,);
B(B_VARIN,,iPositioningUnit_Axis,15,4,17,6,);
B(B_VAROUT,,dutPositioningUnitAxisStatus.w0,31,3,33,5,);
B(B_CONTACT,,bStart,3,2,5,4,);
L(5,3,17,3);
L(1,3,3,3);
L(1,0,1,6);
END_NETWORK_BODY
END_NET_WORK
END_BODY
IF bStart then
FP_POS_UNIT_GET_STATUS(s1_Slot := iSlotNumberPositioningUnit,
s2_Axis := iPositioningUnit_Axis,
d1_Status => dutPositioningUnitAxisStatus.w0);
END_IF;