Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Ergebnis 1 bis 4 von 4

Thema: Schleifebedingung in Schleife beenden

  1. #1
    Registriert seit
    04.08.2010
    Beiträge
    60
    Danke
    14
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Leute,

    ich möchte eine Schleifenbedingung in einer Schleife verändern ohne dabei die Schleife zu beenden!
    Etwas konkreter:
    Ich möchte einen automaten programmieren, der sich erst aktivieren lässt wenn alles in Grundstellung ist (die Variable bGrundstellung = TRUE ist).
    In der Schleife treten allerdings Bedingungen auf die bGrundstellung auf FALSE setzen. Trotzdem soll die Schleife weiter laufen.

    Hier mal ein vereinfachtes Beispiel:
    Code:
    IF   bVar1 = TRUE AND
          bVar2 = TRUE AND
          bVar3 = FALSE
    THEN
         bGrundstellung = TRUE;
    END_IF
    
    
    IF    bvar_fahrt = TRUE  AND
           bGrundstellung = TRUE
    THEN
      step :=0;
         case step OF
         1: bvar3 = TRUE;
             step:=step+1;
         2: vbar2 = FALSE;
             step:=step+1;
         3: step:=0;
    END_CASE
    END_IF
    Man kann sehen das nur der erste Fall ausgeführt, weil ab da die Bedienung für die Schleife nicht mehr zu trifft.
    Jedoch möchte ich das er die übrigen Cases auch noch ausführt.
    Habt vielen Dank im Voraus
    Zitieren Zitieren Schleifebedingung in Schleife beenden  

  2. #2
    Registriert seit
    15.01.2005
    Ort
    In der Mitte zwischen Bayreuth/Weiden
    Beiträge
    6.725
    Danke
    314
    Erhielt 1.519 Danke für 1.282 Beiträge

    Standard

    Also auch wenn das ein vereinfachtes Beispiel ist strotzt es nur so von Fehlern ...

    Dein Merker Grundstellung wird ohnehin nie nicht LOW werden ...
    Da das THEN der IF-Bedingung, sollte wirklich mal keine Grundstellung sein,
    nicht mehr bearbeitet wird, und da kein ELSE/ELSIF steht ...

    Dein Case-Construct wird auch nie nur die geringste Kleinigkeit tun ...
    Du schreibst zyklisch den step auf 0.

    Im obigen Beispiel wäre meine Variante:
    Code:
    bGrundstellung := bVar1 AND bVar2 AND NOT bVar3 ;
    
    CASE step OF
    0:
    IF    bvar_fahrt AND bGrundstellung THEN
    step := 1 ;
    END_IF;
    
    ...
    Mfg
    Manuel
    Warum denn einfach, wenn man auch Siemens einsetzen kann!

    Wer die grundlegenden Freiheiten aufgibt, um vorübergehend ein wenig Sicherheit zu bekommen, verdient weder Freiheit noch Sicherheit (B. Franklin).

  3. #3
    Registriert seit
    27.11.2009
    Beiträge
    204
    Danke
    1
    Erhielt 32 Danke für 31 Beiträge

    Standard

    Zitat Zitat von Bambam Beitrag anzeigen
    Hallo Leute,

    ich möchte eine Schleifenbedingung in einer Schleife verändern ohne dabei die Schleife zu beenden!
    Etwas konkreter:
    Ich möchte einen automaten programmieren, der sich erst aktivieren lässt wenn alles in Grundstellung ist (die Variable bGrundstellung = TRUE ist).
    In der Schleife treten allerdings Bedingungen auf die bGrundstellung auf FALSE setzen. Trotzdem soll die Schleife weiter laufen.

    Hier mal ein vereinfachtes Beispiel:
    Code:
    IF   bVar1 = TRUE AND
          bVar2 = TRUE AND
          bVar3 = FALSE
    THEN
         bGrundstellung = TRUE;
    END_IF
    
    
    IF    bvar_fahrt = TRUE  AND
           bGrundstellung = TRUE
    THEN
      step :=0;
         case step OF
         1: bvar3 = TRUE;
             step:=step+1;
         2: vbar2 = FALSE;
             step:=step+1;
         3: step:=0;
    END_CASE
    END_IF
    Man kann sehen das nur der erste Fall ausgeführt, weil ab da die Bedienung für die Schleife nicht mehr zu trifft.
    Jedoch möchte ich das er die übrigen Cases auch noch ausführt.
    Habt vielen Dank im Voraus
    Warum machst Du es dann nicht anderes herum? Prüfe im Case 0 ob die Grundstellung:=true ist. Wenn ja, dann setze den Schrittzähler einen hoch. So stellst du sicher, dass der Rest des Automaten auch noch abläuft, wenn die Grundstellung schon wieder false ist

    ah, da war jemand schneller, dass kommt davon wenn man sich beim antworten verquatscht
    Geändert von KGU (26.08.2010 um 16:45 Uhr)

  4. #4
    Bambam ist offline Benutzer
    Themenstarter
    Registriert seit
    04.08.2010
    Beiträge
    60
    Danke
    14
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Danke an euch beide ...
    Sehr gut Idee ...
    Geändert von Bambam (26.08.2010 um 16:52 Uhr)

Ähnliche Themen

  1. HMI aus Strukturierten Text beenden
    Von Thomas E. im Forum CODESYS und IEC61131
    Antworten: 8
    Letzter Beitrag: 25.02.2016, 15:35
  2. protool runtime beenden
    Von sps-user im Forum HMI
    Antworten: 1
    Letzter Beitrag: 23.09.2011, 12:17
  3. VB/WinCCflexble: Excel beenden ?
    Von Fluffi im Forum HMI
    Antworten: 1
    Letzter Beitrag: 06.02.2008, 17:55
  4. Applikation beenden
    Von Anfängerproggi im Forum HMI
    Antworten: 0
    Letzter Beitrag: 30.07.2007, 14:00
  5. WinCC-Runtime beenden
    Von Anonymous im Forum HMI
    Antworten: 1
    Letzter Beitrag: 12.09.2005, 14:01

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •