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

Results 1 to 6 of 6

Thread: STEP5 - Laden einer Zeit in einen anderen Timer

  1. #1
    Join Date
    11.07.2003
    Posts
    11
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Default


    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?
    Reply With Quote Reply With Quote STEP5 - Laden einer Zeit in einen anderen Timer  

  2. #2
    Anonymous Gast

    Default

    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
    Join Date
    11.07.2003
    Posts
    11
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Default

    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


    Quote Originally Posted by 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

    Default

    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
    Join Date
    23.06.2003
    Posts
    79
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Default

    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
    Reply With Quote Reply With Quote etwas anderer Ansatz....  

  6. #6
    Join Date
    11.07.2003
    Posts
    11
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Default


    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

    Quote Originally Posted by 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
    Reply With Quote Reply With Quote Re: etwas anderer Ansatz....  

Similar Threads

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

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •