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

Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 16 von 16

Thema: Date To String

  1. #11
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.726
    Danke
    398
    Erhielt 2.402 Danke für 2.001 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von van Beitrag anzeigen
    @LL
    ich habe dein ursprungs posting so gedeutet das es da einen ganz einfachen weg gibt und dein scl code der harte weg ist.
    Ist ja eigentlich alles gesagt - nur zu dieser Aussage noch einmal ...
    SCL ist bei solchen Sachen nicht "der harte Weg" sondern aus meiner Sicht eher "der gute Weg". Ich habe zu diesen und ähnlichen Funktionen in aller Regel nur SCL-Code - in AWL ist mir das viel zu kompliziert zu Erstellen.

    Gruß
    LL

  2. #12
    Registriert seit
    04.02.2007
    Beiträge
    2.544
    Danke
    167
    Erhielt 731 Danke für 528 Beiträge

    Standard

    Zitat Zitat von Larry Laffer Beitrag anzeigen
    Ich habe zu diesen und ähnlichen Funktionen in aller Regel nur SCL-Code - in AWL ist mir das viel zu kompliziert zu Erstellen.

    Gruß
    LL
    Ja Du glücklicher darfst das ja auch. Ich würde gerne mehr mit SCL machen ist aber bei allen Kunden verboten. Den aktuellen Auftrag nehme ich mal zum üben, SCL ist zwar verboten aber AWL nicht. Wenn die meckern wollen lösche ich die Quelle und die können mich mal.
    Ist die Maschine aus dem anderen Tread mit Sicherheit, permanent kommen da neue Vorgaben, aber billig solls sein. Nachdem mein Programm in KOP/FUP fertig war , kam dann raus das alles in Graph sein sollte.

    Sorry ich schweife vom Thema ab...

    Gibt ja halt Sachen die in SCL
    1. viel einfacher zu schreiben sind
    2. viel einfacher nachzuvollziehen sind
    aber
    S7 macht das ein RiesenBaustein draus.
    „Wenn du ein Problem hast, versuche es zu lösen. Kannst du es nicht lösen, dann mache kein Problem daraus.“
    Siddhartha Gautama

  3. #13
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.726
    Danke
    398
    Erhielt 2.402 Danke für 2.001 Beiträge

    Standard

    Zitat Zitat von jabba Beitrag anzeigen
    aber
    S7 macht das ein RiesenBaustein draus.
    Dann schweife ich auch mal vom Thema ab :
    Der umgewandelte Baustein ist nicht zwangsläufig größer als wenn du ihn von vorn herein in AWL erstellt hättest - wenn du viel mit Strukturen arbeitest ist es aber schon gut möglich.

    Gruß
    LL

  4. #14
    Registriert seit
    19.02.2013
    Beiträge
    43
    Danke
    12
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo Larry,
    ich habe dein Code in mein Programm eingesetzt und habe festgestellt, dass Jahrestag falsch berechnet wird. Z.B. für den 13.04.16 wird der Jahrestag 103 anstatt 104 berechnet. Dadurch stimmt auch String später nicht und wird als 12.04.16 angezeigt. Ich weiß leider nicht wie du auf die Berechnung Jahrestag gekommen bist. Kannst du mir dabei helfen? Ich könnte JTag := Jahrestag+1 nehmen aber weiß dann nicht ob ich später dadurch probleme bekomme.

  5. #15
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.726
    Danke
    398
    Erhielt 2.402 Danke für 2.001 Beiträge

    Standard

    Hallo,
    das ist mir auch irgendwann schon einmal aufgefallen und in einem anderen Thread habe ich dazu auch schon einmal den geänderten Code gepostet. Ist aber kein Problem, dass hier auch noch einmal zu tun :
    Code:
        
    FUNCTION FC437 : VOID                      // UP DATE nach Tag, Monat, Jahr etc. umwandelnTitle   = 'UP DATE nach TTMMJJ umwandeln'  // UP DATE nach Tag, Monat, Jahr etc. umwandeln
    AUTHOR  : 'Larry'
    VERSION : '1.4'     //    30.09.2014
    FAMILY  : 'LL_Std'
    KNOW_HOW_PROTECT
    
    //     Bausteinparameter
    
    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 ;       // =1: Vorgabe-Date ist ein Schaltjahr
       Jahrestag         : INT ;       // Tag im Jahr des Vorgabe-Date's
       Kalenderwoche     : INT ;       // Kalenderwoche des Vorgabe-Date's
       SommerZeit        : INT ;       // =1: Vorgabe-Date ist innerhalb der Sommerzeit
    END_VAR
    VAR_TEMP
       c_Date : DINT ; 
       Anz_SJ : INT ; 
       Diff_J : INT ;
       JTag   : INT ;
       h_Wochentag : INT ;
       h_Datum     : INT ;
       
       Tag_Wechsel_SZ   : INT ;          // - Jahrestag, an dem nach Sommerzeit gewechselt wird
       Tag_Wechsel_WZ   : INT ;          // - Jahrestag, an dem nach Winterzeit gewechselt wird
    END_VAR
    CONST 
       c_Januar := 31 ;
       c_Februar := 28 ;
       c_Maerz := 31 ;
       c_April := 30 ;
       c_Mai := 31 ;
       c_Juni := 30 ;
       c_Juli := 31 ;
       c_August := 31 ;
       c_September := 30 ;
       c_Oktober := 31 ;
       c_November := 30 ;
       c_Dezember := 31 ;
    END_CONST 
    LABEL
       Chk_weiter ;
    END_LABEL
     
    //     Anweisungsteil
    
    BEGIN
       c_Date := 1 + WORD_TO_DINT(w_Date) ;
       Diff_J := REAL_TO_INT(DINT_TO_REAL(c_Date) / 365.25 - 0.5) ;
       Jahr := Diff_J + 1990 ;
       Schaltjahr := 0 ; IF ((Jahr MOD 4) = 0) AND (NOT ((Jahr MOD 100) = 0) OR ((Jahr MOD 400) = 0)) THEN Schaltjahr := 1 ; END_IF ;
       
       Anz_SJ := (Diff_J + 2) / 4 ; 
       Anz_SJ := Anz_SJ - ((Diff_J - 10) / 100) ;
       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 + (4 - Wochentag)) / 7 ;
       IF (Kalenderwoche = 0) THEN Kalenderwoche := 53 ; END_IF ;
       JTag := Jahrestag ;
       IF (JTag > 0) AND (JTag <= c_Januar) THEN 
          Monat := 1 ; Tag := JTag ;
       ELSE    
          JTag := JTag - c_Januar ;
          IF (JTag > 0) AND (JTag <= (c_Februar + Schaltjahr)) THEN 
             Monat := 2 ; Tag := JTag ;
          ELSE 
             JTag := JTag - c_Februar - Schaltjahr ;
             IF (JTag > 0) AND (JTag <= c_Maerz) THEN 
                Monat := 3 ; Tag := JTag ;
             ELSE    
                JTag := JTag - c_Maerz ;
                IF (JTag > 0) AND (JTag <= c_April) THEN 
                   Monat := 4 ; Tag := JTag ;
                ELSE 
                   JTag := JTag - c_April ;
                   IF (JTag > 0) AND (JTag <= c_Mai) THEN 
                      Monat := 5 ; Tag := JTag ;
                   ELSE 
                      JTag := JTag - c_Mai ;
                      IF (JTag > 0) AND (JTag <= c_Juni) THEN 
                         Monat := 6 ; Tag := JTag ;
                      ELSE 
                         JTag := JTag - c_Juni ;
                         IF (JTag > 0) AND (JTag <= c_Juli) THEN 
                            Monat := 7 ; Tag := JTag ;
                         ELSE 
                            JTag := JTag - c_Juli ;
                            IF (JTag > 0) AND (JTag <= c_August) THEN 
                               Monat := 8 ; Tag := JTag ;
                            ELSE 
                               JTag := JTag - c_August ;
                               IF (JTag > 0) AND (JTag <= c_September) THEN 
                                  Monat := 9 ; Tag := JTag ;
                               ELSE 
                                  JTag := JTag - c_September ;
                                  IF (JTag > 0) AND (JTag <= c_Oktober) THEN 
                                      Monat := 10 ; Tag := JTag ;
                                  ELSE 
                                     JTag := JTag - c_Oktober ;
                                     IF (JTag > 0) AND (JTag <= c_November) THEN 
                                        Monat := 11 ; Tag := JTag ;
                                     ELSE 
                                        JTag := JTag - c_November ;
                                        IF (JTag > 0) AND (JTag <= c_Dezember) THEN 
                                           Monat := 12 ; Tag := JTag ;
                                        END_IF ; 
                                     END_IF ; 
                                  END_IF ; 
                               END_IF ; 
                            END_IF ; 
                         END_IF ; 
                      END_IF ; 
                   END_IF ; 
                END_IF ; 
             END_IF ; 
          END_IF ; 
       END_IF ; 
    // Sommerzeit ?  
      
       h_Datum := Anz_SJ + (Diff_J * 365) + 83 ;  // 83 = Jahrestag vom 24.03. im nicht-Schaltjahr
       h_Wochentag := 6 - (h_Datum MOD 7) ;
       IF (h_Wochentag = 0) THEN h_Wochentag := 7 ; END_IF ;
           
       Tag_Wechsel_SZ := 83 + h_Wochentag ;
           
       h_Datum := Anz_SJ + (Diff_J * 365) + 297 ;  // 297 = Jahrestag vom 24.10. im nicht-Schaltjahr
       h_Wochentag := 6 - (h_Datum MOD 7) ;
       IF (h_Wochentag = 0) THEN h_Wochentag := 7 ; END_IF ;
           
       Tag_Wechsel_WZ := 297 + h_Wochentag ;
      
       SommerZeit := 0 ;
       IF (Jahrestag >= Tag_Wechsel_SZ) AND (Jahrestag <= Tag_Wechsel_WZ) THEN SommerZeit := 1 ; END_IF ;
       
    END_FUNCTION
    Viel Spaß
    Larry

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

    Goeky (13.04.2016)

  7. #16
    Registriert seit
    19.02.2013
    Beiträge
    43
    Danke
    12
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Danke, funktioniert

Ähnliche Themen

  1. Konstante String in Variable String schreiben
    Von sailor im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 07.12.2009, 18:01
  2. Antworten: 13
    Letzter Beitrag: 24.09.2009, 12:54
  3. Ein String kopieren in einen anderen String
    Von CanYouHelpMe im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 25.09.2008, 17:21
  4. String in Date&Time
    Von Stohstaky im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 10.10.2007, 16:13
  5. Date to String in SCL
    Von ottohahn im Forum Simatic
    Antworten: 0
    Letzter Beitrag: 07.06.2006, 20:17

Lesezeichen

Berechtigungen

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