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

Ergebnis 1 bis 3 von 3

Thema: Flankenerkennung funktioniert nicht

  1. #1
    Registriert seit
    20.01.2014
    Beiträge
    18
    Danke
    10
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    bei folgendem Code soll erkannt werden ob die Pause beginnt (False->True) oder ob die Pause endet (True->False). Aber die Flanken werden gar nicht erkannt bzw. die Werte der Funktionsblöcke R_Trig und F_Trig verändern sich gar nicht, kann mir jemand bitte sagen warum das so nicht funktioniert? Die Variable Pause verändert ihren Wert wie gewünscht ...

    Code:
    FUNCTION_BLOCK WARTEN
    VAR_EXTERNAL
        PAUSE:BOOL;
    END_VAR
    VAR_INPUT
        ZEIT:TIME;
    END_VAR
    VAR_OUTPUT
        OK:BOOL:=FALSE;
        RESTZEIT:TIME:=t#0s;
    END_VAR
    VAR
        ZAB:TON;
        STARTPAUSE:R_TRIG;
        ENDEPAUSE:F_TRIG;
        PAUSENZEIT:TIME:=t#0s;
    END_VAR
    
    ZAB( PT:=ZEIT);
    
    STARTPAUSE(CLK:=PAUSE);
    ENDEPAUSE(CLK:=PAUSE);
    
    IF STARTPAUSE.Q
    THEN
    PAUSENZEIT:=ZAB.PT-ZAB.ET;
    ELSIF ENDEPAUSE.Q
    THEN
    ZAB(PT:=PAUSENZEIT);
    PAUSENZEIT:=t#0s;
    ELSE
    ;
    END_IF
    
    ZAB.IN:=NOT ZAB.Q;
    
    IF ZAB.Q
    THEN
    OK:=TRUE;
    ELSE
    RESTZEIT:=ZAB.PT-ZAB.ET;
    OK:=FALSE;
    END_IF
    Zitieren Zitieren Flankenerkennung funktioniert nicht  

  2. #2
    Registriert seit
    19.12.2006
    Beiträge
    185
    Danke
    25
    Erhielt 26 Danke für 21 Beiträge

    Standard

    Startpause.Q und Endpause.Q werden bei steigender bzw. fallender Flanke GENAU für einen Zyklus TRUE sein.
    Wenn du das nicht glaubst, setze doch ein Bit z.B.

    Code:
    IF (Startpause.Q) then
    bTest:=TRUE;
    END_IF
    Und schaue Online ob es gesetzt wurde.

    Du solltest dir aber unbedingt mal angewöhnen Kommentare in deinen Code zu schreiben, damit man schnell versteht was du da machen möchtest.

    Etwa so:

    Code:
     (*das ist ein Kommentar *)
    Gruß
    Geändert von mkd (19.02.2014 um 19:07 Uhr)

  3. Folgender Benutzer sagt Danke zu mkd für den nützlichen Beitrag:

    Idlewild (24.02.2014)

  4. #3
    Idlewild ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    20.01.2014
    Beiträge
    18
    Danke
    10
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hey,

    Vielen Dank für die Antwort! Das mit dem Kommentieren mach ich noch

    So wie du das mit der Flankenerkennung habe ich es auch gemacht, aber es hat trotzdem nicht funktioniert. Aber der Fehler liegt glaube ich woanders. Eine Aktion einer Ablaufsteuerung ruf den oben beschriebenen Funktionsblock auf. Über die AS-Flag SFCPause wird die Ablaufsteuerung angehalten, dann pausiert auch der Funktionsblock aber der TON Timer läuft weiter. Ich glaube das die IF-Schleife also gar nicht ausgeführt wird, und daher auch nicht erkannt werden kann. Ist das so richtig?

    Ich habe den Weg über AS-Flag gewählt, da dies einfacher war. Gibt es eine Möglichkeit weiterhin SFCPause zu nutzen und denoch die IF-Abfrage durchzuführen? Oder muss ich das Anhalten der Ablaufsteuerung anders umsetzen?

    Grüße

Ähnliche Themen

  1. FB funktioniert nicht!!
    Von tommy1971 im Forum Simatic
    Antworten: 9
    Letzter Beitrag: 28.03.2013, 11:43
  2. Simulation funktioniert nicht
    Von SPS GEEK im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 27.01.2011, 11:45
  3. Multiinstanz FB funktioniert nicht
    Von Bär1971 im Forum Simatic
    Antworten: 16
    Letzter Beitrag: 12.03.2010, 08:14
  4. PLCSIM funktioniert nicht
    Von CrackerJack1 im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 11.07.2008, 09:43
  5. Taktmerkerbyte funktioniert nicht
    Von bapfy im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 24.04.2005, 12:47

Lesezeichen

Berechtigungen

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