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

Seite 1 von 4 123 ... LetzteLetzte
Ergebnis 1 bis 10 von 37

Thema: Sekundentakt ermitteln

  1. #1
    Registriert seit
    09.11.2006
    Beiträge
    690
    Danke
    36
    Erhielt 31 Danke für 29 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,
    ich muss jeweils Sekundenweise einen Wert hochzählen. (Zeit)
    Diese wird dann zyklisch von einem PC ausgelesen. Es handelt sich um Verfahrensparameter.

    Da die Zeiten als DINT vorliegen scheidet meines Wissene eine Benutzung von Timern aus. Ich habe daraufhin erstmal den Sekunden Blinktakt genommmen. Leider musste ich festtsellen, das dieser zu ungenaus ist. Ungenauigkeit ca. 10s auf 3 min. Da dies nicht akzeptabel ist wollte ich mir eine Flanke aus der CPU Zeit erzeugen, Leider komme ich dabei nicht so wirklich weiter. Ich weiß nicht wie ich die Zeit zerlegen soll. Datum und Tag etc.. bekomme ich ausgelesen, nur bei der Zeit bekam ich irgendwas mit Millisekunden.

    Weiteres Problem ist, das das Programm Zyklisch durch den OB35 aufgrund einer Reglerfunktionalität unterbrochen wird.

    Hat jemand eine Idee wie mann soetwas elegant lösen kann??

    mfg
    mitchih
    Zitieren Zitieren Sekundentakt ermitteln  

  2. #2
    Registriert seit
    08.08.2007
    Ort
    Dresden
    Beiträge
    9.648
    Danke
    1.059
    Erhielt 2.046 Danke für 1.627 Beiträge

    Standard

    Zitat Zitat von mitchih Beitrag anzeigen
    Weiteres Problem ist, das das Programm Zyklisch durch den OB35 aufgrund einer Reglerfunktionalität unterbrochen wird.

    Hat jemand eine Idee wie mann soetwas elegant lösen kann??
    nutze doch den ob35 ... einen zähler inkrementieren und je nach aufrufhäufigkeit dann den wert hochzählen und den anderen zähler zurücksetzen...

    bei 10ms müßteste dann bis 100 zählen und dann zuschlagen
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  3. #3
    mitchih ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    09.11.2006
    Beiträge
    690
    Danke
    36
    Erhielt 31 Danke für 29 Beiträge

    Standard

    Hallo,
    wenn es bei dieser Anlage läuft soll es an anderen Anlagen auch erweitert werden. Diese nutzen aber den OB35 für z.B. andere Zwecke und mit anderen Zyklen.
    Daher war meine Idee mit der Uhrzeit, denn diese ist ja immer identisch, d.h. ich hätte einen Baustein für alle Anlagen. Wäre erheblich einfacher.

    Trotzdem ist das mit dem OB35 eine gute Idee
    Zitieren Zitieren Universallösung  

  4. #4
    Registriert seit
    28.10.2005
    Ort
    Ottweiler, Saar
    Beiträge
    940
    Danke
    259
    Erhielt 124 Danke für 109 Beiträge

    Standard

    Was hindert Dich daran, die Millisekunden durch 1000 zu teilen.
    Den Wert merken, und wenn er sich ändert ist eine Sekunde vorbei.

    Vielleicht etwas zu einfach?

  5. #5
    Registriert seit
    25.09.2005
    Ort
    Neuss
    Beiträge
    278
    Danke
    11
    Erhielt 31 Danke für 29 Beiträge

    Standard

    Zitat Zitat von argv_user Beitrag anzeigen
    Was hindert Dich daran, die Millisekunden durch 1000 zu teilen.
    Den Wert merken, und wenn er sich ändert ist eine Sekunde vorbei.

    Vielleicht etwas zu einfach?
    Nun ja, die Lösung, einen zeitzyklisch- aufgerufenen OB zu verwenden hat den Vorteil, dass es keine Zeitsprünge gibt, wenn, z.B. die CPU-Uhr gestellt wird.

    Ich finde beide Varianten einfach zu realisieren - da muss man halt nur das Passende wählen

  6. #6
    Registriert seit
    03.11.2006
    Ort
    Niedersachsen
    Beiträge
    1.126
    Danke
    170
    Erhielt 303 Danke für 259 Beiträge

    Standard

    Zitat Zitat von mitchih Beitrag anzeigen
    Hallo,
    ich muss jeweils Sekundenweise einen Wert hochzählen. (Zeit)
    Diese wird dann zyklisch von einem PC ausgelesen. Es handelt sich um Verfahrensparameter.

    Da die Zeiten als DINT vorliegen scheidet meines Wissene eine Benutzung von Timern aus. Ich habe daraufhin erstmal den Sekunden Blinktakt genommmen. Leider musste ich festtsellen, das dieser zu ungenaus ist. Ungenauigkeit ca. 10s auf 3 min.
    Der Sekundentakt der CPU hat die gleiche Genauigkeit wie die Uhrzeit der CPU. (wenige Sekunden /Tag)
    Bei einer derart großen Abweichung scheint irgendwo ein Fehler zu sein.
    Gruß
    crash

    Ich bin nicht bekloppt,
    ich bin verhaltensoriginell!

  7. #7
    Registriert seit
    16.06.2003
    Ort
    88356 Ostrach
    Beiträge
    4.811
    Danke
    1.231
    Erhielt 1.101 Danke für 527 Beiträge

    Standard

    nimm doch einen iec timer
    eine SE wird mit sfb4 gemacht.

    der datentyp TIME der verwendet wird ist nix anderes als ein dint mit ms auflösung.

    also eifach durch 100 teilen und in deine variable transferieren.

    dein 10s abweichung kommen durch die zykluszeit der sps. da hilft nur der ob35 oder das aufaddieren der tatsächlichen zykluszeit des ob1 (in den lokaldaten von ob1) und bei jedem überlauf über 1000ms den dint erhöhen.
    "Es ist weit besser, große Dinge zu wagen, ruhmreiche Triumphe zu erringen, auch wenn es manchmal bedeutet, Niederlagen einzustecken, als sich zu den Krämerseelen zu gesellen, die weder große Freude noch großen Schmerz empfinden, weil sie im grauen Zwielicht leben, das weder Sieg noch Niederlage kennt." Theodore Roosevelt - President of the United States (1901-1909)

  8. #8
    Registriert seit
    16.06.2003
    Ort
    88356 Ostrach
    Beiträge
    4.811
    Danke
    1.231
    Erhielt 1.101 Danke für 527 Beiträge

    Standard

    Zitat Zitat von crash Beitrag anzeigen
    Der Sekundentakt der CPU hat die gleiche Genauigkeit wie die Uhrzeit der CPU. (wenige Sekunden /Tag)
    Bei einer derart großen Abweichung scheint irgendwo ein Fehler zu sein.
    ja eben die zykluszeit die immer mitaddiert wird!
    "Es ist weit besser, große Dinge zu wagen, ruhmreiche Triumphe zu erringen, auch wenn es manchmal bedeutet, Niederlagen einzustecken, als sich zu den Krämerseelen zu gesellen, die weder große Freude noch großen Schmerz empfinden, weil sie im grauen Zwielicht leben, das weder Sieg noch Niederlage kennt." Theodore Roosevelt - President of the United States (1901-1909)

  9. #9
    Registriert seit
    03.11.2006
    Ort
    Niedersachsen
    Beiträge
    1.126
    Danke
    170
    Erhielt 303 Danke für 259 Beiträge

    Standard

    Zitat Zitat von Markus Beitrag anzeigen
    ja eben die zykluszeit die immer mitaddiert wird!
    da würde ich noch mal drüber nachdenken.

    die zeit zwischen zwei sekundentakten beträgt genau eine sekunde egal wann du den takt in deinem programm erfasst.
    du erfasst in nur ein paar ms später aber deswegen verlängert sich doch nicht die zeit des taktes.
    ich habe mal nur so zum testen mit dem sekundentakt eine uhr realisiert.
    die lief auch nach wochen absolut synchron zur uhrzeit der cpu.

    auch sonst habe ich schon viel mit den taktmerkern gemacht.
    Gruß
    crash

    Ich bin nicht bekloppt,
    ich bin verhaltensoriginell!

  10. #10
    Registriert seit
    16.06.2003
    Ort
    88356 Ostrach
    Beiträge
    4.811
    Danke
    1.231
    Erhielt 1.101 Danke für 527 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von crash Beitrag anzeigen
    da würde ich noch mal drüber nachdenken.
    denke lieber du nochmal darüber nach...

    die zeit zwischen zwei sekundentakten ist nämlich "exakt" 2s

    die taktmerler sind 1s TRUE und dann 1s FALSE und 1s TRUE...

    deinn programm hat also jedesmal eine sekunde Zeit die positive Flanke auszuwerten, und die Zeit die die Zykluszeit in dieses Sekundenfenster kommt, wird als Fehler mit aufaddiert...
    "Es ist weit besser, große Dinge zu wagen, ruhmreiche Triumphe zu erringen, auch wenn es manchmal bedeutet, Niederlagen einzustecken, als sich zu den Krämerseelen zu gesellen, die weder große Freude noch großen Schmerz empfinden, weil sie im grauen Zwielicht leben, das weder Sieg noch Niederlage kennt." Theodore Roosevelt - President of the United States (1901-1909)

Ähnliche Themen

  1. Sollwert ermitteln
    Von M.R. im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 30.04.2009, 18:42
  2. Skript um das OS zu ermitteln
    Von Black_Eagle im Forum Hochsprachen - OPC
    Antworten: 1
    Letzter Beitrag: 22.10.2008, 15:30
  3. B&R Programmgröße ermitteln
    Von kiestumpe im Forum Sonstige Steuerungen
    Antworten: 3
    Letzter Beitrag: 13.05.2008, 22:42
  4. DBW ermitteln
    Von WL7001 im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 07.04.2008, 15:10
  5. DB-Länge ermitteln
    Von Fliegertiger im Forum Hochsprachen - OPC
    Antworten: 4
    Letzter Beitrag: 18.12.2007, 15:39

Lesezeichen

Berechtigungen

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