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

Ergebnis 1 bis 3 von 3

Thema: CoDeSys TP Baustein

  1. #1
    Registriert seit
    08.08.2011
    Beiträge
    227
    Danke
    44
    Erhielt 8 Danke für 8 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Forum,

    Ich habe ein Baustein Programmiert in dem ich den Timer Pulse verwende.
    Der Baustein sieht wie folgt aus:

    Code:
    IF Freigabe THEN
    TP_IMP(IN:=NOT Q_TP_PAU , PT:=Imp_Zeit , Q=>Q_TP_IMP , ET=>Imp_Zaehl);
    TP_Pau(IN:=NOT Q_TP_IMP , PT:=Pau_Zeit , Q=>Q_TP_PAU , ET=>Pau_Zaehl);
        IF Q_TP_IMP THEN
        Anst:=TRUE;
        ELSE
        Anst:=FALSE;
        END_IF
    ELSE
    Imp_Zaehl:=t#0s;
    Pau_Zaehl:=t#0s;
    Anst:=FALSE;
    END_IF
    Mein Problem ist jetzt nur dass wenn "Freigabe" false ist die 2 TPs trotzdem "intern" weiter zählen... (Obwohl Sie ja eigentlich durch das IF... sozusagen ausgeklammert sind.
    Was überseh ich da? bzw. Woran liegt das?

    Schonmal danke für die Hilfe

    EDIT: Hier die Deklaration:
    Code:
    VAR_INPUT
    	Imp_Zeit:TIME;
    	Pau_Zeit:TIME;
    	Freigabe:BOOL;
    END_VAR
    VAR_OUTPUT
    	Imp_Zaehl:TIME;
    	Pau_Zaehl:TIME;
    	Anst:BOOL;
    END_VAR
    VAR
    	TP_IMP:TP;
    	TP_PAU:TP;
    	Q_TP_IMP:BOOL;
    	Q_TP_PAU:BOOL;
    END_VAR
    Geändert von -ASDF- (14.11.2011 um 12:25 Uhr)
    Wer Rechtschreibfehler findet, darf sie behalten!
    Zitieren Zitieren CoDeSys TP Baustein  

  2. #2
    Registriert seit
    25.11.2010
    Ort
    OWL
    Beiträge
    745
    Danke
    27
    Erhielt 164 Danke für 142 Beiträge

    Standard

    Die FB's der Standard-Lib sind durchweg für einen zyklischen Aufruf gedacht. Bei bedingtem Aufruf entspricht die Funktion nicht immer dem, was man erwartet.
    Unabhängig davon ist für einen Impuls-Pause-FB, dessen Ausgang bei fehlender Freigabe auf False gehen soll, ein TON besser geeignet.
    Code:
    VAR
       Timer:TON;   (* anstelle der beiden TP's *)
    END_VAR
    
    IF Anst
    THEN
       Timer.PT:=Imp_Zeit;
       Imp_Zaehl:=Timer.ET;
    ELSE
       Timer.PT:=Pau_Zeit;
       Pau_Zaehl:=Timer.ET;
    END_IF;
    
    Timer(In:=Freigabe and not Timer.Q);
    IF Freigabe
    THEN
       IF Timer.Q
       THEN
          Anst:=not Anst;
       END_IF;
    ELSE
       Imp_Zaehl:=t#0s;
       Pau_Zaehl:=t#0s;
       Anst:=False;
    END_IF;
    Geändert von StructuredTrash (14.11.2011 um 13:45 Uhr)

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

    -ASDF- (14.11.2011)

  4. #3
    -ASDF- ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    08.08.2011
    Beiträge
    227
    Danke
    44
    Erhielt 8 Danke für 8 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ok nur noch die Zeit auf 0 setzen wärend die Andere läuft und passt (wegen Visu)

    Vielen dank auf jedenfall!
    Wer Rechtschreibfehler findet, darf sie behalten!

Ähnliche Themen

  1. RTC-Baustein
    Von Bambam im Forum CODESYS und IEC61131
    Antworten: 0
    Letzter Beitrag: 15.09.2010, 14:52
  2. CoDeSys Baustein in Ablaufsprache
    Von shiznit im Forum CODESYS und IEC61131
    Antworten: 1
    Letzter Beitrag: 19.08.2010, 14:10
  3. CFC --> S7-Baustein
    Von Engelskrieger im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 14.09.2009, 09:37
  4. S7 Baustein für IB IL AO 2/U/BP
    Von manas im Forum Simatic
    Antworten: 0
    Letzter Beitrag: 12.12.2007, 22:44
  5. DB Baustein FAQ
    Von Hoilebolle im Forum Simatic
    Antworten: 13
    Letzter Beitrag: 21.10.2004, 08:31

Lesezeichen

Berechtigungen

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