AdrDT_Of_Offs

Renvoyer l’adresse DT de l’entrée/sortie avec offset

A partir de la valeur d’entrée/sortie Offs, la fonction génère une adresse de 16 bits dans la zone DT en entrée/sortie AdrDT. Cette entrée 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 DT. Avec GetPointer, elle peut être transférée avec une valeur pour la zone mémoire vers une fonction ou un bloc fonction utilisateur.

Paramètres

Entrée

AdrDT (INT)

Génère une adresse offset DT 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

Offs (WORD, INT, UINT)

Offset pour l’adresse DT0

Remarques

  • Notez que l’exécution de la fonction de base qui utilise l’adresse créée dans la zone DT est contrôlée en affectant la valeur pour la zone mémoire de la variable d’entrée EN à la fonction Is_AreaDT.

  • Cette fonction accède, en interne, à l’un des registres d’index également utilisé pour le calcul des tableaux Arrays.

  • 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.

Exemple

DUT

En-tête du POU

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
		start: BOOL:=FALSE;
			(*activation of the function*)
		DutNonBoolean: @'Dut_NonBoolean';
			(*structured data type*)
		ActualPosition: DINT:=0;
			(*beginning position from which the data should be read to 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.

Corps du POU

La fonction ReadFromIcCard est exécutée lorsque la variable start passe de FALSE à TRUE. La fonction lit les valeurs sur la carte CI à partir de l’adresse ActualPosition et écrit les informations dans la variable DutNonBoolean. Veillez à ce que la carte CI soit formatée correctement via le menu En ligne > Gestionnaire de cartes mémoire CI... et à ce que les valeurs à partir de l’adresse ActualPosition soient disponibles sur la carte CI.

Corps en LD

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,);
B(B_F,ReadFromIcCard!,Instance,18,1,27,8,,?DEN?DArea?DOffset?DSize?DPosition?AENO?C);
B(B_VARIN,,2,16,4,18,6,);
B(B_VARIN,,ActualPosition,16,6,18,8,);
B(B_VAROUT,,ActualPosition,27,3,29,5,);
B(B_F,GetPointer!,Instance,11,3,18,5,,?D?C);
B(B_VARIN,,Dut_NonBoolean,7,3,9,5,);
B(B_F,Size_Of_Var!,Instance,9,5,16,7,,?D?C);
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

Exemple : Programmation de la fonction utilisateur ReadFromIcCard

En-tête du POU

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_INPUT
		p32Pointer: POINTER32;
			(*area, offset and size of data values*)
		diPosition: DINT:=0;
			(*beginning position from which the data should be read from the IC card*)
	END_VAR
	VAR_OUTPUT
		p32ActualPosition: POINTER32;
			(*shows the area, offset and size where the data of the IC card is stored*)
	END_VAR
	VAR
	END_VAR

Corps du POU

Si la variable, dont les valeurs de Area et Offset sont livrées via le programme appelé, est dans la zone DT ou FL (l’adresse pour la variable p32Pointer étant affectée à la zone DT ou FL par le compilateur), les données de la carte CI sont lues à partir de p32ActualPosition. La position est augmentée de la taille de cette variable et renvoyée.

Corps en LD

	BODY
    WORKSPACE
        NETWORK_LIST_TYPE := NWTYPELD ;
        ACTIVE_NETWORK := 0 ;
    END_WORKSPACE
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 9 ;
        NETWORK_BODY
B(B_VARIN,,2,20,3,22,5,);
B(B_VARIN,,1000,20,4,22,6,);
B(B_VARIN,,awProcessDataToGet[0],10,5,12,7,);
B(B_CONTACT,,bGetData,5,2,7,4,R);
B(B_F,Size_Of_Var!,Instance,12,5,19,7,,?D?C);
B(B_F,E_ReadFromIcCard!,Instance,22,1,37,7,,?DEN?DBankNumber?DBankOffset?DDataNumberOfWords?AENO?CDataStartAddress);
B(B_F,Adr_Of_Var_O!,Instance,37,3,45,5,,?D?C);
B(B_VAROUT,,awProcessDataToGet,45,3,47,5,);
L(1,3,5,3);
L(19,6,22,6);
L(1,0,1,9);
L(7,3,22,3);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY
Thèmes apparentés

Autres exemples de projets (répertoire "Samples" dans le répertoire d’installation de FPWIN Pro) :

Read, write IC card (REAL, DUT, FP10SH, FP2SH)

Read, write shared memory (REAL, DUT, FP10SH, FP2SH, FP2)

Modifié le : 2021-11-09Commentaires sur cette pageAssistance téléphonique