TIA S7 als Datenbank/Vergleicher Sinnvoll? (20.000 Daten)

hexic

Level-1
Beiträge
9
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

ich stehe vor der Aufgabe mit einer S7-1500 eine Art Datenbank für Seriennummern zu erstellen...

Es sollen Seriennummern von gefertigten Teilen gescannt, gespeichert und verglichen werden. (bis 20.000 Strings)

Ist eine Seriennummer bei einem der letzten 20.000 Teilen bereits verwendet worden, so soll es eine Fehlermeldung geben.


Meine bedenken sind eben, das die Zykluszeit für einen Vergleich von 20.000 Strings (ca 42 Zeichen) in einem DB unglaublich lang werden könnte.

Gibt es solche Lösungen SPS basiert, oder sollte ich da die Finger weg lassen? :cool:

MfG Hexic
 
Das Problem wird sein, in der SPS die Liste jedes mal neu zu sortieren wenn eine neue Seriennummer gescannt wird.

Darum würde ich mir zusätzlich eine Indexliste anlegen, dann entfällt das zeitraubende umkopieren der Strings.

Beispiel:
Stringliste
[1] Dieses
[2] soll
[3] ein
[4] Test
[5] sein

Indexliste alphabetisch sortiert
[1] 1
[2] 3
[3] 5
[4] 2
[5] 4

Wenn eine neue Seriennummer hinzukommt, wird diese an die Stringliste hinten angehängt und nur die Indexliste neu sortiert/erstellt. Bedeutet bei 20.000 Einträgen aber auch die entsprechende Anzahl an Kopiervorgängen, aber da es nur Integerzahlen sind geht das relativ schnell. Womöglich noch in einem Zyklus.

Normalerweise würde man sowas eher mit verketteten Listen oder Hashtabellen lösen, aber die S7-1500 hat sehr eingeschränkte Möglichkeiten was Datenstrukturen betrifft. Eigentlich gibt es dort nur das Array.
 
Guter Plan, das mit den Indexen macht Sinn.
Dann die Strings in einem Ringpuffer handeln und die Aufgabe wäre gelöst :-)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Vielleicht würde es auch Sinn machen, dass du einen DB mit den 20000 Strings machst und dann noch einmal 36 DB's ( 26 Buchstaben +0-10 Ziffern) und in diese DB's legst du je nach anfangszeichen die Nummern der Arrayindexe ab, die des Anfangszeichen haben.

Beim einlesen eines neuen Strings schaust du dir dann nur das erste Zeichen an. Gehst zu dem entsprechenden DB und durchsuchst deinen großen DB mit den gespeicherten Indexi aus dem entsprechenden DB.

Ich hoffe, dass es verständlich ist. Falls nicht einfach noch einmal melden.

Gruß
Andreas
 
Zurück
Oben