-> Hier kostenlos registrieren
Hallo Zusammen,
ich habe ein Problem in SCL:
Ich möchte ein vorwärts und rückwärtsschieberegister erstellen.
Es soll auf einen DB zugegriffen werden, dieser besteht aus 500 Feldern, jedes Feld hat die selbe Struktur.
Ich weiß jetzt nicht wie ich den Zugriff auf den DB hinbekomme, ich möchte den DB von außen vorgeben und intern dann damit arbeiten.
Der DB hat die selbe Struktur wie die VAR Kastenfeld (Unten im Beispiel).
Ich bekomme den Zugriff nicht hin, hat einer eine Lösung.
Gruß
Thomas
FUNCTION FC209 : INT
// Bausteinparameter
VAR_INPUT
// Eingangsparameter
SR_DB : WORD;
BOX_START :INT;
BOX_TARGET : INT;
ANZ_BOX :INT;
DEL : BOOL;
VOR : BOOL;
L_NR :INT;
END_VAR
VAR_TEMP
// temporäre Variablen
ANZ : INT;
END : INT;
ANFANG : INT;
START :INT;
ZIEL : INT;
KASTENFELD : ARRAY [1..500] OF STRUCT
Date_f_p : WORD; // DATE forming/pouring
time_of_forming : WORD; // forming TIME
time_of_Pouring : WORD; // poring TIME
BITS1 : WORD; // Bits
BITS2 : WORD;
MOW : BYTE; // Modellchange
MOK : BYTE; // Modelltag A-Z 1..26
END_STRUCT;
END_VAR
// ********** Anweisungsteil *********************
ANZ := ANZ_BOX;
START := BOX_TARGET;
ZIEL := START;
// INIT
IF VOR = 1 THEN
// Wenn Vor eins gesetzt schiebe vorwärts ;
END := BOX_TARGET + ANZ;
WHILE END <> START DO
// Anweisungsteil
kastenfeld[END] := kastenfeld[END-1]; hier liegt mein Problem
END:=END-1;
;
END_WHILE;
ELSIF VOR = 0 THEN
// anderfalls schiebe rückwärts ;
ANFANG := BOX_TARGET - ANZ;
WHILE ANFANG <> ZIEL DO
// Anweisungsteil
kastenfeld[ANFANG] := kastenfeld[ANFANG-1]; hier liegt mein Problem
ANFANG:=ANFANG+1;
;
END_WHILE;
;
ELSE
// Anweisungsteil_ELSE
;
END_IF;
FC209 := 1;
END_FUNCTION
ich habe ein Problem in SCL:
Ich möchte ein vorwärts und rückwärtsschieberegister erstellen.
Es soll auf einen DB zugegriffen werden, dieser besteht aus 500 Feldern, jedes Feld hat die selbe Struktur.
Ich weiß jetzt nicht wie ich den Zugriff auf den DB hinbekomme, ich möchte den DB von außen vorgeben und intern dann damit arbeiten.
Der DB hat die selbe Struktur wie die VAR Kastenfeld (Unten im Beispiel).
Ich bekomme den Zugriff nicht hin, hat einer eine Lösung.
Gruß
Thomas
FUNCTION FC209 : INT
// Bausteinparameter
VAR_INPUT
// Eingangsparameter
SR_DB : WORD;
BOX_START :INT;
BOX_TARGET : INT;
ANZ_BOX :INT;
DEL : BOOL;
VOR : BOOL;
L_NR :INT;
END_VAR
VAR_TEMP
// temporäre Variablen
ANZ : INT;
END : INT;
ANFANG : INT;
START :INT;
ZIEL : INT;
KASTENFELD : ARRAY [1..500] OF STRUCT
Date_f_p : WORD; // DATE forming/pouring
time_of_forming : WORD; // forming TIME
time_of_Pouring : WORD; // poring TIME
BITS1 : WORD; // Bits
BITS2 : WORD;
MOW : BYTE; // Modellchange
MOK : BYTE; // Modelltag A-Z 1..26
END_STRUCT;
END_VAR
// ********** Anweisungsteil *********************
ANZ := ANZ_BOX;
START := BOX_TARGET;
ZIEL := START;
// INIT
IF VOR = 1 THEN
// Wenn Vor eins gesetzt schiebe vorwärts ;
END := BOX_TARGET + ANZ;
WHILE END <> START DO
// Anweisungsteil
kastenfeld[END] := kastenfeld[END-1]; hier liegt mein Problem
END:=END-1;
;
END_WHILE;
ELSIF VOR = 0 THEN
// anderfalls schiebe rückwärts ;
ANFANG := BOX_TARGET - ANZ;
WHILE ANFANG <> ZIEL DO
// Anweisungsteil
kastenfeld[ANFANG] := kastenfeld[ANFANG-1]; hier liegt mein Problem
ANFANG:=ANFANG+1;
;
END_WHILE;
;
ELSE
// Anweisungsteil_ELSE
;
END_IF;
FC209 := 1;
END_FUNCTION