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

Seite 1 von 5 123 ... LetzteLetzte
Ergebnis 1 bis 10 von 42

Thema: Format Date and Time einer KW zuordnen

  1. #1
    Registriert seit
    17.09.2007
    Beiträge
    52
    Danke
    14
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo an alle

    ich habe in einem DB 1000 Realwerte gespeichert in einem 2ten DB 1000 Datensätze mit dem Zeitstempel wann die dazugehörigen Realwerte abgespeichert wurden. Jetzt komm ich zu meinem Problem ich möchte die KW auswählen können und die Daten plus Zeitstempel angezeigt bekommen die in der jeweiligen KW gespeichert wurden. Ich hoffe ihr hab eine Idee wie man es lösen kann.

    Gruß und besten Dank Marco
    Zitieren Zitieren Format Date and Time einer KW zuordnen  

  2. #2
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.220
    Danke
    533
    Erhielt 2.696 Danke für 1.948 Beiträge

    Standard

    Was genau ist dein Problem, die Berechnung der KW? dazu gibt es bei Wikipedia Artikel. Wenn ich recht erinnere, hat auch die Oscat-Library dazu etwas zu bieten.
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  3. #3
    Registriert seit
    18.09.2004
    Ort
    Münsterland/NRW
    Beiträge
    4.718
    Danke
    729
    Erhielt 1.158 Danke für 969 Beiträge

    Standard

    Zitat Zitat von Ralle Beitrag anzeigen
    Was genau ist dein Problem, die Berechnung der KW? dazu gibt es bei Wikipedia Artikel. Wenn ich recht erinnere, hat auch die Oscat-Library dazu etwas zu bieten.
    Ich glaube er will die KW angeben und will dann das Anfangsdatum und Endedatum dieser KW erhalten.
    Der Baustein in der Oscat-Bibliothek macht es genau andersherum

  4. #4
    skyvan ist offline Benutzer
    Themenstarter
    Registriert seit
    17.09.2007
    Beiträge
    52
    Danke
    14
    Erhielt 1 Danke für 1 Beitrag

    Standard

    nein das ist nicht mein Problem, sondern eher ich möchte über ein OP Listenfeld (1-53) auswählen können was angezeigt wird. Das heisß ich muß erst alle Zeitwerte im DB nach dem passenden durchsuchen, markieren und dann anzeigen + Realwerte aus dem 1ten DB

    Gruß MArco

    Edit: Marlob hat es fast genau auf den Punkt gebracht, nur will ich alle Datenwerte aus dem 1ten DB die z.B. aus KW 3 sind angezeigt bekommen

    unsere Messwerte erstrecken sich bis zu einem Jahr.
    Geändert von skyvan (08.12.2009 um 13:33 Uhr)

  5. #5
    Registriert seit
    18.09.2004
    Ort
    Münsterland/NRW
    Beiträge
    4.718
    Danke
    729
    Erhielt 1.158 Danke für 969 Beiträge

    Standard

    Kann dein OP Scripte?
    Dann könntest du etwas in VB programmieren
    Hier mal ein Beispiel in Visual Basic
    Evtl. musst du das noch anpassen
    http://www.aboutvb.de/khw/artikel/khwweekdayinweek.htm

    Oder mal nach "Datum aus Kalenderwoche berechnen" googlen.
    Da finden sich einige Codebeispiele
    Geändert von marlob (08.12.2009 um 13:42 Uhr)

  6. #6
    skyvan ist offline Benutzer
    Themenstarter
    Registriert seit
    17.09.2007
    Beiträge
    52
    Danke
    14
    Erhielt 1 Danke für 1 Beitrag

    Standard

    nein leider, habe nur ein normales OP177B wird auch kein anderes eingebaut werden.

    Gruß Marco

  7. #7
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.220
    Danke
    533
    Erhielt 2.696 Danke für 1.948 Beiträge

    Standard

    Ich würde dann vielleicht aus der angewählten KW das Anfangs- und das Enddatum errechnen und den DB nach den Werten durchsuchen. Die gefundenen Werte in einen "Anzeige-DB" kopieren (macht alles die SPS), dessen Variablen auf dem OP dargestellt werden.
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  8. #8
    Registriert seit
    18.09.2004
    Ort
    Münsterland/NRW
    Beiträge
    4.718
    Danke
    729
    Erhielt 1.158 Danke für 969 Beiträge

    Standard

    Zitat Zitat von skyvan Beitrag anzeigen
    nein leider, habe nur ein normales OP177B wird auch kein anderes eingebaut werden.

    Gruß Marco
    das von mir genannte Script sollte sich aber auch nach SCL oder notwalls AWL konvertieren lassen. Einfach mal probieren

  9. #9
    skyvan ist offline Benutzer
    Themenstarter
    Registriert seit
    17.09.2007
    Beiträge
    52
    Danke
    14
    Erhielt 1 Danke für 1 Beitrag

    Standard

    hi marlob

    normalerweise probiere ich allein mein Zeug nur bin ich im Moment ein wenig unter Zeitdruck. HAst du evtl ein Link für mich oder besser noch einen Lösungsansatz.

    Ich möchte keine komplette Lösung von Dir/Euch

    Gruß und Danke Marco

  10. #10
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.716
    Danke
    398
    Erhielt 2.398 Danke für 1.998 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,
    ich hatte mir dafür mal eine SCL-Routine erstellt - vielleicht habe ich die hier sogar schon mal gepostet ...
    Wenn du damit etwas anfangen kannst - der FC zerlegt dir ein Datum in seine Bestandteile :
    Code:
    FUNCTION FC431 : VOID            
    Title   = 'UP Date nach TTMMJJ umwandeln'  
    AUTHOR  : 'Larry'
    VERSION : '1.1'     
     
    VAR_INPUT 
       IN_Date : DATE ;                 // Datum für Umwandlung 
          w_Date AT IN_Date : WORD ; 
    END_VAR
    VAR_IN_OUT 
    END_VAR
    VAR_OUTPUT
       Jahr              : INT ;       // Jahr des Vorgabe-Date's
       Monat             : INT ;       // Monat des Vorgabe-Date's
       Tag               : INT ;       // Tag des Vorgabe-Date's
       Wochentag         : INT ;       // Wochentag des Vorgabe-Date's  [1=So - 7=Sa]
       Schaltjahr        : INT ;       // Schaltjahr des Vorgabe-Date's
       Jahrestag         : INT ;       // Tag im Jahr des Vorgabe-Date's
       Kalenderwoche     : INT ;       // Kalenderwoche des Vorgabe-Date's
    END_VAR
    VAR_TEMP
       c_Date : DINT ; 
       Anz_SJ : INT ; 
       Diff_J : INT ;
       JTag   : INT ;
    END_VAR
     
    BEGIN
       c_Date := 1 + WORD_TO_DINT(w_Date) ;
       Diff_J := DINT_TO_INT(c_Date / 366) ;
       Jahr := Diff_J + 1990 ;
       Schaltjahr := 0 ; IF (Jahr MOD 4) = 0 THEN Schaltjahr := 1 ; END_IF ;
       
       Anz_SJ := (Diff_J + 2) / 4 ;
       Jahrestag := Schaltjahr - Anz_SJ + DINT_TO_INT(c_Date - (INT_TO_DINT(Diff_J) * 365)) ;
       Wochentag := DINT_TO_INT(c_date MOD 7) + 1 ;
       Kalenderwoche := (Jahrestag + 7 + 3 - Wochentag) / 7 ;
      
       JTag := Jahrestag ;
       IF (JTag > 0) AND (JTag <= 31) THEN 
          Monat := 1 ; Tag := JTag ;
       END_IF ; 
       JTag := JTag - 31 ;
       IF (JTag > 0) AND (JTag <= (28 + Schaltjahr)) THEN 
          Monat := 2 ; Tag := JTag ;
       END_IF ; 
       JTag := JTag - 28 - Schaltjahr ;
       IF (JTag > 0) AND (JTag <= 31) THEN 
          Monat := 3 ; Tag := JTag ;
       END_IF ; 
       JTag := JTag - 31 ;
       IF (JTag > 0) AND (JTag <= 30) THEN 
          Monat := 4 ; Tag := JTag ;
       END_IF ; 
       JTag := JTag - 30 ;
       IF (JTag > 0) AND (JTag <= 31) THEN 
          Monat := 5 ; Tag := JTag ;
       END_IF ; 
       JTag := JTag - 31 ;
       IF (JTag > 0) AND (JTag <= 30) THEN 
          Monat := 6 ; Tag := JTag ;
       END_IF ; 
       JTag := JTag - 30 ;
       IF (JTag > 0) AND (JTag <= 31) THEN 
          Monat := 7 ; Tag := JTag ;
       END_IF ; 
       JTag := JTag - 31 ;
       IF (JTag > 0) AND (JTag <= 31) THEN 
          Monat := 8 ; Tag := JTag ;
       END_IF ; 
       JTag := JTag - 31 ;
       IF (JTag > 0) AND (JTag <= 30) THEN 
          Monat := 9 ; Tag := JTag ;
       END_IF ; 
       JTag := JTag - 30 ;
       IF (JTag > 0) AND (JTag <= 31) THEN 
          Monat := 10 ; Tag := JTag ;
       END_IF ; 
       JTag := JTag - 31 ;
       IF (JTag > 0) AND (JTag <= 30) THEN 
          Monat := 11 ; Tag := JTag ;
       END_IF ; 
       JTag := JTag - 30 ;
       IF (JTag > 0) AND (JTag <= 31) THEN 
          Monat := 12 ; Tag := JTag ;
       END_IF ; 
      
    END_FUNCTION
    Nachsatz:
    Auf Anregung von Ingeborg, die da in dem Script noch einen Bug (!!!) entdeckt hat, habe ich das Ganze noch einmal überarbeitet.
    Es arbeitet nun bis zum 31.12.2099 (nach menschlichem Ermessen) fehlerfrei. Danach nicht mehr, da Siemens ab 2099 mit dem DATE-Format einen Fehler macht.
    Geändert von Larry Laffer (22.06.2010 um 18:29 Uhr) Grund: Fehler im Programm-Code ...

  11. Folgender Benutzer sagt Danke zu Larry Laffer für den nützlichen Beitrag:

    Ingeborg (22.06.2010)

Ähnliche Themen

  1. Format Date zerlegen
    Von online im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 05.11.2010, 13:08
  2. S7 Format DATE
    Von fmbux im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 18.10.2009, 19:53
  3. Time and Date
    Von paula23 im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 22.10.2008, 08:50
  4. Format Date and Time online im DB beobachten
    Von cmm1808 im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 08.12.2007, 17:09
  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
  •