Flexibles zeitverzögertes Setzen von vielen Ausgängen

fabey

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

ich stehe immer wieder vor dem Problem dass es z.B. 10 Pumpen gibt, aber nicht alle gleichzeitig gestartet werden sollen. Alle hintereinander mit etwas Zeitverzögerung dazwischen. Es muss nicht immer in der gleichen Reihenfolge sein, es könnten auch mal nur z.B. die letzten 5 angehen und Pumpen zwischendurch wieder aus gehen.

Hat da jemand eine Idee für einen Ansatz der möglichst flexibel und einfach ist mit dem man so etwas umsetzt - verzögertes Setzen von Ausgängen.

Vielen Dank
 
Das wird sich stark danach richten, wonach die Pumpen gesetzt werden sollen? Gibt es Startbefehle aus einer automatischen Logik heraus? Werden die Pumpen in Abhängigkeit von Messungen gestartet? Gibt es Taster für das Starten?

Mein erster Gedanke wäre, die Anforderungen für die Pumpen in einen FIFO zu setzen. Dann kann mit der entsprechend gewünschten Verzögerung das jeweils erste Element verarbeitet werden.

Es bräuchte also einen FIFO, der die Reihenfolge der Anforderungen speichert. Und eine Logik, die die Zeit seit dem letztem Einschaltbefehl misst und nach Ablauf der Verzögerung den Ansteuerbefehl für das nächste Element im FIFO setzt.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Die Ansteuerlogik ist für meine Frage hier egal, könnte auch etwas ganz anderes sein. Also es gibt irgendwo 10 Bits die sagen "Ich will gestartet werden" und 10 Bits die sagen "Jetzt starten". Die Frage ist wie setzt man jetzt am besten die 10x "Jetzt starten", so dass es zeitverzögert ist.

FIFO sagt mir natürlich etwas. Da ich das möglichst flexibel haben will klingt das auch gut (einfach irgendwo eine Array-Länge vorgeben z.B.). Hast du da noch einen konkretern Vorschlag wie man das umsetzen würde?
 
FB mit x Bool-Eingängen (x-mal "Ich will gestartet werden"). Bei positiver Flanke wird die Nummer des Eingangs in den FIFO an die nächste freie Stelle geschrieben.

Wenn das erste Element im FIFO ungleich 0 ist, setze den jeweiligen Ausgang ("Jetzt starten") auf TRUE (musst du dir nur extern speichern, ich geh hier von einem Startimpuls aus) und setze das erste Array-Element auf 0. Starte die Zeitverzögerung. Nach Ablauf der Verzögerung wird der FIFO nachgerutscht.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich wäe ja für dieses Thema:
 
Ich mache das bei meinen Objekten recht trivial. ich habe an jedem Objekt einen InOut Anschluss der da heisst "Zyklussperre". das kann im einfachsten Fall ein Boolean sein, an jedem objekt wird da der gleiche Merker angeschlossen. Wenn der Bool false ist, kann das Objekt die "Pumpe" starten, wenn es dies tut, dann wird Zyklussperre in diesem Baustein gesetzt und der nächste baustein der da drauf schaut, sieht ja dann dass der Bool true ist und startet entsprechend nicht und macht auch nichts mit dem Bool.
Irgendwo im Programm ist dann noch ein Zeitglied welches diesen Bool überwacht und z.B. nach 2s wieder zurücksetzt.
Das ist so die trivialste Lösung. Die kann man aber dann noch wesentlich eleganter machen und z.B. statt eines Bools auch eine Struktur übergeben wo neben der Sperre auch noch die Wartezeit mitgegeben wird.
 
Zurück
Oben