Welcome to our new forum
All users of the legacy CODESYS Forums, please create a new account at account.codesys.com. But make sure to use the same E-Mail address as in the old Forum. Then your posts will be matched. Close

TP stoppen starten

2008-06-20
2008-06-24
  • berndschuermann - 2008-06-20

    Hallo

    Ich möchte einen Zeit über ein TP ablaufen lassen. Tritt nun ein Problem auf soll die Zeit die Abläuft stoppen. Ist das Problem behoben soll die Zeit weiter ablaufen.

    Mein Lösungsansatz war, mit einem Sprungbefehl das Netzwerk am Abarbeiten zu hindern, aber der interne Timer scheint weiterhin abzulaufen.

    Wie kann ich generell einen "Timer" stoppen?

    Danke in Vorraus....

     
  • Ralph Holz - 2008-06-24

    Einen TP kannst Du nicht stoppen. TP ist extra dafür da einen Impuls von definierter Länge unabhängig von seinen Eingangssignalen zu erzeugen, wenn er einmal gestartet wurde.

    Habe gerade mal einen TP_EXT mit einem BRK Eingang geschrieben solange BRK true ist wird der Timer angehalten. Also einfach die angehängte Export Datei in dein Projekt importieren. Ich würde eigentlich vermuten, dass in der OSCAT Lib stopbare Timer vorhanden sind - war aber zu faul zum nachschauen.

    FUNCTION_BLOCK TP_EXT
    VAR_INPUT
       IN: BOOL;
       BRK: BOOL;
       PT: TIME;
    END_VAR
    VAR_OUTPUT
       Q: BOOL;
       ET: BOOL;
    END_VAR
    VAR
       xLastCycleBrk: BOOL;
       timET: TIME;
       tTon: TON;
    END_VAR
    IF IN AND NOT Q THEN
       timET:= T#0s;
       Q:= TRUE;
    END_IF
    IF BRK AND NOT xLastCycleBrk THEN
       timET:= timET + tTON.ET;
       tTon(IN:= FALSE);
    ELSE
       tTON(IN:=(Q AND NOT BRK) , PT:=(PT-timET), Q=> , ET=>);
    END_IF
    xLastCycleBRK:= BRK;
    IF tTon.Q THEN
       Q:= FALSE;
    END_IF
    

    TP_EXT.EXP [605 Bytes]

     

Log in to post a comment.