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

Ergebnis 1 bis 6 von 6

Thema: STEP5 - Laden einer Zeit in einen anderen Timer

  1. #1
    Registriert seit
    11.07.2003
    Beiträge
    11
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Wie kann man ein aktuellen Wert eines Timers in einen anderen Timer laden?

    Ich habe es mit

    U M15.0
    LC T 1
    SA T 2

    und mit

    L T 1

    versucht, allerdings ohne Erfolg. Der T2 wird nie gestartet! Welche Möglichkeiten gibt es hier?
    Zitieren Zitieren STEP5 - Laden einer Zeit in einen anderen Timer  

  2. #2
    Anonymous Gast

    Standard

    hallo,
    dies ist mein erster beitrag ,ich finde euer forum toll

    wenn du über LC gehst wird die zeit BCD codiert im ACCU hinterlegt
    um dies zu umgehen mußt du die zeit mit LC in einen DB laden und das DW mit KT formatieren anschließend kannst du dieses DW für den nächsten timer verwenden.

    aber warum willst du 2T gleichzeitig mit gleicher Zeit alufen haben?

  3. #3
    Registriert seit
    11.07.2003
    Beiträge
    11
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Ich will den "Rest" vom T1 als Startwert von T2 verwenden. Konkret habe ich folgendes Problem:

    In DB5 liegt meine aktuelle Zeit. In jedem Zyklus werden 48 Eingänge abgefragt und bei einer pos. Flanke wird ein "Zähler" in einem DB hochgezählt und die aktuelle Uhrzeit/Datum auch hinterlegt. Jeder Eingang hat also seinen "Platz" mit Zähler und Datum/Zeit im DB. Nun musste ich das Programm so erweitern, dass auch MSec gezählt werden. Hierfür verwende ich die Timer (10 MSec). In der Theorie hört sich das gut an, allerdings steckt der Teufel im Detail:

    Die Zeiten werden jeweils nur alle 1s nach Ablauf eines SPS-Zyklusses im DB5 aktualisiert. Der Timer (10 MSec) läuft asynchron weiter. Im Programm ist es nun so, dass an einer Stelle im OB1 (Zyklusgesteuert) eine FB aufgerufen wird, der schaut ob sich die Sekunden geändert haben. In diesem Fall wird der T1 neu mit 99.0 gestartet (läuft ja rückwärts). So kommt es nun zu folgendem Problem:

    Takt des Eingangs: 1,4 Sekunden

    1. Takt Uhrzeit (DB5): 01:10:00 MSec 400 (T1 = 060.0)
    2. Takt Uhrzeit (DB5): 01:10:01 MSec 800 (T1 = 020.0)
    3. Takt Uhrzeit (DB5): 01:10:01 MSec 990 (T1 = 000.0)
    ---> Innerhalb des Zyklusses ist T1 abgelaufen, aber die Zeit wurde noch nicht überprüft (Sekundenwechsel und T1 Neustart)
    4. Takt Uhrzeit (DB5): 01:10:03 MSec 600 (T1 = 040.0)

    Meine Sekunden (Zeit aus DB) pendeln also immer +/- 1 um den korrekten Wert, oder treffen ihn auch mal. Wenn man dann die "Zykluszeiten" der positiven Flanken betrachtet (Abstand zwischen zwei Flanken) kommt folgendes raus:

    1,4 Sek - 2,4 Sek - 0,4 Sek - 1,4 Sek - 1,4 Sek - 2,4 Sek .....

    Im Schnitt stimmt es übrigens

    Meine Idee war nun, dass ich im OB13 (Aufrufintervall 10 ms) den T1 auf Ablauf prüfe und bei Ablauf einen T2 starte (Bei 099.0). Wenn dann im normalen OB1 der FB zur Kontrolle des "Sekundenwechsels" aufgerufen wird und dieser zutrifft, wird der T1 mit dem "Restwert" von T2 gestartet (so synchronisiere ich wieder). Bei einer pos. Flanke an einem Eingang wird nun nicht nur die Uhrzeit aus DB5 und die MSec aus T1 (99 - T1) herangezogen, sondern auch T2 (falls aktiv - nämlich wenn T1 auf 000.0 steht). Beim Speichern der Zeit wird im Feld der MSec dann T1 (bei 000.0 = 1000 MSec) + T2 ((99 - T2) * 10)( berechnet. Das bringt dann zwar MSec ZEiten größer 1000, was aber im PC beim Auslesen des DBs wieder korrigiert werden kann.

    Daher versuche ich nun T1 mit dem Restwert von T2 zu starten (SA T2).


    Vielleicht hast Du auch eine gänzlich andere Idee zu meinem Problem?


    Gruß,
    Stefan


    Zitat Zitat von heg
    wenn du über LC gehst wird die zeit BCD codiert im ACCU hinterlegt
    um dies zu umgehen mußt du die zeit mit LC in einen DB laden und das DW mit KT formatieren anschließend kannst du dieses DW für den nächsten timer verwenden.

    aber warum willst du 2T gleichzeitig mit gleicher Zeit alufen haben?

  4. #4
    Anonymous Gast

    Standard

    hallo,
    vielleicht kannst du noch was mit der bearbeitungsoperation B angfangen zb bei Flankenwechsel die DW auf 0 stellen,mehr darüber findest du in den s5 Handbüchern der cpu die man alle bei siemens heunterladen kann

    heinz

  5. #5
    Registriert seit
    23.06.2003
    Beiträge
    79
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo Stefan,

    Du hast doch den OB13 mit 10mS getriggert.
    Zähl doch einfach bei jedem OB13-Aufruf in einem MW oder DW immer 10 dazu. Das sind dann Deine mSec.
    Wenn Du dann in Deinem normalen FB einen Sekundenwechsel feststellst, schreibst Du das Wort einfach wieder auf 0.
    Das kannst Du noch besser auch gleich vom OB13 erledigen lassen, dann bist Du nicht vom Zyklus abhängig, das ganze wird dann noch genauer.
    Hab so was schon in der Art realisiert.
    Das ganze Timer-geraffel ist dadurch weg.

    Gruß Jörg
    Zitieren Zitieren etwas anderer Ansatz....  

  6. #6
    Registriert seit
    11.07.2003
    Beiträge
    11
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Jörg,

    stimmt, da die Sache mit dem OB13 erst nachträglich als Umgehung eines anderen Problems dazu kam, habe ich das noch gar nicht realisiert. Ich werde es morgen dann gleich testen. Danke!

    Gruß,
    Stefan

    Zitat Zitat von jogi
    Hallo Stefan,

    Du hast doch den OB13 mit 10mS getriggert.
    Zähl doch einfach bei jedem OB13-Aufruf in einem MW oder DW immer 10 dazu. Das sind dann Deine mSec.
    Wenn Du dann in Deinem normalen FB einen Sekundenwechsel feststellst, schreibst Du das Wort einfach wieder auf 0.
    Das kannst Du noch besser auch gleich vom OB13 erledigen lassen, dann bist Du nicht vom Zyklus abhängig, das ganze wird dann noch genauer.
    Hab so was schon in der Art realisiert.
    Das ganze Timer-geraffel ist dadurch weg.

    Gruß Jörg
    Zitieren Zitieren Re: etwas anderer Ansatz....  

Ähnliche Themen

  1. Antworten: 2
    Letzter Beitrag: 11.09.2008, 21:45
  2. Eine Zeit aus einen FB-Parameter laden
    Von borstek im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 15.01.2008, 14:32
  3. Antworten: 8
    Letzter Beitrag: 15.03.2007, 09:25
  4. S7: Gibts einen Timer der zb. eine 42h zeit hat?
    Von funkdoc im Forum Programmierstrategien
    Antworten: 9
    Letzter Beitrag: 12.07.2006, 08:58
  5. Variabele Zeit in einen Timer laden
    Von Willibald im Forum Simatic
    Antworten: 9
    Letzter Beitrag: 15.07.2004, 13:33

Lesezeichen

Berechtigungen

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