TIA einfache Pumpensteuerung

Gerd22145

Level-1
Beiträge
3
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo liebe Wissenden,
ich muss eine CPU 1212 AC/DC/REY mit S7 V15.1 so steuern, das eine Pumpe bei bestimmten Temperaturen bestimmte Laufzeiten hat;
z.B. 5°C = 5 Min. Ein, 20 Min Aus, usw. ; bei anderen Temperaturen dementsprechend andere Lauf-bzw. Pausenzeiten.
Bei einer alten Möller-SPS hatte ich dafür "Blinkrelais" dementsprechend eingestellt, den Analogeingang habe ich schon normiert und scaliert
und über den IN_RANGE - Vergleicher meine relevanten Temperaturbereiche eingestellt, jetzt fehlt mir nur je Temp.-Bereich das Zeitrelais.
Problem ist für mich, das das Eingangssignal ja ständig anliegt, somit ein IEC_TIMER nur einmal funktioniert.
Die Funktion ist für eine Filteranlage eines Badesee´s, d.h. die Pumpe muss "rund um die Uhr" getaktet laufen, jedoch abhängig von der
Temperatur, da bei höheren Temperaturen die Verschmutzung aufgrund Algenbildung höher ist.
Ich hoffe jemand von euch findet "mein" Blinkrelais!
LG
Gerd
 
Wie wär's mit PWM (PulseWidthModulation)?
Entweder einen entsprechenden Baustein finden oder mit 2 Timern (wobei der eine den anderen startet, wenn er selbst abgelaufen ist und umgekehrt) oder einfacher mit einem Zähler (der endlos von 0 bis n zählt, z.B. bei 0 einschaltet und bei x ausschaltet und selbst bei erreichen von n wieder bei 0 zu zählen beginnt) einen selbst stricken.
 
Zuletzt bearbeitet:
Ist denn bezüglich der Dauer von . . .
- Pumpe eingeschaltet,
- Pumpe ausgeschaltet,
- Zyklus, innerhalb dessen sich das Ein- und Ausschalten wiederholen soll
. . . etwas vorgegeben bzw. zu beachten?

Wenn die Zeit für Pumpen gleich bleiben soll und die Zeit für Pause variiert wird
oder
wenn die Zeit für Pause gleich bleiben soll und die Zeit für Pumpen variiert wird,
nur dann würde ich die TimerMimik in Erwägung ziehen.

Wenn die Summe aus "Zeit für Pumpen" + "Zeit für Pause" immer gleich bleiben darf bzw. soll, dann würde ich die Variante mit dem Zähler bevorzugen, um nicht zwei Timer mit zwei verschiedenen Werten versorgen zu müssen.

Man könnte z.B. den Zähler fortwährend von 1 bis 100 zählen lassen und wenn der ZählerStand <= x (UND ZählerStand > 0 *) ist, die Pumpe laufen lassen.
Der Wert x gibt dann an, wieviel % der Zeit die Pumpe eingeschaltet ist - das erspart ein wenig Kopfrechnen.
Braucht man eine feinere Abstufung, zählt man z.B. von 1 bis 1000 und gibt x in Promille vor.

Nun muss man nur noch überlegen, in welchen ZeitAbständen der Zähler inkrementiert werden soll.
Als TaktGeber könnte natürlich ein Timer oder - wie oben - eine Kombination aus zwei Timern dienen. Oder z.B. der SekundenTakt der Steuerung.

*): ich stelle mir vor, dass man den Zähler auf 0 "einfriert", um die Pumpe komplett abzuschalten, deshalb der Zusatz "UND ZählerStand > 0".
 
Zuletzt bearbeitet:
Heinileini, PWM wäre auch mein erster Gedanke. Aber warum willst du Impulse zählen? Warum nicht beim Format TIME bzw. Millisekunden bleiben? Eine Mindest ein- und Mindestausschaltzeit sollte man bei so etwas auch berücksichtigen.
 
Ich würde wohl auch zwei TON-Timer verwenden, dann hast du zumindest schon mal die Möglichkeit beide Zeiten variabel zu gestalten.
Die Zeitwerte für die Timer könntest du mit der folgenden Funktion berechnen lassen:
Code:
FUNCTION "SollzeitBerechnen" : Time
VERSION : 0.1
   VAR_INPUT 
      Temperatur : Real;   // Ist-Temperatur [°C]
      TemperaturMin : Real;   // Min-Temperatur [°C]
      TemperaturMax : Real;   // Max-Temperatur [°C]
      ZeitMin : Time;   // Zeit bei Min-Temperatur
      ZeitMax : Time;   // Zeit bei Max-Temperatur
   END_VAR

   VAR_TEMP 
      temp_out : Real;
      temp_tMin : Real;
      temp_tMax : Real;
   END_VAR

BEGIN
	#temp_tMin := DINT_TO_REAL(TIME_TO_DINT(#ZeitMin));
	#temp_tMax := DINT_TO_REAL(TIME_TO_DINT(#ZeitMax));
	#temp_out := ((#Temperatur - #TemperaturMin) / (#TemperaturMax - #TemperaturMin) * (#temp_tMax - #temp_tMin)) + #temp_tMin;
	#temp_out := LIMIT_REAL(IN := #temp_out, MN := #temp_tMin, MX := #temp_tMax);
	#SollzeitBerechnen := DINT_TO_TIME(REAL_TO_DINT(#temp_out));
END_FUNCTION

Diese rufst du dann jeweils für die Einschaltzeit und die Ausschaltzeit auf, und das Ergebnis der Funktion ist dann der Zeitwert für den TON. Bei den TON wird der Parameter an PT immer nur bei der Einschaltflanke ausgewertet, d.h. der Wert der dann ansteht wird für die Zeitdauer verwendet.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Aber warum willst du Impulse zählen? Warum nicht beim Format TIME bzw. Millisekunden bleiben?
Wegen der Prozente/Promille sozusagen :ROFLMAO: Kann man so tun, wie Du vorschlägst.
Ich vermute lediglich, dass es bei der Anwendung nicht auf eine MilliSekunden-genaue Einhaltung der Zeitwerte ankommt.
Und das Zählen ist nicht sooo wahnsinnig mühsam, wie Du vielleicht befürchtest!?
Z.B.:
Zähler := Zähler MOD 1000 + 1;
PumpeEIN := Zähler <= Promille AND Zähler > 0;

Eine Mindest ein- und Mindestausschaltzeit sollte man bei so etwas auch berücksichtigen.
D'accord, darum hatte ich u.a. auch danach gefragt:
Ist denn bezüglich der Dauer von . . .
- Pumpe eingeschaltet,
- Pumpe ausgeschaltet,
. . . etwas vorgegeben bzw. zu beachten?
Aber solch hinterhältige Fragen bleiben eben unbeantwortet.

Gruss, Heinileini
 
Die Zeitwerte für die Timer könntest du mit der folgenden Funktion berechnen lassen:
. . .
Diese rufst du dann jeweils für die Einschaltzeit und die Ausschaltzeit auf, und das Ergebnis der Funktion ist dann der Zeitwert für den TON.
Das habe ich leider nicht verstanden, Thomas.
Dieselbe Funktion soll zur Ermittlung der Zeiten verwendet werden, die da sagen, wie lange die Pumpe eingeschaltet bzw. wie lange sie ausgeschaltet bleiben muss?
Wenn keine plötzlichen TemperaturSprünge auftreten, hätte man dann doch immer ca. 50% der Zeit die Pumpe am laufen?

Und was macht diese Funktion? Sie koordiniert sozusagen die EingangsTemperatur mit der Dauer am Ausgang so, dass bei der MinTemperatur die MinDauer geliefert wird und bei der MaxTemperatur die MaxDauer. Dann brauchen wir jetzt nur noch das "Poti", mit dem wir die FörderMenge der Pumpe so einstellen können, dass die Pumpe zum gewünschten Ergebnis führen kann? Hmmm.

Ich weiss auch nicht, ob der TE von einem linearen Zusammenhang zwischen Temperatur und durchschnittlicher FörderMenge ausgeht oder ausgehen kann.
Dies scheint aber ohnehin nicht der Teil der Aufgabe zu sein, für den er um Beistand gebeten hat.

Gruss, Heinileini
 
Zurück
Oben