# Auftragsverwaltung, Sortierung und mehr ;)



## Garog (14 Februar 2009)

Also, ich stehe zur Zeit vor einem recht großen Haufen M*** und bin mir noch ein wenig unsicher wie ich diesen beseitigen soll.

Folgender Ist-Zustand

Firma XY hat die Anlage S1B sowie eine Verwaltungssoftware ABC:
Bisher war es so, das mit dem Software ABC Aufträge erstellt und ausgedruckt werden.
Ein Bediener der Anlage S1B hat dann immer 5-15 Aufträge auf einmal bekommen und diese dann nach bestimmten Kriterien sortiert (Selbes Vormaterial, Verarbeitungsart etc), so dass die laufende Anlage möglichst wenig umgebaut werden muss und damit auch möglichst viel läuft.
Nach der Sortierung hat er dann Auftrag für Auftrag per Hand in ein Programm eingegeben.

Bis vor kurzem war dort eine andere Firma damit beschäftigt, die meinten sie würden es schaffen einen Datenbankexport automatisch in die Anlage zu bringen. Sie meinten... und schafften es leider nicht.

Nun da Firma XY aber so angetan von der Idee war sollte das Projekt dennoch weitergeführt werden.
Was mich ins Spiel bringt bzw meinen Chef der vor Ort bei der Problemerklärung/Auftragsbesprechung sehr an die drei Jungs erinnerte :sm8:

Aufgabenstellungen:
Datenbank -> SPS

...dachte ich....

Der Datenbankexport wird mir als CSV zur Verfügung gestellt und kann bei Bedarf verändert werden.
Das 1. Problem hierbei. Eine absolut variable Tabelle.
Hier mal zwei gekürzte Beispiele wie es aussehen könnte.

```
Auftrag,Pos.,Paket,Stücklist.-Nr.,Stückzahl,Länge
810265976,6,1,1,4,15600,
810265976,6,1,3,4,13550,
810265976,6,2,3,8,13550,
810265976,6,3,3,8,13550,
810265976,6,4,3,8,13550,
810265976,6,5,3,8,13550,
810265976,6,6,2,2,13050,
810265976,6,6,3,6,13550,
810265976,6,7,2,8,13050,
810265976,6,8,2,8,13050,
810265976,6,9,2,8,13050,
810265976,6,10,2,8,13050,
810265976,6,11,2,8,13050,
901268515,1,1,1,1,5300,
901268515,1,1,2,3,6500,
901268515,1,1,3,1,6250,
901268515,1,1,4,1,5250,
901268515,1,1,5,1,4300,
901268561,1,1,1,8,6400,
901268561,1,2,1,8,6400,
901268561,1,3,1,8,6400,
```

oder wie z.b. die .csv auch anfangen könnte:


```
Auftrag,Pos.,Paket,Stücklist.-Nr.,Stückzahl,Länge
901268680,1,1,1,8,5855,
901268680,1,2,1,6,5855,
901268870,1,1,2,1,6840,
901268870,1,1,3,2,7500,
901268870,1,1,4,2,6100,
901268870,1,1,7,3,6870,
901268870,1,2,1,6,5495,
901268870,1,2,4,2,6100,
901268870,1,3,1,8,5495,
901268870,1,4,1,5,5495,
901268870,1,5,5,4,4060,
901268870,1,6,6,4,1900,
901268969,1,1,1,2,4150,
```

Es ist also 1. immer eine unterschiedliche Menge an Daten drin 2. Aufträge haben unterschiedliche Paketanzahlen 3. Pakete haben unterschiedliche Materiallängen.
Dazu kommt nun das die SPS oder ein Script (Flexible auch vorhanden) die Aufträge sortieren soll nach bestimmten Kriterien dem Anlagenbediener eine mögliche Abarbeitung vorschlagen soll.
Der Bediener soll nun die Möglichkeit haben, die Sortierung zu ändern, sowie möchte er auch die Paketproduktionsreihenfolge in den einzelnen Aufträgen variieren können.

Bsp.
Anlage schlägt vor:
Auftrag B, C, A, D
Bediener ändert auf
A, C, B, D

Auftrag A wird dann noch geändert:
Paketproduktion Auftrag A
1, 2, 3, 4, 5
Bediener ändert auf
4, 3, 5, 1, 2

Dazu kommt...:

das z.B. Auftrag X mit dem ersten Export angefügt wurde.
2 Stunden später kommt ein weitere Export der nochmals Auftrag X enthält allerdings in geänderter Form und den ersten Auftrag X überschreiben soll.

die Anlage nie "leerlaufen" darf mit Aufträgen.
es muss also einen "Puffer" geben wo die sortierten Aufträge stehen die nach und nach abgearbeitet werden und neue jederzeit importiert werden können.
Es sollen also nicht erst alle Aufträge des Imports abgearbeitet werden bevor neue Aufträge kommen.

das die neuen Aufträge die hinten an den "Puffer" angefügt werden so sortiert werden, das sie an die letzten Aufträge passen
bsp. Puffer: A, A, A, B, C, C, 
nach Import:
A, A, A, B, C, C, C, C, A, A, A ,B

Zu guter letzt soll dann auch noch ein Archiv erstellt werden, welches die letzten 0-100... Aufträge in der produzierten Reihenfolge speichert.

______________

Meine Idee dazu, wie ich denke es am besten lösbar ist (für mich  )

Der Import der variablen Tabelle erfolgt durch einen selbstgeschriebenen Treiber (VB-Script) welcher die Tabelle in statische Datenbausteine sortiert.
Pro Auftrag einen Datenbaustein der immer gleich aufgebaut ist in seiner Länge und Struktur. Dieser Aufbau richtet sich nach der maximalen Anzahl Paketen/Auftrag und Tafeln/Paket.

Mit der SPS mache ich nun die Sortierung und kopiere die Datenbausteine der erstellten Reihenfolge nach in neue Datenbausteine (dem Puffer).
Mit jedem fertigen Auftrag wandern die Aufträge einen DB weiter.
Somit sind die Importbausteine wieder frei für einen neuen Import und ich habe im Puffen hinten Platz für neues.
Mit dem neuen Import überprüfe ich die neuen Aufträge welche am besten an die alten im Puffer passen und sortiere diese hinten an.

Wieso ich das ganze in der SPS machen möchte, dort kann ICH (vermutlich ) leichter die einzelnen Aufträge bearbeiten (Pakete verschieben, Aufträge etc..) sowie brauche ich auch in der Visu eine "gleitende" Anzeige der Aufträge und finde es einfacher ein E/A Feld im Flex zu machen, welches einen DB Bereich zeigt der sich ändert als umgekehrt  müsste ich auch noch variable Tabellen im Flexible einbauen werde ich damit nie fertig. :
Ach und deswegen noch, weil ich VB-Scripting nicht so super beherrsche wie ich gerne möchte 

Zum Archiv und dem kommenden Etikettendrucker sowie vielen anderen Dingen von dennen ich schon gehört habe, muss ich mir mal noch Gedanken machen :sm18::sm19:

Wie würdet ihr das Problem bis hierher angehen. Auf welche Art den Import machen ? Die Aufträgssortierung oder auch -bearbeitung usw...

Vielen dank überhaupt erstmal für das bis hierher lesen


----------



## Larry Laffer (15 Februar 2009)

Hallo Garog,
ich hatte mal ein ähnliches Problem. Bei mir war es eine Kommissionieranlage, die aus einem vorhandenen Material-Bestand und einer vorhandenen Auftragsliste die optimale Bearbeitung erarbeiten sollte. Auch sollte es möglich gewesen sein, dass der Bediener im Grunde ALLES irgendwie manipulieren können sollte (soweit richtig und sinnvoll).

Ich war "damals" der Meinung und bin es auch noch heute, dass das nicht unbedingt die Aufgabe für die SPS und sehr wahrscheinlich auch nicht für eine Visu ist - m.E. wäre Flex mit der geschilderten Aufgabe auch überfordert. Ich hatte mich also dazu entschlossen, dass das eher etwas für ein seperates Programm ist. Ich hatte mir da auf Basis von Excel mit vielen schönen Scripten etwas zusammengebaut, das dann diese Aufgabe übernommen hatte und an die SPS das fertige Ergebnis übergeben. Das hat diese dann abgearbeitet und an Excel zurück-gemeldet.

Vielleicht hilft dir das als Vorschlag oder Inspiration weiter ...

Gruß
LL


----------



## Ralle (15 Februar 2009)

Ich hatte, genau wie Larry auch den "spontanen" Einfall, daß das eher etwas für ein PC-Programm ist. Das sortieren alleine hätte man ja mit SPS oder WinCCFlex evtl. noch erledigen können. Wenn dann aber der Bediener noch umsortieren können soll, stellt sich mit da die Frage, wie genau sollte er das mit der Visu praktizieren? Natürlich könnte er eine Reihenfolge als String (oder wie auchimmer) angezeigt bekommen und dann einen veränderten String eingeben. dann muß aber wiederum eine Plausibilitätskontrolle gemacht werden, ob er nicht fehlerhafte Einträge produziert hat etc. Do etwas kann man in höheren Programmiersprachen ganz gut mit Listen machen. Da hat man komfortable Möglichkeiten Die Position einzelner Einträge zu ändern und das auch dem Bediener recht einfach zu machen, also mit der Maus oder Pfeiltasten. Excel würde wohl auch gehen, wenn man keine Programmiersprache wie Delphi oder VB oder VC zur Verfügung hat oder damit noch nicht gearbeitet hat. Dazu noch Libnodave, um die Daten in die SPS zu bekommen.

Ansonsten, wenn es wirklich kein externer PC mit einem Programm sein soll, würde ich auch eher die SPS und dann aber SCL an den Start gehen lassen. Dazu Funktionen für das Sortieren nach unterschiedlichen Kriterien einsetzen. Außerdem einen DB, der die Aufträge und n den Aufträgen die die Pakete verkettet. Man kann diese dann in der Visu mit einer Nummer anzeigen, die der Reihenfolge entspricht. Wenn der Bediener diese Nummer ändert, muß der Auftrag dann an der richtigen Stelle einsortiert, alle anderen müssen entsprechend verschoben werden. Das ist nicht ganz trivial würde ich meinen. Wie gesagt, Programmiersprachen wie Delphi. VB etc. nehmen einem da unendlich viel Verwaltungskram ab.


----------



## Kai (15 Februar 2009)

Ich habe noch nicht genau verstanden, was ein Auftrag ist. 


```
Auftrag,Pos.,Paket,Stücklist.-Nr.,Stückzahl,Länge
[COLOR=red]901268680[/COLOR],1,1,1,8,5855,    [COLOR=red]Auftrag A (?)[/COLOR]
[COLOR=red]901268680[/COLOR],1,2,1,6,5855,
[COLOR=blue]901268870[/COLOR],1,1,2,1,6840,    [COLOR=blue]Auftrag B (?)[/COLOR]
[COLOR=blue]901268870[/COLOR],1,1,3,2,7500,
[COLOR=blue]901268870[/COLOR],1,1,4,2,6100,
[COLOR=blue]901268870[/COLOR],1,1,7,3,6870,
[COLOR=blue]901268870[/COLOR],1,2,1,6,5495,
[COLOR=blue]901268870[/COLOR],1,2,4,2,6100,
[COLOR=blue]901268870[/COLOR],1,3,1,8,5495,
[COLOR=blue]901268870[/COLOR],1,4,1,5,5495,
[COLOR=blue]901268870[/COLOR],1,5,5,4,4060,
[COLOR=blue]901268870[/COLOR],1,6,6,4,1900,
[COLOR=darkred]901268969[/COLOR],1,1,1,2,4150,    [COLOR=darkred]Auftrag C (?)[/COLOR]
```
 
Gehören alle Zeilen in der Tabelle mit der selben Auftragsnummer zu einem Auftrag?

Besteht der Auftrag A also aus den ersten zwei Zeilen der Tabelle, der Auftrag B aus den nächsten zehn Zeilen der Tabelle und der Auftrag C aus der letzten Zeile der Tabelle?

Gruß Kai


----------



## Garog (15 Februar 2009)

Vielen Dank schonmal 

@ Larrys Idee
ich denke da stehe ich jetzt vor genau dem selben "Problem" wie du damals 
bisher ist es so, dass es bei dem Kunden einen Menschen gibt, der alle Aufträge zusammenfast die produziert werden sollen und dann in eine Exceltabelle einträgt und dort einen Export in eine .csv Datein macht.
Da den ihr System schon sehr alt ist und bei der Firma weltweit im Einsatz ist, wird es dort auch erstmal keinen anderen Weg geben. Allerdings spielen sie mit dem Gedanken die Aufträge später mal aus dem Programm selbst direkt in eine .csv Datei zu schreiben.
Gewollt ist es bisher nicht mit dem Umweg über Excel. Ich habe dort auch versucht dort einzugreifen, das gleich an der Stelle sortiert wird. Allerdings möchte der Kunde das nicht, weil sie nicht wissen ob sie diese Art der Schnittstelle später in Ihr System integriert bekommen. Daher ist es gewollt, dass dieser Teil bei mir bleibt.

@ Ralle
mit einem extra Programm wäre das wunderschön einfach zu realisieren. Da sehe ich vor meinem Auge auch schon den Quelltext in C daherfliegen.
Aber das wäre doch zu einfach.
Bisher ist es nämlich genau so gemacht, das die Auftragseingabe über ein extra Programm läuft. Nur sortieren kann dieses noch nicht selbstständig.
Hier kommt wieder der Kunde ins Spiel der auch diesen Weg anders gelöst haben möchte und das ganze als "All-in-one" Paket haben möchte.

Alles also nicht so einfach  so wie es sich der Kunde wünscht ist es, wenn es fertig ist, auch eine wunderbare Sache die für den Bediener und dem Menschen in der Verwaltung wirklich toll ist. Nur mein Weg dahin ist... nunja.. ihr seht selbst 
Kunde ist König, und solange er zahlt bleibt er das auch 

@ Kai
So wie du dachtest und es in deinem Beispiel gezeigt hast, ist es genau richtig getroffen 


Wie ich es mit mit der Änderbarkeit von allem dachte.
Ich ordne jedem Paket und jeder Tafel sowie jedem Auftrag eine interne ID zu.
Die kann der Bediener dann über die Visu verändern und ändert damit die Abarbeitungsreihenfolge sowie Anzeigereihenfolge.

Wie ich das ganze dann noch schön in eine Visu bringe, überlege ich gerade noch. Also wie ich es grafisch ansprechend und Bedienerfreundlich umsetzten kann.
Ich glaube da werde ich sehr viele Felder erstellen müssen wo ich viel mit sichtbar/unsichbar arbeiten muss.


Im übrigen gehört dieses Thema -> Flex 2008 zum Routing nutzen ?!  zum selben Kunden bzw Problem  was nicht das selbe sein soll(te)


----------



## Larry Laffer (15 Februar 2009)

Garog schrieb:


> ... bisher ist es so, dass es bei dem Kunden einen Menschen gibt, der alle Aufträge zusammenfast die produziert werden sollen und dann in eine Exceltabelle einträgt und dort einen Export in eine .csv Datein macht.
> Da den ihr System schon sehr alt ist und bei der Firma weltweit im Einsatz ist, wird es dort auch erstmal keinen anderen Weg geben. Allerdings spielen sie mit dem Gedanken die Aufträge später mal aus dem Programm selbst direkt in eine .csv Datei zu schreiben.
> Gewollt ist es bisher nicht mit dem Umweg über Excel. Ich habe dort auch versucht dort einzugreifen, das gleich an der Stelle sortiert wird. Allerdings möchte der Kunde das nicht, weil sie nicht wissen ob sie diese Art der Schnittstelle später in Ihr System integriert bekommen. Daher ist es gewollt, dass dieser Teil bei mir bleibt.


 
Ich greife jetzt nur mal diese Passage auf ...
Mein Vorschlag zielte (wie auch von Ralle schon richtig erkannt) auf ein eigenständiges Programm. Das der Kunde jetzt auch schon mit Excel arbeitet ist nett aber nicht zwingend von Nöten. Ich würde an dieser Stelle auch (einer sauberen Abgrenzung wegen) etwas eigenes machen ... Bei mir war damals (und wäre wahrscheinlich auch noch heute) Excel das Mittel der Wahl - deshalb hatte ich das Beispiel gebracht. Ein C- oder Delphi-Programm ist mit Sicherheit genauso gut und brauchbar.
Was ich dir vorschlagen wollte war in erster Linie die Aufgaben sinnvoll zu splitten. Ein PC-Programm macht die Verwaltung und die SPS übernimmt das Arbeiten. Die Visu könnte hier (allerdings mehr zur Bestätigung als zum Bediener-Eingriff) das Visualisieren des laufenden Prozesses übernehmen.

Gruß
LL


----------



## Kai (15 Februar 2009)

Kai schrieb:


> ```
> Auftrag,Pos.,Paket,Stücklist.-Nr.,Stückzahl,Länge
> [COLOR=red]901268680[/COLOR],1,1,1,8,5855,    [COLOR=red]Auftrag A (?)[/COLOR]
> [COLOR=red]901268680[/COLOR],1,2,1,6,5855,
> ...


 


Garog schrieb:


> Dazu kommt nun das die SPS oder ein Script (Flexible auch vorhanden) die Aufträge sortieren soll nach bestimmten Kriterien dem Anlagenbediener eine mögliche Abarbeitung vorschlagen soll.
> Der Bediener soll nun die Möglichkeit haben, die Sortierung zu ändern, sowie möchte er auch die Paketproduktionsreihenfolge in den einzelnen Aufträgen variieren können.
> 
> Bsp.
> ...


 
Nach welchen Kriterien soll die Anlage denn die Reihenfolge der Aufträge sortieren?

Gruß Kai


----------



## Garog (16 Februar 2009)

> Was ich dir vorschlagen wollte war in erster Linie die Aufgaben sinnvoll zu splitten. Ein PC-Programm macht die Verwaltung und die SPS übernimmt das Arbeiten. Die Visu könnte hier (allerdings mehr zur Bestätigung als zum Bediener-Eingriff) das Visualisieren des laufenden Prozesses übernehmen.



Fast genau so ist es ja bereits und genau so wie du es andachtest will es der Kunde nicht.
Irgendwer hat dem Entscheidungsträger ins Ohr gesetzt, das er Felxible nehmen soll für alles. Das will er und hat sich auch leider nicht von anderen Dingen überzeugen lassen. Daher bleibt mir hier keine Wahl.
Ich denke mal es geht darauf zurück das die bisherigen Programme alle in VB Programmiert sind und bei dem Kauf der Anlage vor Jahren ein Fehler gemacht wurde. Den Quelltext dieser Programme gibt die Firma die die Anlage "erschaffen" hat nicht herraus. Know-How ist hier das Zauberwort und Vertraglich gereglt dazu auch noch.
Aus diesem "Fehler" wollte der Herr wohl lernen und hat sich dazu entschieden etwas einzusetzten wo er nicht mit an eine Firma gebunden ist.
Wobei ich dazu sagen muss das es sich hierbei um einen französischen Konzern handelt der Weltweit arbeitet und einer der Top 5 in der Branche ist.
Da ist es noch schwerer irgendwelche eigenen Ideen vorzustellen, da der Entscheidungsträger nicht mal nebenan sitzt 

Um die Lösung Visu über Flex und SPS-Steuerung werde ich nicht drumherum kommen. Egal wie ich es drehen und wenden.



> Nach welchen Kriterien soll die Anlage denn die Reihenfolge der Aufträge sortieren?



Vielen  Wobei die einzelnen Kriterien bestimmte Prioritäten haben.
Vormaterialdicke, -breite, -farbe, Profilart, Chemiegüte, Temperatur, Form etc etc..


----------



## rostiger Nagel (16 Februar 2009)

Hallo Garog,
wenn ich das richtig gelesen habe, rüstest du doch die Microbox nach. Da hast du doch eine Plattform die so etwas beherschen sollte.
Schreibt doch in VB eine Anwendung, die Daten zur Runtime tauscht dann über OPC aus. Versuch es besser nicht in flexible zu lösen, kann sein das du es hinbekommst, aber die Arbeit und die Nachteile bei flexible werden dich ganz schön ins schwitzen bringen.

gruß Helmut


----------



## Garog (16 Februar 2009)

Reparatur schrieb:


> Hallo Garog,
> wenn ich das richtig gelesen habe, rüstest du doch die Microbox nach. Da hast du doch eine Plattform die so etwas beherschen sollte.
> Schreibt doch in VB eine Anwendung, die Daten zur Runtime tauscht dann über OPC aus. Versuch es besser nicht in flexible zu lösen, kann sein das du es hinbekommst, aber die Arbeit und die Nachteile bei flexible werden dich ganz schön ins schwitzen bringen.
> 
> gruß Helmut



Naja, das sehe ich ja genau so. Ist ja auch schon mehrmals vorgeschlagen worden. Aber wie bereits gesagt möchte der liebe Kunde das nicht. Flexible und SPS Programm ist die vorgabe. Im Flex darf ich ruhig Scripten. Aber nix weiter über andere Programme...

Flex und SPS stehen also fest. Nun gilt es aus dieser Kombi die schönste Lösung herraus zu finden


----------

