Moin TIA123,
i.M. wird ja viel von einem digitalen Zwilling gesprochen. Wenn Du in Pulsen weißt, wie lang Deine Förderstrecke ist (z.B. 1000 Pulse lang), könntest Du Dir z.B. ein Array[0..999] of int deklarieren. Zum Anfang der Strecke kommt dann eine Lichtschranke. Vorher könnte es noch eine Entscheidung geben (Barcodeleser), aufgrund dessen entschieden wird, wo das Fördergut ausgeschleust werden soll.
Es kann ja sein, dass es drei Ausschleusestellen gibt. Also wird für ein Fördergut mit Ziel 1 die 1 in das Array eingetragen. Dabei werden beim Array bei jedem Puls die Daten weitergeschoben und in Array[0] solange die Entscheidungsnummer eingetragen, solange die Lichtschranke am Anfang der Strecke belegt ist. Wenn Du einen großen Wert einträgst, der sich nicht auf eine Ausschleusestelle bezieht (z.B. 99), könnte das z.B. eine Fehllesung sein oder bewusst ein Fördergut ohne Barcode oder irgendetwas anderes. Das kann dann immer in der niO-Bahn ausgeschleust werden oder einfach hinten runter fallen, weil nirgends ausgeschleust wird.
Jetzt laufen Deine Pakete virtuell auf deinem Datenbaustein lang und es ist sogar direkt zu sehen, wie viel Pulse ein Fördergut lang ist. Damit kannst Du jetzt alles machen was Du willst:
Ausschleuseklappen betätigen, Pakete löschen, die real nicht da ankommen, wo sie virtuell sein müssten (irgendwelche Lichtschranken o.ä.). Dann wird die Strecke automatisch bereinigt, wenn ein Fördergut einfach per Hand entnommen wird. usw. usw.
VG
MFreiberger