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

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 20

Thema: Date and Time mit x Monaten addieren

  1. #1
    Registriert seit
    21.08.2006
    Ort
    Schweiz
    Beiträge
    82
    Danke
    9
    Erhielt 6 Danke für 4 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen

    Ich möchte im SCL bei einer Date_And_Time Variable x Monate dazu addieren und diese wieder in einer Date_And_Time Variable speichern.
    Wobei x eine Int Variable ist.
    Weiss jemand wie ich das einfach lösen kann?

    Viele Grüsse
    Ralph
    Zitieren Zitieren Date and Time mit x Monaten addieren  

  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

    AT auf Date_And_Time Variable
    Byte1 um x erhöhen
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  3. #3
    Registriert seit
    19.07.2010
    Beiträge
    1.289
    Danke
    213
    Erhielt 267 Danke für 233 Beiträge

    Standard

    Zitat Zitat von vierlagig Beitrag anzeigen
    AT auf Date_And_Time Variable
    Byte1 um x erhöhen
    Da muss aber auch der Überlauf berücksichtigt werden, Monat 13 gibts nicht. Ausserdem kommt nach 9 (September) nicht 10 sondern 16 wegen dem BCD-Code.
    mfG Aventinus

  4. #4
    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 Aventinus Beitrag anzeigen
    Da muss aber auch der Überlauf berücksichtigt werden, Monat 13 gibts nicht. Ausserdem kommt nach 9 (September) nicht 10 sondern 16 wegen dem BCD-Code.
    *thumbs up*
    sollte so ziemlich alles abgedeckt sein so
    bei 12+1 muss Byte 0 nach selben Regeln inkrementiert werden

    und wenn man einmal dabei ist sollte man die Dekrementvorschriften auch gleich mit umsetzen
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  5. #5
    Registriert seit
    06.11.2008
    Beiträge
    97
    Danke
    9
    Erhielt 4 Danke für 4 Beiträge

    Standard

    Moin Aventius,

    man könnte, wenn man weiß welche Monate addiert werden sollen, die Monate in Tage zerlegen und in einer Schleife die Anzahl der Tage (86.400.000 ms) zu dem Startdatum mit T_ADD addieren.

    Zuerst müsste man die Anzahl der Tage jeden Monats in Konstanten festlegen (z.B. 1 = 31 Tage, 4 = 30 Tage (Schaltjahre müssten extra ausgewertet werden)),
    dann könnte man anhand des Startmonats die Anzahl der Tage ermitteln.

    Ich gebe zu, dass das schon etwas aufwändig ist, aber dann hat man das Problem mit dem Überlauf der Monate nicht und das jeweilige Zieldatum wird korrekt berechnet.

    Gruß

    MFreiberger
    _____________________________________________
    "Von nichts kommt was" von B. Trüger

  6. #6
    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 MFreiberger Beitrag anzeigen
    Moin Aventius,

    man könnte, wenn man weiß welche Monate addiert werden sollen, die Monate in Tage zerlegen und in einer Schleife die Anzahl der Tage (86.400.000 ms) zu dem Startdatum mit T_ADD addieren.

    Zuerst müsste man die Anzahl der Tage jeden Monats in Konstanten festlegen (z.B. 1 = 31 Tage, 4 = 30 Tage (Schaltjahre müssten extra ausgewertet werden)),
    dann könnte man anhand des Startmonats die Anzahl der Tage ermitteln.

    Ich gebe zu, dass das schon etwas aufwändig ist, aber dann hat man das Problem mit dem Überlauf der Monate nicht und das jeweilige Zieldatum wird korrekt berechnet.

    Gruß

    MFreiberger
    das klingt wesentlich einfacher, definitiv
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  7. #7
    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

    FC 1 AD_DT_TM aus den IEC function blocks

    die funktion fc 1 addiert eine zeitdauer (format time) auf einen zeitpunkt (format dt) und liefert als ergebnis einen neuen zeitpunkt (format dt). Der zeitpunkt (parameter t) muß im bereich von dt#1990-01-01-00:00:00.000 und dt#2089-12-31-23:59:59.999 liegen. Die funktion führt keine eingangsprüfung durch.
    der eingangsparameter t und der ausgangsparameter können nur mit einer symbolisch definierten variablen belegt werden.
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  8. #8
    Registriert seit
    19.07.2010
    Beiträge
    1.289
    Danke
    213
    Erhielt 267 Danke für 233 Beiträge

    Standard

    Problem an der ganzen Geschichte wird wohl werden dass das Time-Format nur irgendwas um 28 Tage unterstützt. Du kannst also damit nur Februare addieren.
    mfG Aventinus

  9. Folgender Benutzer sagt Danke zu Aventinus für den nützlichen Beitrag:

    vierlagig (17.07.2014)

  10. #9
    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 Aventinus Beitrag anzeigen
    Problem an der ganzen Geschichte wird wohl werden dass das Time-Format nur irgendwas um 28 Tage unterstützt. Du kannst also damit nur Februare addieren.
    moooooment ... echt?

    Max. T#+24d20h31m23s647ms
    Min. T# -24d20h31m23s648ms

    ja FUCK!
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  11. #10
    Registriert seit
    19.07.2010
    Beiträge
    1.289
    Danke
    213
    Erhielt 267 Danke für 233 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Was mir da aber in fällt. Wenn du dir schon die Arbeit mit der Umrechnerei von Monaten in Tage machen willst kannst du aus deinem DateAndTime mit FC6 DT_DATE das Datum extrahieren, deine Anzahl Tage einfach addieren und mit FC3 D_TOD_DT wieder zurückrechnen.
    mfG Aventinus

Ähnliche Themen

  1. Beckhoff Date and Time an S7
    Von dr1101 im Forum CODESYS und IEC61131
    Antworten: 9
    Letzter Beitrag: 15.11.2013, 19:29
  2. Date and Time umwandeln in Time
    Von veritaz89 im Forum CODESYS und IEC61131
    Antworten: 2
    Letzter Beitrag: 24.05.2012, 08:07
  3. Time and Date
    Von paula23 im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 22.10.2008, 08:50
  4. Date/Time in Diagnoserepeater
    Von Pilami im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 26.09.2007, 14:58
  5. Date and Time im DB
    Von godi im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 19.05.2006, 15:56

Lesezeichen

Berechtigungen

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