MFreiberger
Level-3
- Beiträge
- 2.851
- Reaktionspunkte
- 758
-> Hier kostenlos registrieren
Hallo Zusammen,
ich habe da mal wieder eine Frage:
Gibt es eine Möglichkeit innerhalb einer SCL-Funktion auf Strukturvariablen eines DBs zuzugreifen, der erst zur Laufzeit bekannt ist (INPUT Block_DB)?
GGf. Struktur (UDT) an FC übergeben?
Konkretes Problem:
Um in einem Hochregallager die Sollposition zu bestimmen, stehen mir die Fachkoordinaten zur verfügung. In einem DB habe ich die entsprechenden Positionsdaten hinterlegt.
Dabei habe ich eine UDT100 "Fachdaten" mit folgenden Elementen angelegt:
BIT Struct
gesperrt BOOL
belegt BOOL
bitxy
.
.
.
X Struct
Position DINT
Offset DINT
Y Struct
Position DINT
Offset DINT
Jetzt möchte ich in einem SCL-Baustein wie folgt auf die Datenbausteinvariablen zugreifen:
FUNCTION FC100 : INT
VAR_INPUT
Ii_XFach : INT;
Ii_YFach : INT;
END_VAR
VAR_OUTPUT
Odi_XPosition : DINT;
Odi_YPosition : DINT;
END_VAR
VAR_IN_OUT
IOdi_XOffset : DINT;
IOdi_YOffset : DINT;
IOw_Bits : WORD;
END_VAR
// Anweisungsteil
Odi_XPosition := Idb_Regal.Fach[Ii_XFach,Ii_YFach].X.Position;
Odi_YPosition := Idb_Regal.Fach[Ii_XFach,Ii_YFach].Y.Position;
FC100 := 100;
END_FUNCTION
Dass das so nicht geht ist mir bewusst. Im Anweisungsteil kennt das Programm ja den DB und damit die Datenstruktur nicht. Trotzdem soll der DB variabel bleiben und ich will halt direkt auf die Positionwerte anhand der Fachkoordinaten zugreifen. Das muss doch gehen. Hat da jemand eine Idee?
vielen Dank im Voraus.
Gruß
MFreiberger
ich habe da mal wieder eine Frage:
Gibt es eine Möglichkeit innerhalb einer SCL-Funktion auf Strukturvariablen eines DBs zuzugreifen, der erst zur Laufzeit bekannt ist (INPUT Block_DB)?
GGf. Struktur (UDT) an FC übergeben?
Konkretes Problem:
Um in einem Hochregallager die Sollposition zu bestimmen, stehen mir die Fachkoordinaten zur verfügung. In einem DB habe ich die entsprechenden Positionsdaten hinterlegt.
Dabei habe ich eine UDT100 "Fachdaten" mit folgenden Elementen angelegt:
BIT Struct
gesperrt BOOL
belegt BOOL
bitxy
.
.
.
X Struct
Position DINT
Offset DINT
Y Struct
Position DINT
Offset DINT
Jetzt möchte ich in einem SCL-Baustein wie folgt auf die Datenbausteinvariablen zugreifen:
FUNCTION FC100 : INT
VAR_INPUT
Ii_XFach : INT;
Ii_YFach : INT;
END_VAR
VAR_OUTPUT
Odi_XPosition : DINT;
Odi_YPosition : DINT;
END_VAR
VAR_IN_OUT
IOdi_XOffset : DINT;
IOdi_YOffset : DINT;
IOw_Bits : WORD;
END_VAR
// Anweisungsteil
Odi_XPosition := Idb_Regal.Fach[Ii_XFach,Ii_YFach].X.Position;
Odi_YPosition := Idb_Regal.Fach[Ii_XFach,Ii_YFach].Y.Position;
FC100 := 100;
END_FUNCTION
Dass das so nicht geht ist mir bewusst. Im Anweisungsteil kennt das Programm ja den DB und damit die Datenstruktur nicht. Trotzdem soll der DB variabel bleiben und ich will halt direkt auf die Positionwerte anhand der Fachkoordinaten zugreifen. Das muss doch gehen. Hat da jemand eine Idee?
vielen Dank im Voraus.
Gruß
MFreiberger