AdrDT_Of_Offs

Liefert die DT-Adresse aus einem Adressenoffset einer Ein-/Ausgangsvariable

Diese Funktion generiert aus dem Wert am Eingang Offs am Ein-/Ausgang AdrDT eine 16-Bit-Adresse im DT-Bereich. Dieser Eingang muss unmittelbar an einem 16-Bit-Ein- oder -Ausgang einer FP-Funktion angeschlossen sein. Der Wert am Ein-/Ausgang Offs stellt den Adressenoffset innerhalb des DT-Datenbereichs dar. Mit GetPointer kann er zusammen mit einem Wert für den Speicherbereich ermittelt und an eine benutzerdefinierte Funktion oder einen benutzerdefinierten Funktionsbaustein übergeben werden.

Parameter

Eingang

AdrDT (INT)

Liefert 16-Bit-DT-Adressenoffset

Dieser Pin muss am Ein-/Ausgang einer FP-Funktion angeschlossen sein, an dem der Typ INT, WORD zulässig ist.

Ausgang

Offs (WORD, INT, UINT)

Offset zur Adresse DT0

Anmerkungen

  • Wichtig ist, dass die Ausführung der FP-Funktion, die mit der erzeugten Adresse im DT-Bereich arbeiten soll, durch Anlegen der Funktion Is_AreaDT mit dem Wert für den Speicherbereich der Variablen am EN-Eingang gesteuert wird.

  • Diese Funktion greift intern auf eines der Index-Register zu, die auch für Array-Berechnungen verwendet werden.

  • Nur für KOP- und FBS-Editoren: Wählen Sie im Fenster “Befehle” die Option “Eingangsbefehl” oder “Ausgangsbefehl”, um den erforderlichen Befehl in das Programmierfenster einzufügen.

Beispiel

SDT

POE-Kopf

Im POE-Kopf werden alle Ein- und Ausgangsvariablen deklariert, die für die Programmierung dieser Funktion verwendet werden.Für alle Programmiersprachen wird der gleiche POE-Kopf verwendet.

	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

Hier wurde die Variable DutNonBoolean vom Typ des oben angelegten SDT deklariert. Die Belegung der Elemente der Variablen DutNonBoolean mit Werten wurde im POE-Kopf bzw. Rumpf nicht vorgenommen, da die Werte der Variablen DutNonBoolean nach Ausführung der Funktion ReadFromIcCard überschrieben werden.

POE-Rumpf

Wenn die Variable start von FALSE auf TRUE gesetzt wird, wird die Funktion ReadFromIcCard ausgeführt. Sie liest Werte auf der IC-Karte ab der Adresse ActualPosition und schreibt die Information in die Variable DutNonBoolean. Beachten Sie, dass vorher die IC-Karte über das Menü “Online” > “IC-Karten-Manager...” entsprechend formatiert sein muss und ggf. Werte ab der Adresse ActualPosition auf der IC-Karte vorhanden sein sollten.

KOP-Rumpf

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

Beispiel: Programmieren der benutzerdefinierten Funktion ReadFromIcCard:

POE-Kopf

Im POE-Kopf werden alle Ein- und Ausgangsvariablen deklariert, die für die Programmierung dieser Funktion verwendet werden.Für alle Programmiersprachen wird der gleiche POE-Kopf verwendet.

	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

POE-Rumpf

Wenn die Variable, von der im aufrufenden Programm die Werte für Area und Offset ermittelt wurden, im DT-Bereich oder FL-Bereich liegt (da die Adresse für die Variable p32Pointer z.B. vom Compiler im DT- oder im FL-Bereich vergeben wurde), werden die Daten von der IC-Karte ab p32ActualPosition gelesen. Die Position wird um die Größe dieser Variablen erhöht und zurückgegeben.

KOP-Rumpf

	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
Verwandte Themen

Weitere Beispiel-Projekte befinden sich im Installationsverzeichnis von Control FPWIN Pro unter "Samples":

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

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

Letzte Änderung am: 2021-11-09Feedback zu dieser SeitePanasonic Hotline