SCL - Größe und Position einer Struktur ermitteln

ANo

Level-1
Beiträge
85
Reaktionspunkte
8
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Leute,
ich versuche gerade (vergeblich) eine Funktion in SCL zu schreiben welche mir die Position und die Größe einer als ANY-Pointer anparametrierten Structur ausgibt.
Die Idee ist iStruktur:ANY; als VAR_INPUT einzulesen, diese evtl. (mit dem "AT"-Befehl) in TEMP zu verfrachten und da auseinander zu nehmen.
Allerdings stelle ich fest dass "AT"-Befehl nur in TEMP-Variablenbereich mit ANY-Pointer verträglich ist.
Ein FB will ich dafür nicht verwenden(dass es mit einem DB einfach geht ist mir klar).
In AWL weiss ich ebenfalls wie es ginge. Ich suche also eine lösung in SCL.

Kennt einer vielleicht eine (elegante) Möglichket diese Aufgabe in SCL in einem FC zu lösen?

Hier mein bisheriger Versuch:
Code:
FUNCTION FC_STRUCT_INFO : VOID
VAR_INPUT
  iStruktur:ANY; // Auszuwertende Struktur
  ANYPointer AT iStruktur : STRUCT  
    Kennung       : BYTE;  
    Typ           : BYTE;  
    Anzahl        : INT;  
    Baustein      : WORD;  
    Adresse       : DWORD;  
  END_STRUCT;    
END_VAR
VAR_OUTPUT
  oADR_Begin:INT; // Anfangsadresse
  oLaenge:INT; // Länge der Struktur in BYTE
END_VAR
BEGIN
// **********************************************************
;

// **********************************************************
END_FUNCTION
 
Zuletzt bearbeitet:
Hallo,

deklarier es als VAR_INPUT_OUTPUT und dann schieb es einfach per Zuweisung ins TMP.

etwa so:

TMP_STRUCT:= IO_STRUCT;

am Ende natürlich umgekehrt

Grüße

Marcel

P.S: Du hast aber nicht unbegrenzt Lokalspeicher... aber da meckert die SPS schon früh genug.
 
Zurück
Oben