Hallo Forum,
meine Hardware: CPU 315-2 PN/DP (6ES7 315-2EH14-0AB0)
meine Software: TIA V14 SP1
Meine Aufgabe, ist es einen Pointer zusammenzustellen. Aber der Pointer soll nicht komplett absolut adressiert sein, sondern der FB (mit dem Pointeraufruf) soll seinen eigene Instanzdatenbausteinnummer selbst auslesen, und den Pointer die DB Nummer mitteilen (als Variable). Wie ich die Instanzdatenenbausteinnummer des FBs auslese habe ich herausgefunden.
Das funktioniert auch alles soweit. Das Programm liest die Datenbausteinnummer des FBs aus.
Mein Frage, wie kann ich die ausgelesene DB Nummer an den Pointer anbinden.
Zum Beispiel
p#Meineausgelesenedbnummer.dbx48.0 byte 48
Folgende Beiträge zu dem Thema habe ich schon gelesen:
https://www.sps-forum.de/faq/12923-z...atentypen.html
https://www.sps-forum.de/faq/8887-po...fifo-lifo.html
https://www.sps-forum.de/simatic/474...und-lesen.html
https://support.industry.siemens.com...dti=0&lc=de-WW
https://support.industry.siemens.com...dti=0&lc=de-WW
meine Hardware: CPU 315-2 PN/DP (6ES7 315-2EH14-0AB0)
meine Software: TIA V14 SP1
Meine Aufgabe, ist es einen Pointer zusammenzustellen. Aber der Pointer soll nicht komplett absolut adressiert sein, sondern der FB (mit dem Pointeraufruf) soll seinen eigene Instanzdatenbausteinnummer selbst auslesen, und den Pointer die DB Nummer mitteilen (als Variable). Wie ich die Instanzdatenenbausteinnummer des FBs auslese habe ich herausgefunden.
Code:
VAR_INPUT
X :INT;
END_VAR
VAR_OUTPUT
DBNR :INT;
END_VAR
VAR_TEMP
//---------------------------------------------------
// Definition einer Hilfsvariablen und einer eigenen
// Datentypsicht auf den Datentyp ANY
//---------------------------------------------------
TempPointer :ANY; // Hilfsvariable
AnyPointer AT TempPointer: STRUCT
BYTE0 :BYTE; // Byte 0
TYP :BYTE; // Byte 1 Daten/Parametertyp
ANZ :WORD; // Byte 2+3 Länge der Variablen
DBNR :WORD; // Byte 4+5 DB-Nummer
BZ :DWORD; // Byte 6 bis 10 Bereichszeiger
END_STRUCT;
END_VAR
BEGIN
TempPointer := X; // Hilfsvariable mit Zeiger auf
// Eingang X laden
DBNR := WORD_TO_INT(AnyPointer.DBNR); // Zugriff auf Byte 4 und 5
END_FUNCTION_BLOCK
Mein Frage, wie kann ich die ausgelesene DB Nummer an den Pointer anbinden.
Zum Beispiel
p#Meineausgelesenedbnummer.dbx48.0 byte 48
Folgende Beiträge zu dem Thema habe ich schon gelesen:
https://www.sps-forum.de/faq/12923-z...atentypen.html
https://www.sps-forum.de/faq/8887-po...fifo-lifo.html
https://www.sps-forum.de/simatic/474...und-lesen.html
https://support.industry.siemens.com...dti=0&lc=de-WW
https://support.industry.siemens.com...dti=0&lc=de-WW