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

Ergebnis 1 bis 9 von 9

Thema: Step5: Speichern der Uhrzeit im DB2 mit mSek

  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
    Ich stehe vor dem Problem, dass ich eine vorhandene S5 Anwendung erweitern muss. In der Anwendung wird beim positiven Flankenwechsel auf einem Eingang das aktuelle Datum und aktuelle Uhrzeit im DB abgelegt. Also im Format TT.MM.JJ SS.MM.ss.

    Nun erfordert es die Anwendung, dass zukünftig auch Bruchteile von Sekunden abgelegt werden (mindestens mal 1/10) Sekunden. Wie kann ich das am einfachsten realisieren?

    Danke im Voraus!
    Stefan Schaffner
    Zitieren Zitieren Step5: Speichern der Uhrzeit im DB2 mit mSek  

  2. #2
    Registriert seit
    16.06.2003
    Ort
    88356 Ostrach
    Beiträge
    4.828
    Danke
    1.256
    Erhielt 1.111 Danke für 532 Beiträge

    Standard

    sowas hab ich noch nie gesehen, kannst du den prgrammteil hier einfügen? wäre bestimmt für viele interessant und es könnte dir eventuell eher jemand helfen.

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

    Standard

    Das Programm ist recht komplex und geht über 30 Bausteine (OB's und FB's). Das Prinzip ist ganz einfach: Nach und nach wird jeder Eingang geprüft und bei einem Wechsel (E xx.x <> zugehörigem Merkerbyte) wird ein FB mit den Parametern (Welcher Eingang, usw.) aufgerufen.

    Im FB wird aus DB5 Datum und Zeit gelesen und an eine dem jeweiligen Eingang zugeordnete Stelle im DB2 geschrieben (dann kommt noch ein bisschen kopieren von DB2 nach DB3, damit man später Zeit- und Zählerdifferenzen bestimmen kann).

    Entscheidend ist hier jedoch, dass ich aus dem DB5 nur Stunden, Minuten und Sekunden (und natürlich Datum, Wochentag usw.) lesen und in den DB2 übertragen kann. Dann die Impulse an den Eingängen aber auch in Zyklen kleiner 1 Sekunde kommen, müsste ich mir nun in meinem DB2 auch Zeiten merken können, die einen Bruchteil einer Sekunde ausmachen.

    Ich habe schon getüftelt, ob ich in einen Zähler bei jedem Zyklus (Programmzyklus) vorwärts erhöhe und auf den Wechsel der Sekunden in DB5 checke. Beim Wechsel der Sekunde merke ich mir dann den alten Zählerstand, schreibe in in DB2 (Der wird ja dann vom PC geholt) und setze ihn dann auf 0. Beim Merken der Uhrzeit im DB für den jeweiligen Eingang, würde ich mir den aktuellen Zählerstand mitmerken. Im PC könnte ich dann nach dem Prinzip:

    x = (Zähler zum Zeitpunkt Sekundenwechsel = 1 Sekunde)
    Genaue Zeit = Datum + Stunde + Minute + Sekunden + (1/x)*Zähler

    die Zeit genauer bestimmen. Hier laufe ich aber Gefahr, dass sich der Wert x abhängig von der Programmdurchlaufzeit ändert und ich evtl. mit einem ungenauen x Arbeite (wenn länge Zeit an diesem Eingang nichts angekommen ist).

    Ab ehrlich gesagt, scheitere ich schon daran, den Zähler hochlaufen zu lassen, und mit beim Sekudnenwechsel die Zahl zu merken und zurückzusetzen!

    Vielleicht hast Du eine bessere (einfachere ...?) Idee.

    Gruß,
    Stefan

  4. #4
    Registriert seit
    16.06.2003
    Ort
    88356 Ostrach
    Beiträge
    4.828
    Danke
    1.256
    Erhielt 1.111 Danke für 532 Beiträge

    Standard

    hmm also vileicht habs ichs ja noch nicht ganz begriffen, aber wieso nimmst du nicht einen ganz normalen timer (einschaltverz) startest diesen mit seinem eigenen negierten ausgang für 1sec, so das du einen taktgeber erhälst.
    vermutlich brauchst du noch eine weitere bedingung um ihn zu synchronisieren.

    den aktualwert des timers schreibst du in ein dw und den inhalt von diesem dw kopierst du immer wenn dein signal kommt was weiß ich wohin...

  5. #5
    Anonymous Gast

    Standard

    Hi Leute,
    um das Ganze zu verstehen hab ich noch einige Fragen:
    1. welche CPU ist überhaupt verwendet, d.h. was kann die?
    2. wie kommt die Zeit in den DB5 ? über 'nen CP, CPU-Uhr ?
    3. welche 'normale' Zykluszeit hast Du denn in der Kiste, d.h. welche max. Abfragerate Deiner Eingänge hast Du denn ?

    mit normalen S5-Zeiten wär ich vorsichtig ? die sind schrecklich ungenau.
    Sehr genau sind hingegen die Zeit-OB's, z.B. OB13.

    Ich würde einfach im OB13 (100ms) ein DW immer um 100 hochzählen. Wenn Sich die Sekunden im DB5 ändern, diesen Zähler wieder auf 0 setzen.
    Kannst Du den OB13 auf 10mS umparametrieren (CPU-abhängig), wird die Genauigkeit bedeutend höher.


    Gruß Jörg

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

    Standard

    Ich glaube, dass ich mein Problem nun lösen konnte:

    Im OB1 rufe ich den FB2 auf, der meinen Timer aktualisiert:

    FB002
    -------

    U M 15.0
    L KT 100.0
    SA T 1
    R M 15.0

    UN T 1
    S M 15.0
    BE

    Somit habe ich im Merker 15 immer die 1/100 Sekunden stehen (Beginnend mit 100ms, 99ms .... 1ms - da ich den SA benutze)

    In meiner Eingangroutine kopiere ich nun (aus Platzgründen) den MSec Wert in das für die Jahreszahl vorgesehene Feld in den DB2.

    Erste Tests haben gezeigt: Es funktioniert!

    Gruß,
    Stefan Schaffner

  7. #7
    Anonymous Gast

    Standard

    versteh ich net

  8. #8
    Anonymous Gast

    Standard

    Hallo?

  9. #9
    Anonymous Gast

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo?

Ähnliche Themen

  1. TwinCAT Uhrzeit in Maschinendaten speichern
    Von HK09 im Forum CODESYS und IEC61131
    Antworten: 4
    Letzter Beitrag: 28.10.2010, 09:46
  2. Meldungen mit Datum&Uhrzeit speichern
    Von Alexus85 im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 20.11.2009, 10:41
  3. Antworten: 4
    Letzter Beitrag: 22.10.2005, 12:07
  4. Antworten: 2
    Letzter Beitrag: 11.09.2005, 14:29
  5. Ein/Ausschalt-Uhrzeit speichern mit S7-200
    Von Anonymous im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 10.04.2005, 22:10

Lesezeichen

Berechtigungen

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