Warteschleife programmieren

Loderan

Level-2
Beiträge
13
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,
ich möchte gern eine Warteschleife programmieren. Im Prinzip sollte es so aussehen, das ich 2 Vorratstanks habe aus denen 6 andere Tanks befüllt werden.
Die beiden Vorratstanks werden mit Temperaturfühlern überwacht. Es soll immer der Tank mit dem niedrigsten Füllstand vorrangig befüllt werden, auf ein Niveau von
80% und es soll immer der Vorratstank ausgewählt werden der in dem Moment die niedrigste Temperatur aufweist. Die anderen Pumpvorgänge sollen in Warteschleife gelegt werden um zu verhindern das einer der 6 Tanks leer läuft.
Ich programmiere im FUP und möchte fragen ob sich dieses Programm überhaupt so schreiben lässt oder ob das nur im ST zu realisieren ist?

Ich danke euch
 
Ich würde nicht den Begriff Warteschleife verwenden, sondern vielleicht Bedingung.

Weil eigentlich hast du ja nur die Bediung das wenn nachgefüllt wird dürfen die anderen nicht laufen, zumindest lese ich das so.

Also kannst du noch bei deinen anderen vorgängen einfach an ein AND ein NOT Füllvorgang hängen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich programmiere im FUP und möchte fragen ob sich dieses Programm überhaupt so schreiben lässt oder ob das nur im ST zu realisieren ist?
Es ist am einfachsten im FUP zu schreiben, da Du hier während der Ausführung und Beobachtung auch gleich Fehler sehen kannst oder die Zustände einsiehst warum er nun was macht.

Es ist auch in ST möglich, beachte jedoch das hier, je nach Wissensstand, das Beobachten nur schwieriger wird.
 
Vielen Dank für eure schnellen Antworten,

wie kann man denn am einfachsten die Auswahl des Tanks mit der niedrigsten Temperatur festlegen? Ich habe da keine Idee...:unsure:
 
Eine Lösung, die für beliebig viele Tanks erweiterbar ist:

Code:
Temperaturen    : Array [1..6] of Real;
x                : INT;
MinTempIdx        : INT;

MinTempIdx := 1;

for x := 2 to 6 do
    if Temperaturen[x] < Temperaturen[MinTempIdx] then
        MinTempIdx := x;
    end_if
end_for

//Hier enthält MinTempIdx jetzt den Tank-Index mit der geringsten Temperatur
 
Du könntest 5x den MIN-Baustein hintereinanderschalten, dann hättest Du die kleinste Temperatur ermittelt. Und dann vergleichst Du diese mit den Tanktemperaturen um auf den Tank zu kommen, welcher der gesuchte ist.

1646121279539.png
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ganze vier Minuten waren vergangen und bettelst schon um eine schnelle Lösung?
Zeit ist Geld, Dagobert! Das muss man Dir doch nicht sagen? ;)

Die Aufgabe ist noch recht undefiniert.
Z.B. was, wenn beide VorratsTanks die minimale Temperatur oder mehrere der 6 "Ziel"-Tanks den minimalen Füllstand haben?
Wie sollen die Füllstände der VorratsTanks berücksichtigt werden?
Dürfen mehrere ZielTanks gleichzeitig befüllt werde? Wenn nicht, welche Prioritäten sollen gelten?
Da bleibt noch viel zu tun für den TE, sich darüber Gedanken zu machen bzw. die entsprechenden Informationen einzuholen (und diese hier evtl. noch zu äussern).
 
Ich wollte jetzt hier nicht den Eindruck erwecken, nur nach einer schnellen Lösung zu "betteln". Ich hatte einfach keine Idee, wie man den Lösungsansatz aus dem ST in FUP umsetzt da ich nicht im ST programmiere. Dieses Projekt ist wesentlich umfangreicher, nur den Part mit der Auswahl des Tanks nach Temperatur wusste ich mir nicht zu erklären.

Ich danke euch für eure Antworten. Den Rest werde ich nun erst einmal versuchen allein zu lösen.
 
Zurück
Oben