FoodFighter
Level-2
- Beiträge
- 29
- Reaktionspunkte
- 2
-> Hier kostenlos registrieren
Hallo allerseits,
ich stolpere immer wieder mal über folgende (exemplarische) Aufgabenstellung:
1. Mehrere Behälter werden nacheinander wahllos von einer Befüllgarnitur befüllt.
2. In den Behältern passiert irgendetwas (Kochen, Mischen, Rühren, Mahlen, ...whatever...) teilweise mit unterschiedlicher Verweildauer.
3. Die Behälter entleeren alle in einen gemeinsamen Ablassbehälter, daher müssen sie in exakt der Reihenfolge geleert werden, wie sie befüllt worden.
Die Gründe für die definierte Entnahme nach FIFO-Prinzip sind unterschiedlicher Natur. Teilweise geht es darum eine Chargen-Nummer beizubehalten, teilweise soll die Verweildauer gering gehalten oder der Prozess möglichst gleichmäßig gehalten werden, manchmal will man einfach nur wissen, wer welcher Behälter zuerst befüllt wurde und welcher als zweites. - Letztendlich tut der Grund wenig zur Sache: Es soll nach FIFO geleert werden.
Prinzipiell gibt es genau dafür fertige FIFO-Bausteine (der aus der OSCAT-Bibliothek ist mir persönlich sehr sympathisch, da er mit Arrays, statt mit DBs arbeitet).
Problem dabei ist oftmals, dass Fehler-Fälle damit schwer zu handhaben sind.
Beispiel:
- 3 Behälter werden in der Reihenfolge 2-1-3 Befüllt.
- Beim Prozess in Behälter 1 tritt ein unvorhergesehenes Ereignis ein, noch bevor Beh. 2 abgelassen hat. -> Es wird händisch eingegriffen und er wird außerhalb der Automatik-Reihenfolge im Handbetrieb geleert.
-> jetzt wird's schwierig bzw. umständlich das dem FIFO-Baustein mitzuteilen und den Array / DB anzupassen.
Lange Rede, wenig Sinn:
Ich fand nun mehrfach eine Schieberegister-Lösung nach einem ähnlichen Schema mit RS-Gliedern als Speicher.
(Das habe ich hier im Forum auch schonmal irgendwo ähnlich gesehen - finde es aber nicht mehr)
Hier mal als simples Beispiel in einem Logo-Programm (einfach, weil's kompakter ersichtlich wird, als S7-Netzwerke oder CFC-Pläne)

Das Beispielprogramm habe ich auch mal in den Anhang gepackt.
Mit 3 "Behältern" ist das alles noch relativ kompakt und überschaubar.
Mit 6 Behältern wäre das Ganze schon doppelt so breit und doppelt so hoch.
Das Ganze funktioniert auch gut und tut was es soll.
Dennoch frage ich mich immer wieder, wenn ich vor solch einer Lösung sitze, ob das Ganze nicht "eleganter" und Ressourcensparender umsetzbar wäre.
Mir fällt tatsächlich wenig ein - daher hier die Frage in die Runde: Wie geht ihr mit solchen Aufgabenstellungen um bzw. hat jemand eine elegantere Lösung hierfür parat?
Ich bin fast geneigt mir einen fertigen FB mit 8 "Speichereingängen" zu bauen, um mir das wiederkehrende gleiche Schema zukünftig zu sparen, wenn es mal wieder der Fall wäre.
Dennoch finde ich die Aufgabenstellung auch gar nicht so unüblich, daher kann ich mir nicht vorstellen, dass es dafür nicht schon irgendwas sinnvoll nutzbares gibt.
Bin gespannt auf eure Ideen (gerne auch in CFC oder S7-FUP/KOP/AWL)
Danke
Grüße
Markus
ich stolpere immer wieder mal über folgende (exemplarische) Aufgabenstellung:
1. Mehrere Behälter werden nacheinander wahllos von einer Befüllgarnitur befüllt.
2. In den Behältern passiert irgendetwas (Kochen, Mischen, Rühren, Mahlen, ...whatever...) teilweise mit unterschiedlicher Verweildauer.
3. Die Behälter entleeren alle in einen gemeinsamen Ablassbehälter, daher müssen sie in exakt der Reihenfolge geleert werden, wie sie befüllt worden.
Die Gründe für die definierte Entnahme nach FIFO-Prinzip sind unterschiedlicher Natur. Teilweise geht es darum eine Chargen-Nummer beizubehalten, teilweise soll die Verweildauer gering gehalten oder der Prozess möglichst gleichmäßig gehalten werden, manchmal will man einfach nur wissen, wer welcher Behälter zuerst befüllt wurde und welcher als zweites. - Letztendlich tut der Grund wenig zur Sache: Es soll nach FIFO geleert werden.
Prinzipiell gibt es genau dafür fertige FIFO-Bausteine (der aus der OSCAT-Bibliothek ist mir persönlich sehr sympathisch, da er mit Arrays, statt mit DBs arbeitet).
Problem dabei ist oftmals, dass Fehler-Fälle damit schwer zu handhaben sind.
Beispiel:
- 3 Behälter werden in der Reihenfolge 2-1-3 Befüllt.
- Beim Prozess in Behälter 1 tritt ein unvorhergesehenes Ereignis ein, noch bevor Beh. 2 abgelassen hat. -> Es wird händisch eingegriffen und er wird außerhalb der Automatik-Reihenfolge im Handbetrieb geleert.
-> jetzt wird's schwierig bzw. umständlich das dem FIFO-Baustein mitzuteilen und den Array / DB anzupassen.
Lange Rede, wenig Sinn:
Ich fand nun mehrfach eine Schieberegister-Lösung nach einem ähnlichen Schema mit RS-Gliedern als Speicher.
(Das habe ich hier im Forum auch schonmal irgendwo ähnlich gesehen - finde es aber nicht mehr)
Hier mal als simples Beispiel in einem Logo-Programm (einfach, weil's kompakter ersichtlich wird, als S7-Netzwerke oder CFC-Pläne)

Das Beispielprogramm habe ich auch mal in den Anhang gepackt.
Mit 3 "Behältern" ist das alles noch relativ kompakt und überschaubar.
Mit 6 Behältern wäre das Ganze schon doppelt so breit und doppelt so hoch.
Das Ganze funktioniert auch gut und tut was es soll.
Dennoch frage ich mich immer wieder, wenn ich vor solch einer Lösung sitze, ob das Ganze nicht "eleganter" und Ressourcensparender umsetzbar wäre.
Mir fällt tatsächlich wenig ein - daher hier die Frage in die Runde: Wie geht ihr mit solchen Aufgabenstellungen um bzw. hat jemand eine elegantere Lösung hierfür parat?
Ich bin fast geneigt mir einen fertigen FB mit 8 "Speichereingängen" zu bauen, um mir das wiederkehrende gleiche Schema zukünftig zu sparen, wenn es mal wieder der Fall wäre.
Dennoch finde ich die Aufgabenstellung auch gar nicht so unüblich, daher kann ich mir nicht vorstellen, dass es dafür nicht schon irgendwas sinnvoll nutzbares gibt.
Bin gespannt auf eure Ideen (gerne auch in CFC oder S7-FUP/KOP/AWL)

Danke
Grüße
Markus