Renvoyer l’adresse FL de l’entrée/sortie avec offset de 32 bits
A partir de la valeur d’entrée/sortie Offs, la fonction génère une adresse de 32 bits dans la zone FL en entrée/sortie AdrFL. Cette entrée/sortie doit être directement connectée à l’entrée ou la sortie de 16 bits d’une fonction de base. La valeur d’entrée/sortie Offs correspond à l’adresse offset dans la zone de données FL. Avec GetPointer32, elle peut être transférée avec une valeur pour la zone mémoire vers une fonction ou un bloc fonction utilisateur.
Entrée
Génère une adresse offset FL de 16 bits
Cette broche doit être connectée à l’entrée/la sortie d’une fonction de base pour laquelle le type de données INT, WORD est autorisé.
Sortie
Offset de 32 bit pour l’adresse FL0
Notez que l’exécution de la fonction de base qui utilise l’adresse créée dans la zone FL est contrôlée en affectant la valeur pour la zone mémoire de la variable d’entrée EN à la fonction Is_AreaFL.
Cette fonction accède, en interne, à l’un des registres d’index également utilisé pour le calcul des tableaux Arrays. Si la zone FL n’est pas disponible pour un automate donné, l’adresse DT0 est générée automatiquement au lieu de l’adresse FL.
La fonction Is_AreaFL renvoie toujours FALSE et empêche ainsi l’exécution d’une commande avec une adresse inconnue. Les fonctions et blocs fonctions utilisateur écrits avec cette fonction peuvent être exécutés sur des automates sur lesquels la zone FL n’est pas disponible.
Pour les éditeurs LD et FBD uniquement : Utilisez Instruction d’entrée ou Instruction de sortie à partir du volet Instructions pour insérer l’instruction requise dans la fenêtre de programmation.
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;
(*Activation of the function*)
DutNonBoolean: DUT_NonBoolean;
(*structured data type*)
diActualPosition: DINT:=0;
(*Beginning position from which data should be read from the IC card*)
END_VAR
La variable DutNonBoolean du type de données affecté dans le DUT ci-dessus est déclarée. Les valeurs n’ont pas été affectées aux éléments de la variable DutNonBoolean dans l’en-tête ou le corps du POU car les valeurs de la variable DutNonBoolean sont surécrites après exécution de la fonction ReadFromIcCard.La fonction ReadFromIcCard est exécutée lorsque la variable bStart passe de FALSE à TRUE. La fonction lit les valeurs sur la carte CI à partir de l’adresse diActualPosition et écrit les informations dans la variable DutNonBoolean. Veillez à ce que la carte CI soit formatée correctement via le menu et à ce que les valeurs à partir de l’adresse diActualPosition soient disponibles sur la carte CI.
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_CONTACT,,start,6,1,8,3,R);
B(B_F,ReadFromIcCard!,,18,1,27,8,,?DEN?DArea?DOffset?DSize?DPosition?AENO?C);
B(B_VARIN,,ActualPosition,16,6,18,8,);
B(B_VAROUT,,ActualPosition,27,3,29,5,);
B(B_VARIN,,Dut_NonBoolean,7,3,9,5,);
B(B_F,Size_Of_Var!,,9,5,16,7,,?D?C);
B(B_F,GetPointer!,,11,3,18,5,,?D?C);
B(B_VARIN,,2,16,4,18,6,);
L(18,2,18,3);
L(8,2,18,2);
L(1,2,6,2);
L(9,4,11,4);
L(9,4,9,6);
L(16,6,18,6);
L(1,0,1,8);
END_NETWORK_BODY
END_NET_WORK
END_BODY