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

Ergebnis 1 bis 10 von 10

Thema: ET von TON ablöschen

  1. #1
    Registriert seit
    29.08.2009
    Beiträge
    776
    Danke
    25
    Erhielt 3 Danke für 3 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo, ich möchte in meinem Programm einen Laufenden Timer wieder von 0 starten lassen. aber das startsignal nich twegnehmen, sondern einfach den ET Wert auf 0 schreiben. Wie geht das? also welches format brauche ich?
    Zitieren Zitieren ET von TON ablöschen  

  2. #2
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.224
    Danke
    533
    Erhielt 2.698 Danke für 1.950 Beiträge

    Standard

    Warum so kompliziert und nicht eine einfache Löschflanke (1 Zyklus lang false) in das Startsignal einfügen?
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  3. #3
    Bensen83 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    29.08.2009
    Beiträge
    776
    Danke
    25
    Erhielt 3 Danke für 3 Beiträge

    Standard

    Ja o kso könnte man es auhc machen. Dachte mir eben, dann fehlt kein Zyklus. Aber anscheinen kann man et nicht beschreiben. schade, dann fehlt mir immer ein zyklus

  4. #4
    Registriert seit
    25.11.2010
    Ort
    OWL
    Beiträge
    752
    Danke
    27
    Erhielt 165 Danke für 143 Beiträge

    Standard

    Wenn das Programm in einem festen Zykluszeitraster läuft wie z. B. bei TwinCat, geht so etwas besser mit einem Zykluszähler. Wenn der Zähler den Sollwert erreicht, eine BOOL-Variable für einen Zyklus auf TRUE setzen (als Ersatz für TON.Q) und noch im selben Zyklus den Zähler wieder auf 0 setzen.

  5. #5
    Bensen83 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    29.08.2009
    Beiträge
    776
    Danke
    25
    Erhielt 3 Danke für 3 Beiträge

    Standard

    Hatte ich mir auch schon gedacht, aber wollte was bauen, was in seunden angegebne werden kann und was zyklus unabhängig ist. trotzdem danke.
    Zitieren Zitieren ok  

  6. #6
    Registriert seit
    11.07.2004
    Beiträge
    1.597
    Danke
    10
    Erhielt 213 Danke für 183 Beiträge

    Standard

    Aber anscheinen kann man et nicht beschreiben. schade, dann fehlt mir immer ein zyklus
    Hab's in Codesys noch nicht probiert, in Siemens und anderen Steuerungen mit SCL/strukturiertem Text kann man das so lösen, dass man mit einer Bedingung das IN auf 0 setzt, dann den Timer aufruft damit er aktualisiert wird, dann das IN wieder auf 1, dann den Timer nochmals aufrufen. Als Bedingung für die Aktion musst Du natürlich gegebenenfalls mit überprüfen, ob der IN vorher gesetzt ist.

  7. Folgender Benutzer sagt Danke zu Oberchefe für den nützlichen Beitrag:

    Bensen83 (21.11.2012)

  8. #7
    Registriert seit
    25.11.2010
    Ort
    OWL
    Beiträge
    752
    Danke
    27
    Erhielt 165 Danke für 143 Beiträge

    Standard

    Zitat Zitat von Oberchefe Beitrag anzeigen
    Hab's in Codesys noch nicht probiert, in Siemens und anderen Steuerungen mit SCL/strukturiertem Text kann man das so lösen, dass man mit einer Bedingung das IN auf 0 setzt, dann den Timer aufruft damit er aktualisiert wird, dann das IN wieder auf 1, dann den Timer nochmals aufrufen. Als Bedingung für die Aktion musst Du natürlich gegebenenfalls mit überprüfen, ob der IN vorher gesetzt ist.
    Das geht auch mit CoDeSys. Zumindest bei TwinCat wird aber TON.StartTime dabei immer um PT+1 Zykluszeit erhöht, bei der klassischen Variante mit IN=False für einen Zyklus sogar um PT+2 Zykluszeiten. Wenn es genau sein soll, kommt man um eigene Lösungen wie in #4 beschrieben kaum herum.

  9. #8
    Registriert seit
    11.07.2004
    Beiträge
    1.597
    Danke
    10
    Erhielt 213 Danke für 183 Beiträge

    Standard

    Hab's eben im Simulator ausprobiert (Wago Zielsystem), da scheint 3S tatsächlich ihre Timer "tunen" zu wollen, selbst bei einer festen Task von 100ms ist der Timer mit 1000ms 2 Programmzyklen eher fertig. Die "klassische" Variante:
    MeinTimer(IN:=NOT MeinTimer.Q , PT:=t#1000ms , Q=> , ET=> );
    scheint damit schon recht nah an den Sollwert des Timers zu kommen, bei der 100ms Task werden bei mir meist 10 Zyklen gezählt, manchmal aber auch 11.

  10. #9
    Registriert seit
    12.04.2010
    Beiträge
    300
    Danke
    22
    Erhielt 54 Danke für 52 Beiträge

    Standard

    Hallo,
    das Problem mit Zykluszählern ist immer dass es irgendwann schief geht. Eines Tages wird sich die Programmzyklus Zeit ändern z.B. von 50 ms auf 100 ms .... Das wird dann schon ein Kollege machen und der hat dann viel Freude wenn der Timer dann um Hälfte langsamer zählt. Irgendwann stolpert man dann drüber.


    Code:
    myTimer FUB TON()
    ....
    ....
    
    if (ResetTimer) then
      myTimer.IN = 0
      myTimer FUB TON()
      myTimer.IN = 1
      myTimer FUB TON()
    endif

    Habe das zwar noch nicht genauer nachkontrolliert (da ich keinen Bedarf sah) - kann mir nicht vorstellen was schiefgehen sollte. Zumindest bei B&R sind die Timer ja Zykluszeit unabhängig, sonst könnte man ja eh gleich wieder Zähler einbauen.

    bg
    bb
    Geändert von bits'bytes (22.11.2012 um 22:19 Uhr) Grund: hmm, versehentlich zur früh abgeschickt :-)

  11. #10
    Registriert seit
    25.11.2010
    Ort
    OWL
    Beiträge
    752
    Danke
    27
    Erhielt 165 Danke für 143 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Oberchefe Beitrag anzeigen
    Hab's eben im Simulator ausprobiert (Wago Zielsystem), da scheint 3S tatsächlich ihre Timer "tunen" zu wollen, selbst bei einer festen Task von 100ms ist der Timer mit 1000ms 2 Programmzyklen eher fertig.
    Das ist der Ausgleich zu Beckhoff, wo es ja 1 bzw. 2 Zyklen länger dauert. Damit laufen dann alle weltweit eingesetzten CoDeSys-Timer im Mittel genau.
    Zitat Zitat von bits'bytes Beitrag anzeigen
    Hallo,
    das Problem mit Zykluszählern ist immer dass es irgendwann schief geht. Eines Tages wird sich die Programmzyklus Zeit ändern z.B. von 50 ms auf 100 ms .... Das wird dann schon ein Kollege machen und der hat dann viel Freude wenn der Timer dann um Hälfte langsamer zählt. Irgendwann stolpert man dann drüber.
    Man kann ja den Sollwert als TIME vorgeben, die eingestelle Zykluszeit auslesen und damit die Soll-Zyklusanzahl berechnen (sagt ein ehemaliger Stolperer )

Ähnliche Themen

  1. Ton in st
    Von Bensen83 im Forum CODESYS und IEC61131
    Antworten: 1
    Letzter Beitrag: 19.07.2011, 22:02
  2. Ton
    Von litlegerman im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 20.05.2011, 11:03
  3. TON Parameter ?
    Von xinix im Forum CODESYS und IEC61131
    Antworten: 1
    Letzter Beitrag: 16.04.2011, 19:05
  4. Einschaltverzögerung TON
    Von plischke im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 13.07.2010, 22:02
  5. Tof als Ton und Ton als PT usw.
    Von Dar1gaaz im Forum Programmierstrategien
    Antworten: 2
    Letzter Beitrag: 20.03.2009, 19:53

Lesezeichen

Berechtigungen

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