Step 7 Random DB to Arrayed DB in SCL

shakya

Level-1
Beiträge
2
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,
Ich möchte einen DB zu einem Arrayed-DB konvertieren. z.B.
DB100
Name type Startvalue
serialnumber12 string[5] 12423
serialnumber16 string[5] 12342
serialnumber18 string[5] 14326
serialnumber25 string[5] 15270
serialnumber28 string[5] 17643
serialnumber30 string[5] 18962
Dieser DB will ich in folgenden Format (also der gleiche DB nur als ARRAY) haben, sodass ich jedes einzelne Element mit einem anderen vergleichen kann.
Name type Startvalue
serialnumber12[1] string[5] 12423
serialnumber16[2] string[5] 12342
serialnumber18[3] string[5] 14326
serialnumber25[4] string[5] 15270
serialnumber28[5] string[5] 17643
serialnumber30[6] string[5] 18962
Ich weiss dass es mit einem Any-Pointer etwas zu tun hat. Aber mir fehlt hier die Idee, wie man hier überhaupt vorgeht. Wenn ich denn Pointer am Anfgang des DB100s lege, wie kann man dann den Pointer erhöhen. (ZB +AR1 mit awl)
Gibt es irgenwelche SFCs, solche Aufgaben zu lösen.
Für die Antwort bedanke ich mich im voraus.
PS: Ich bin ein Newbie zu diesem Thema.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
ich hätte dazu den folgenden Ansatz, wenn für dich hier SCL eine Option für die Code-Erstellung ist :
Du machst deinen Quelldatenbereich zu einer Struktur (UDT). Auf diese kannst du nun in einem Baustein eine AT-Sicht erstellen, die diese Struktur als String-Array gleicher Größe interpretiert.
Optimal wäre hier allerdings, wenn der "Sortier"-Baustein den Quelldatenbereich schon selber verwalten kann (die Quelldaten sind also in seinem STAT-Bereich).

Gruß
Larry
 
Hallo nochmal,

wie vorgeschlagen, habe ich den Quellendatenbereich zu dieser Struktur umgewandelt. kann ich jetzt die Daten aus DB3000 mit dem Befehl a:=Sample[1], b:=Sample1[2] zugreifen ?
TYPE struktur
STRUCT
Syntax_id:BYTE;
datatype: BYTE;
datacount: WORD;
DB_Nummer:WORD;
BytePointer: DWORD;
END_STRUCT
END_TYPE

FUNCTION FC3001 : VOID
VAR
Sample1 : struktur;
DB3000_Any AT Sample1:ANY;

Sample1.Syntax_id:=16#10;
Sample1.datatype:=16#13;
Sample1.datacount:=16#0a;
Sample1.DB_Nummer:=16#BB8;
Sample1.BytePointer:=dw#16#84000000;

Danke im voraus.
 
Zurück
Oben