-> Hier kostenlos registrieren
Hallo
Ich habe einen FC an den ich eine Struktur übergebe. Im FC wird diese Struktur wie folgt zerlegt:
Dies funktioniert wunderbar, wenn sich die Sruktur in einem globalen DB befindet.
Wenn ich aber nun eine Struktur in einem FB als statische Variable deklariere und diese an den FC übergebe, funktioniert es nicht.
Funktionierender Code im FB10:
NICHT funktionierender Code im FB10 (Aufruf Call FB10, DB10):
Was kann ich machen, damit ich im FC auch die Struktur verarbeiten kann, welche als statische Variable im aufrufenden Baustein deklariert ist?
Der Pointer müsste doch zur Laufzeit in den DB10 an die richtige Adresse verweisen.
Gruss
NeuSim
Ich habe einen FC an den ich eine Struktur übergebe. Im FC wird diese Struktur wie folgt zerlegt:
Code:
// Pointer ins AR2 laden
L P##Struktur
LAR2
//DB-Nummer der Struktur ermitteln
L W [AR2,P#4.0] // DB Nummer
T #DBNr
//Anfangsadresse der Struktur ermitteln
L W [AR2,P#8.0] // Anfangsadresse im Pointerformat
T #AnfAdr
//Länge der Struktur ermitteln
L W [AR2,P#2.0] // Anzahl Bytes im Datenbereich
L 2
/I
T #NumberOfElements // Number of elements WORD
Dies funktioniert wunderbar, wenn sich die Sruktur in einem globalen DB befindet.
Wenn ich aber nun eine Struktur in einem FB als statische Variable deklariere und diese an den FC übergebe, funktioniert es nicht.
Funktionierender Code im FB10:
Code:
CALL "Struct_Check"
Struktur :="DB1".MyStruct
Check :=M10.0
NICHT funktionierender Code im FB10 (Aufruf Call FB10, DB10):
Code:
CALL "Struct_Check"
Struktur :="MyStruct" // Struktur im FB10 deklariert als statische Variable
Check :=M10.0
Was kann ich machen, damit ich im FC auch die Struktur verarbeiten kann, welche als statische Variable im aufrufenden Baustein deklariert ist?
Der Pointer müsste doch zur Laufzeit in den DB10 an die richtige Adresse verweisen.
Gruss
NeuSim