Step 7 10.000 Strings durchsuchen

elmoklemme

Level-2
Beiträge
174
Reaktionspunkte
28
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

ich muss für eine Sondermaschine eine kleine Produktverwaltung schreiben. Die soll 10.000 Datensätze enthalten und über einen String mit 15 Zeichen eindeutig identifizierbar sein.

Software: Step 7 V5.5

Hardware:
NCU 710.3B PN MIT PLC 317-3 PN/DP
SINUMERIK PCU 50.5-C
SINUMERIK BEDIENTAFELFRONT TP O15A

Wenn ich die max DB Größe von 64kB durch die 17Byte des Strings teile komm ich auf 3764 Datensätze je DB, das heißt ich brauch mindestens 3 DBs. Ist die CPU in der Lage solch eine Anzahl von Daten in einer angemessenen
Zeit zu verarbeiten (durchsuchen)? Wird vermutlich auf mehrere Zyklen aufgeteilt werden müssen!? Wir haben so etwas schon mal in kleinerem Maßstab gemacht. Dabei wurde mit dem Suchstring byteweise verglichen und beim ersten Byte, das nicht übereinstimmte wurde der Suchindex für das Array of String inkrementiert. Wäre das immer noch ein praktikabler Weg? Ich kenne den Aufbau des Identstrings im Vorfeld nicht, da er ein Dateiname aus der Konstruktion ist. Daher ist mir nicht klar wie und ob man die Daten irgendwie sortiert ablegen sollte um die Suche zu beschleunigen.

Für Tips wäre ich dankbar.

Gruß Elmoklemme
 
Hallo Elmo,
Ich habe vor einiger Zeit mal eine Suchfunktion für so was geschrieben die auch in der Lage ist mehrere Vergleiche innerhalb eines Zykluses zu machen. Bei dieser Anzahl von Datensätzen wirst aber nicht drum herum kommen dass über mehrere Zyklen aufzuteilen wegen der Zykluszeitüberwachung. Denke aber von der Geschwindigkeit her sollte das weniger ein Problem sein sofern dass eine aktuelle 317 ist.
Frage ist was passieren soll wenn du den jeweiligen Datensatz gefunden hast - müssen die Daten dann weiter rangiert werden?
Kann dir mein Programm gerne zur Verfügung stellen, vielleicht kannst du die Verwenden.
MfG Martin
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Die benötigte Speichergröße hat die 317-3 wohl zur Verfügung, und es läßt sich sicher auch ein Programm schreiben, was die CPU nicht in STOP schickt. (meine Prognose: Suchzeit < 10s)

Aber: wo kommen die Daten her? Ändern die sich dynamisch zur Laufzeit? Wie wird für ein Backup dieser großen Datenmenge gesorgt? Soll die Maschine stundenlang nicht nutzbar sein, weil im Ernstfall vielleicht 10.000 Datensätze per Hand eingegeben werden müssen?

Spontan würde ich sagen, die Verwaltung von so vielen Daten ist nicht die Aufgabe einer SPS. Kann das nicht von der Bedientafel TP 015A übernommen werden?

Harald
 
Die 10000 Datensätze sollen vermutlich nicht auf der HMI eingetippt werden ?
Denk über wie man mit diese Datenmenge flüssig arbeiten kann.
Denk über wie man ein Backup von die Daten macht.
Absolut eine Aufgabe für ein Rezept-System, eventuell über Datenbank.

Der Ident kommt wohl von ein RFID oder Barcode Reader ?
In den Fall, der SPS bekommt den Ident-Wert, und es wird auf der HMI übertragen.
Der HMI holt die Daten aus sein Rezeptsystem/Datenbank.
Die Daten wird auf der HMI angezeigt, und der Bediener kann jetzt entscheiden ob die Daten übernommen soll oder nicht.
Erst wenn die Daten übernommen sind, kann der Maschine mit die Daten weiterfahren.

Mit ein Rezeptsystem kann man oft alle Daten nach CSV exportieren und importieren. Dann kann man mit Excel die Daten einfach bearbeiten.
Noch besser ist ein Datenbank. Dann kann man die Daten bearbeiten, gleichzeitig das die Daten für den Produktion verwendet werden.
 
Die Hardware ist neu.

Ganz fix ist das alles noch nicht, aber nach aktuellem Stand sieht es so aus:

Die Konstruktion stellt ein DXF-File zur Verfügung, aus dem ca. 10 Parameter des Werkstücks gezogen werden müssen. Ca weitere 10-20 Parameter, größtenteils Real-Werte, müssen händisch hinzugefügt werden.
Der File Name kommt in einen DB, der dann durchsucht werden kann und über den ermittelten Index wird auf auf die restlichen Parameter zugegriffen und in einen Arbeits-DB kopiert. Aus den gesamten Daten erstellt ein Post Processor das CNC-Programm für die Fertigung. Also keine dynamische Änderungen zur Laufzeit.
Backup wurde bisher noch nicht berücksichtigt, denke aber man könnte von Zeit zu Zeit die DBs mit Aktualdaten sichern.
Gibt es denn eine einfache Lösung die Daten auf einer Datenbank auf dem TP laufen zu lassen und an die SPS anzubinden? Hab sonst nicht mit so großen Datenmengen zu tun.
 
Bei der Menge würde ich definitiv aufteilen. Ich würde die Dateinamen "hashen" (zB MD5) und dann nur noch einen Vergleich mit Zahlen fahren. So kann ich auf einmal ein DINT vergleichen und habe sehr eindeutige Ergebnisse. Wenn das erste DINT ungleich ist, springe ich zum nächsten Datensatz, ansonsten kommt das zweite Segment dran und so weiter.

Sollte ein PC in der Nähe sein, würde es sich anbieten das dieser diese Arbeit übernimmt und nur die relevanten Daten in einem DB bereitgestellt werden und der PC holt sich die Daten ab, zB mit Snap7 und verarbeitet diese dann zB mit Hilfe einer Datenbank (MySQL, MSSQL, SQLite)

Wenn der Werker wirklich nur diese 10-20 Werte eingeben muss und der Rest passiert über ein HMI, für was dann die SPS?
 
Die Hardware ist neu.

Ganz fix ist das alles noch nicht, aber nach aktuellem Stand sieht es so aus:

Die Konstruktion stellt ein DXF-File zur Verfügung, aus dem ca. 10 Parameter des Werkstücks gezogen werden müssen. Ca weitere 10-20 Parameter, größtenteils Real-Werte, müssen händisch hinzugefügt werden.
Der File Name kommt in einen DB, der dann durchsucht werden kann und über den ermittelten Index wird auf auf die restlichen Parameter zugegriffen und in einen Arbeits-DB kopiert. Aus den gesamten Daten erstellt ein Post Processor das CNC-Programm für die Fertigung. Also keine dynamische Änderungen zur Laufzeit.
Backup wurde bisher noch nicht berücksichtigt, denke aber man könnte von Zeit zu Zeit die DBs mit Aktualdaten sichern.
Gibt es denn eine einfache Lösung die Daten auf einer Datenbank auf dem TP laufen zu lassen und an die SPS anzubinden? Hab sonst nicht mit so großen Datenmengen zu tun.

Wenn ich das hier lese kann ich eurer Firma nur empfehlen sich mal mit den Leuten von der Sinumerik zu unterhalten.
Das wird so ein Projekt wo Anlagenbauer mal eben eine Werkzeugmaschine mit 840Dsl baut, und von WZM und 840D nicht die geringste Ahnung hat.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Die Sinumerik kann über den Umweg des DXF-Readers DXF- Konturen importieren.

http://www.industry.siemens.com/top...en/cad-reader-fuer-sinumerik-steuerungen.aspx

Letztendlich möchtest du ein Programm bekommen. Der Aufwand zum Ziel ist gigantisch, ich kann mich da nur Peter anschließen- schildert euren Anwendungsfall der Sinumeriktruppe, ich bin mir sicher dass es da einfacherere Lösungen für gibt als den Umweg über die PLC.
Den Entwicklungsaufwand bezahlt euch vermutlich kein Mensch- wenn es nicht unbedingt sein muss und es nicht gerade "braindead" werden muss, gibt es wahrscheinlich geschicktere Lösungen. Wie z.B. die Kontur des DXF in einem Unterprogramm aufzurufen etc. pp.
Die so entwickelten CNC- Programme lassen sich auch wesentlich leichter sichern, ändern und einsehen.
 
Zurück
Oben