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

Ergebnis 1 bis 10 von 10

Thema: Lange laufender timer

  1. #1
    Registriert seit
    06.10.2005
    Beiträge
    15
    Danke
    0
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    bin gerade dabei, mich in die Arbeit mit SPS-Systemen einzuarbeiten. Ich benutze hier eine CPU 315-2DP und Step7. Nun habe ich eine Aufgabe, welche mir schon einige Stunden einiges Kopfzerbrechen bereitet. Dabei hoert sie sich ganz einfach an

    Es soll ein parametrierbarer Timer erstellt werden, welcher (in ganzen Stunden) Zeiten zwischen 0 und 999 Stunden ein Signal HIGH setzen soll. Das Problem fuer mich ist nun, dass es (meines Wissens nach) keinen Zaehler gibt, welcher ueber 32767 zaehlen kann, selbst die IEC-Timer keine so hohen Zeiten kennen (da aus irgedneinem Grund, welcher sich mir momentan nicht erschliesst, der Typ Time auch negatives Vorzeichen haben kann) und es nicht klappt, einen Impuls-Timer mittels Freigabesignal wieder zu aktivieren. Habe ich eine Funktion uebersehen, oder hat jemand einen Tipp fuer mich, wie ich an diese Aufgabe herangehen kann.

    Vielleicht koennte auch jemand so feundlich sein und sich den angehaengten Code ansehen. Statt der Variable Schmier habe ich auch probiert, das VKE erst 0, anschliessend gleich wieder 1 zu setzen. Auch ein warten, bis der Timer laeuft (Endlosschleife) funktioniert nicht (Zyklusfehler, slebst bei hoher Zykluszeit (1s))

    Vielen Dank fuer Eure hoffentlich kommende Hilfe fuer einen Anfaenger in einem interressanten Gebiet...

    Gruss
    Thomas
    Angehängte Dateien Angehängte Dateien
    Zitieren Zitieren Lange laufender timer  

  2. #2
    Registriert seit
    19.06.2005
    Ort
    in Bayern ganz oben
    Beiträge
    1.360
    Danke
    188
    Erhielt 372 Danke für 290 Beiträge

    Standard

    Hallo Thomas,

    ich würde in der Hardwarekonfiguration das Taktmerkerbyte aktivieren und
    mit dem "Taktmerker 1 s/1 Hz" eine Flanke bilden.
    Somit hast du dann alle 1s einen Impuls mit diesem eine Variable (z.B. Merkerdoppelwort)
    vom Typ DINT (Ganzzahl (32 Bit) –2 147 483 648 bis +2 147 483 647) aufsummieren
    und einen vergleich auf die Sollzeit in Sekunden machen.
    Nach erreichter Zeit kann dann der Merker gesetzt werden.

    MfG
    Daniel

  3. #3
    pomdas ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    06.10.2005
    Beiträge
    15
    Danke
    0
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Hallo Daniel,

    ohje, manchmal sieht man den einzelnen Baum vor lauter Baeumen nicht. Da haette ich auch selbst drauf kommen koennen. Werde es mal so probieren. Vielen Dank.

    Koennte jemand bitte so freundlich sein, meinen Quellcode anzuschauen. Mich wuerde interessieren, warum ich keine Freigabe hinbekomme. Einfach mal so, das ich, auch wenn ich es jetzt wohl nach der von Daniel beschriebenen Methode machen werde, aus meinem gemachten Fehlern etwas lernen kann. Wuerde mich sehr freuen, wenn sich jemand die Muehe machen koennte...

    Gruss
    Thomas

  4. #4
    Registriert seit
    28.05.2005
    Beiträge
    56
    Danke
    0
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Hallo,

    hab gerade mal kurz reingeschaut.
    Da findet auch zu keiner zeit ein Flankenwechsel statt!

    Mit
    Code:
    SET
    = #schmier
    weißt du der TEMP-Var #schmier in jedem Zyklus eine 1 zu.
    Durch U #schmier ist für den nachfolgenden Befehl "FR T 1" das VKE
    also auch immer 1.
    Nach BE wird der Zustand wieder "vergessen".
    Beim nächsten Aufruf wird wieder 1 gesetzt.
    Das ist aber kein Flankenwechsel.

  5. #5
    pomdas ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    06.10.2005
    Beiträge
    15
    Danke
    0
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Hallo,

    danke fuer Deine Muehe. Warum verursacht

    CLR
    SET
    FR T 1

    keinen Flankenwechsel ueber das VKE? Das VKE wird doch sofort zugewiesen, oder doch nicht?

    Gruss
    Thomas

  6. #6
    Registriert seit
    30.09.2005
    Beiträge
    12
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo

    vieleicht hilft Dir dieser Beitrag weiter.

    http://www.sps-forum.de/phpBB2/viewtopic.php?t=4970

    Gruss Micha

  7. #7
    Registriert seit
    28.05.2005
    Beiträge
    56
    Danke
    0
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Hallo nochmal,

    deine CPU arbeitet den awl-code von oben nach unten ab.
    Über CLR löscht du das VKE, also 0.
    Danach setzt du es wieder auf 1 mit SET.
    Für den folgenden Befehl (bei dir FR T 1) ist nur das VKE aus der Anweisung direkt darüber relevant, also immer 1.
    Dass das VKE zwei Zeilen darüber von 0 auf 1 wechselt, ist egal,
    das ist kein Flankenwechsel.
    Ein Flankenwechsel wird nur als solcher interpretiert, wenn sich das VKE mit dem vom vorherigen Zyklus unterscheidet.

    Code:
    U E 0.0
    FR T 1
    Wenn hier der Eingang von 0 auf 1 wechselt, wäre das ein Flankenwechsel.

    Ich hoffe, ich konnte es einigermaßen verständlich erklären ...

  8. #8
    pomdas ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    06.10.2005
    Beiträge
    15
    Danke
    0
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Hallo,

    das bedeutet also, dass ich im laufenden Zyklus nie unabhaengig vom vorigen Zyklus einen Flankenwechsel hinbekomme?!

    Gruss
    Thomas

  9. #9
    Registriert seit
    06.10.2003
    Beiträge
    3.406
    Danke
    448
    Erhielt 502 Danke für 406 Beiträge

    Standard

    Hallo Thomas,

    wenn ein Flankenwechsel innerhalb eines Zykluses benötigt wird, muss man ihn ganz einfach in einem Zyklus schreiben, z.Bsp.

    CLR
    FR T 1
    SET
    FR T 1

    Notwendig ist natürlich, dass der Timer diesen Flankenwechsel auch mit bekommt. Oftmals benötigt man das auch in Interrupt-OBs um eine Zähler an zu schubsen, oder um Timer neu zu starten.


    Gruß, Onkel
    Es gibt viel mehr Leute, die freiwillig aufgeben, als solche, die echt scheitern.
    Henry Ford

  10. #10
    pomdas ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    06.10.2005
    Beiträge
    15
    Danke
    0
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Onkel Dagobert
    Notwendig ist natürlich, dass der Timer diesen Flankenwechsel auch mit bekommt.
    Was meinst Du damit? Ich habe Dein Codebeispiel heute mal in mein Programm eingesetzt und hatte leider kein Glueck. Auch die Freigabe ueber ein Merkerbit funktioniert nicht. Irgendwie verstehe ich wohl etwas falsch bei der Freigabe. Waere schoen, wenn ich das irgendwie hinbekommen wuerde...

    Meinen Langzeittimer habe ich heutenach Methode Daniel zusammengeschrieben und es funktioniert wunderbar. Fuer diese Idee (warum bin ich da nicht selbst drauf gekommen?) bedanke ich mich nochmals.

    Gruss
    Thomas

Ähnliche Themen

  1. Erzeugung mehrerer paralell laufender programme
    Von gizmo im Forum Programmierstrategien
    Antworten: 21
    Letzter Beitrag: 28.03.2007, 15:46
  2. Suche Ersatz für IFM TIMER LG ( Logik Timer)
    Von GrafLaugenkotz im Forum Sonstige Steuerungen
    Antworten: 1
    Letzter Beitrag: 16.01.2007, 17:02
  3. Lange TTY-Verbindung
    Von sabine_1151 im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 19.07.2005, 23:11

Lesezeichen

Berechtigungen

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