Lagerverwaltungssystem programmieren

Swissfighter88

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

Ich beschäftige mich gerade das erste Mal mit einer kleinen Lagerverwaltung. Nach einigen Ansätzen habe ich nun auch einige Probleme...

Aufbau:

Befüllplatz
[__A__] [__1__] [__2__] [__3__] [__4__] <-- Palettenplätze

[__S__] <-- Schlittenplatz (Fährt je nach Auftrag zum gewünschten Platz)

Funktion:
Die Plätze 1-4 können von Hand mit einer Palette belegt werden. Der Schlitten holt die Palette und bringt sie zum Befüllplatz. Die Palette x ist nun mit Produkt y befüllt, sie kann wieder an einen freien Platz.
Das Szenario wiederholt sich beliebig.

Mein Ansatz:
Ich mache eine Struktur "Platz". Dort packe ich die Platzinformationen rein, z.B. Palette da, Paletteninhalt, etc..
Da die Palette von Hand aufgelegt werden kann gehe ich in einem ersten Schritt von einer leeren Palette aus. Das selbe Prinzip möchte ich beim entfernen einer Palette anwenden (Platz ist dann natürlich leer).
Eigentlich ist es jetzt nur noch eine reine Datenschieberei. Z.B. Daten von Platz X wandern auf den Schlitten > Schlitten fährt > Daten von Schlitten wandern auf den Befüllplatz > Daten werden verändert > Daten wandern wieder auf
den Schlitten > Schlitten fährt > Daten wandern wieder auf einen Platz. Klingt einfach, macht aber Mühe.

Was kann ich momentan:
Ich erkenne ob der Platz belegt ist oder nicht 1/0. Bei einem Zustandswechsel des Platzes (1 auf 0 oder 0 auf 1) speichere ich die alten Platzdaten und schreibe als erstes die neuen Daten. Die neuen Daten haben in einem ersten Schritt
immer die gleichen Inhalte. Entweder "leere Palette" wenn Platzzustandswechsel 0 auf 1 (Palette wurde von Hand aufgegeben) oder "Keine Palette" wenn Platzzustandswechsel 1 auf 0 (Palette wurde von Hand entnommen).

Meine Idee und das Problem:
In einem ersten Schritt ist der neue Inhalt immer "leere Palette", wenn jetzt nun aber der Schlitten die Palette gebracht bzw. geholt hat, kann der Platzinhalt auch anders sein. Z.B. "Produkt A". Im Grunde beschäftige ich mich gerade
mit der sicheren Datenschieberei.

Hat jemand einen guten Ansatz wie man diese Daten sicher umher schiebt? Was muss erfüllt sein das jetzt der Austausch (Platz <-> Schlitten) erfolgt ist. Wann schiebe ich die Daten?
Oder ist eventuell meine Grundidee schon falsch? Eventuell hat eine Lagerverwaltung nach einem ganz anderen Prinzip zu funktionieren.

Über einen Tipp oder eine Aufklärung wäre ich dankbar :) !

Gruss
 
Hi,

meiner Meinung nach ist es am Besten, die Daten dann zu schieben, wenn du auch physikalisch die Paletten "schiebst". Das heißt,
Wenn du eine leere Platte auf den Schlitten bewegt hast. Machst du zwei Sachen. Zuerst die Daten vom Platz auf den Schlitten kopieren und dann den Platz wieder als leer markieren.
Wenn du dann befüllt hast: Daten vom Schlitten updaten.
Wenn du dann mit Schlitten die Palette wieder auf den Platz gebracht hast: Daten vom Schlitten auf den Platz schreiben und den Schlitten wieder leerschreiben.

Soweit mal mein Vorschlag. Kann man bestimmt auch anders machen. Aber ich glaube ich täte das so machen. Wobei ich die Datenschieberei bei dem Projekt eher als kleineres Problem ansehe. :)

Gruß
wonderfulworld
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich arbeite in einer Firma, die Fördertechnik (Rollenbahnen, Kettenförderer, Drehbühnen, Winkelübergaben, Verschiebewagen, Senkrechtförderer etc) herstellt und liefert (eizelne Komponenten und komplette Anlagen)

Ich programmiere Anlagen grundsätzlich als Ansammlung von Segmenten (damit man bei gleichen Anlagenverläufen die FB's wiederverwenden kann) mit jeweils einem eigenen FB/DB und einem "Arbeits"-DB mit dem alle Variablen, sprich Sensoren und Motoren an den FB übergeben werden..
D.h. Immer, wenn z.B. eine Palette von einem Segment auf das Nächste übergeben wird, erfolgt eine Übergabe mit Signaltausch wie eine Übergabe an eine Fremdanlage (z.B. Maschine, die wir nicht geliefert haben)
Wie folgt: Quelle meldet Palette an, Ziel gibt Freigabe usw. bis Ziel sagt, das Palette angekommen ist.

Wenn ich eine Anlage mit Datenverfolgung programmiere, mache ich das genauso, habe im Signaltausch nur noch ein paar Bitmeldugen mehr, die sich auf die Datenweitergabe beziehen.
Also: Palette Läuft nur wenn Qelle sie Anmeldet mit dem Zusatz Daten vorhanden. Ziel gibt nur Freigabe, wenn keine Palette vorhanden und keine Daten auf dem Platz vorhanden.
Nach dem die Palette auf dem Zielplatz angekommen ist, meldet dieser dem Ziel, das er jetzt die Daten will.
Erst wenn diese auch noch angekommen sind, ist der Transport fertig und kann beendet werden.

Innerhalb eines Segmentes, also eines FB's geht das genauso, natürlich ohne Signaltausch, aber mit der Kontrolle, ob der Quellplatz belegt ist (Palette und Daten) und der Zielplatz leer (natürlich auch Palette und Daten)

Ich hoffe, ich habe ein paar sinnvoll Denkanstösse gegeben.

LaoLaub
 
Zurück
Oben