Schleife anhalten progr. in ST - mit TwinCat

sashluc

Level-1
Beiträge
12
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich möchte zu steuerungszwecken die Abarbeitung einer For Schleife für X- Sekunden unterbrechen. Jedoch habe ich bislang keine zufriedenstellende Lösung gefunden. Die Ausführung muss direkt in der Schleife "angehalten" werden können. Vielleicht hat jemand eine Lösung parat - vorzugsweise in ST.

Vielen Dank
Sash


Code:
    (* Routine zur Pumpensteuerung  *)
    FOR ZAEHLER := 1 TO 60 BY 1 DO
     IF SOLAR_FU_EIN = TRUE THEN
      TEMP_SOLAR_SPREIZUNG_IST := TEMP_SOLAR_MAX - TEMP_PF1_UNTEN;
      IF TEMP_SOLAR_SPREIZUNG_IST < TEMP_SOLAR_SPREIZUNG_SOLL AND SOLAR_FU_ANALOGWERT <= 32760 AND SOLAR_FU_ANALOGWERT >= 0 THEN
       SOLAR_FU_ANALOGWERT := SOLAR_FU_ANALOGWERT - 10;
      ELSIF TEMP_SOLAR_SPREIZUNG_IST = TEMP_SOLAR_SPREIZUNG_SOLL AND SOLAR_FU_ANALOGWERT <= 32760 AND SOLAR_FU_ANALOGWERT >= 0 THEN
       SOLAR_FU_ANALOGWERT := SOLAR_FU_ANALOGWERT;
      ELSIF TEMP_SOLAR_SPREIZUNG_IST > TEMP_SOLAR_SPREIZUNG_SOLL AND SOLAR_FU_ANALOGWERT <= 32760 AND SOLAR_FU_ANALOGWERT >= 0 THEN
       SOLAR_FU_ANALOGWERT := SOLAR_FU_ANALOGWERT + 10;
      END_IF
     ELSE
      SOLAR_FU_EIN := TRUE;
      SOLAR_FU_ANALOGWERT := 5000;
     END_IF
     (* #### HIER #### SCHLEIFE FÜR bestimmte Zeit anhalten *)
    END_FOR
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Vielen Dank für die Antwort.
:confused: Es währe sehr nett wenn Sie mir diesbezüglich ein kleines Beispiel geben könnten. Ich kann mir noch nicht vorstellen wie dies funktioniert.

MfG
sash
 
Je mehr ich darüber nachdenke was du hier eigentlich vorhast umsomehr kommt mir der Gedanke,
das das nicht die beste Lösung ist sowas in einer Schleife zu machen.

Du hast also 2 Temperaturfühler, aus diesen bildest du eine Differenz,
jetzt erhöhst oder erniedrigst du den Pumpensollwert je nachdem ob die Differenz größer oder kleiner als deine Solldifferenz ist,
pro Aufruf dieser Messfunktion willst du das max. um den Wert 600 tun.

Die Pause brauchst du deshalb, weil sich in den paar Millisekunden wo die Schleife durchlaufen wird, sich
an deinem Messsystem nichts ändern kann, weil eine Temperaturregelung allgemein relativ träge ist.

Möglicherweise wird der Analogausgang sogar erst nach der Schleife aktualisiert (keine Ahnung wie das jetzt bei Beckhoff ist).

Sag einfach mal ob ich recht habe oder nicht.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
@MSB ja sehr gut erkannt - das ist ein Problem von mind. zweien - der Analogwert für den FU ändert sich bei jedem Zyklus bis der Maximalwert erreicht ist.

Das zweite Problem ist, das es 11 versch. "Regelstrecken" gibt - im Programmzyklus wird vorher ausgewählt welches "Szenario" anhand versch. Temperaturparameter geregelt werden soll. Im ungünstigsten Fall kann es also sein, das bei jeden Zyklusdurchlauf eine andere Regelstrecke angesprochen wird (ich komme also nicht mehr zu dem Punkt wo ich zuerst regeln wollte zurück).

Deswegen wollte ich eine Schleife einsetzen, damit die "Regelstrecke" darin "gefangen" ist und auch wirklich geregelt werden kann. (für mind. 5-10 min.)

Optimal währe eine Funktion wie "Break" wo eine wirkliche Pause erzielt werden kann.
 
Hallo,
nur son Gedanke:
Lass die For-Schleife weg und benutze nen Takt-Merker.
Einen Takt-Merker (5 bis 10 min) um eine deiner 11 Regelstrecken aufzurufen.
In der Regelstrecke nochmal ein Takt-Merker (30 sec o. so) mit dem wird dann geregelt.

HTH

Bewareofthis
 
Zurück
Oben