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

Ergebnis 1 bis 6 von 6

Thema: Wochentag

  1. #1
    TedescoA Gast

    Frage


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Kann mir jemanden in der FUP-Sprache zeigen, wie man den Wochentag berechnet.
    Wie die Umschaltung von Sommer und Winterzeit erfolgt und
    wie man die Schaltjahre berechnet( Schaltjahre "ja" dann 29.Februar wenn "nein" dann 28.Februar).

    Danke für Hilfe
    Geändert von TedescoA (04.01.2007 um 16:28 Uhr) Grund: Korrektur bei Schaltjahre
    Zitieren Zitieren Gelöst: Wochentag  

  2. "der wochentag steht im ob1 im LB19
    oder mit fc7 aus den iec den wt aus dt rausziehen.

    suche hier im forum nach sommerzeit. hatten wir schon

    warum nutzt ihr nicht die suchfunktion. faule bande. "


  3. #2
    Registriert seit
    04.04.2006
    Beiträge
    239
    Danke
    31
    Erhielt 61 Danke für 51 Beiträge

    Standard

    Die SPS-Systemuhr kann mit dem SFC1 ausgelesen werden.
    Am besten eine Temp-Variable vom Typ Date_and_Time anlegen (in meinem Beispiel "ZEIT" ab Adresse 0.0).

    CALL SFC 1
    RET_VAL:=#Rueckgabe_Fehler
    CDT :=#ZEIT

    //Stunde
    L LB 3
    BTI
    T DB51.DBW 2

    //Minute
    L LB 4
    BTI
    T DB51.DBW 4

    //Sekunde
    L LB 5
    BTI
    T DB51.DBW 6

    //Tag
    L LB 2
    BTI
    T DB51.DBW 8

    //Monat
    L LB 1
    BTI
    T DB51.DBW 10

    //Jahr
    L LB 0
    BTI
    T DB51.DBW 12

    //Wochentag
    L LW 7
    SLW 4
    SRW 4
    T LW 7
    L LB 7
    BTI
    T DB51.DBW 14

    Der Wochentag wird in meinem Beispiel im DB51.DBW14 gespeichert (So=1, Mo=2.....Sa=7)

    Eine Sommer-/Winterzeitumschaltung sollte danach auch kein Problem mehr sein (wenn Wochentag, Monat, Stunde == Zeitpunkt für Umschaltung => Stunde mit dem SFC0 vor- bzw zurückstellen).

    Die Schaltjahre werden glaube ich bei der CPU-Sytemuhr berücksichtigt. Bin mir aber nicht 100-prozentig sicher.
    Geändert von Woldo (30.12.2006 um 03:42 Uhr)

  4. #3
    Registriert seit
    04.04.2006
    Beiträge
    239
    Danke
    31
    Erhielt 61 Danke für 51 Beiträge

    Standard

    Doppelpost
    Geändert von Woldo (30.12.2006 um 03:37 Uhr) Grund: Doppelpost

  5. #4
    Registriert seit
    22.11.2006
    Beiträge
    186
    Danke
    2
    Erhielt 12 Danke für 12 Beiträge

    Standard

    Hast du dir dass schon mal angesehen?

    http://www.sps-forum.de/showthread.php?t=10717
    Ciao

    Antonio
    ________________________________
    nicht in Problemen, sondern in Lösungen denken

  6. #5
    Registriert seit
    20.06.2003
    Ort
    Sauerland.NRW.Deutschland
    Beiträge
    4.850
    Danke
    78
    Erhielt 800 Danke für 543 Beiträge

    Standard

    der wochentag steht im ob1 im LB19
    oder mit fc7 aus den iec den wt aus dt rausziehen.

    suche hier im forum nach sommerzeit. hatten wir schon

    warum nutzt ihr nicht die suchfunktion. faule bande.
    .
    mfg Volker .......... .. alles wird gut ..

    =>Meine Homepage .. direkt zum Download

    Meine Definition von TIA: Total Inakzeptable Applikation

  7. #6
    Registriert seit
    02.02.2006
    Ort
    Hessen
    Beiträge
    429
    Danke
    16
    Erhielt 28 Danke für 22 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    zur Ermittlung des Osterdatums kann dieser Baustein einmal täglich aufgerufen werden. Die ersten beiden Netzwerke sind übler Spagetticode, sehen aber in KOP auch nicht besser aus. Beim Ausprobieren beachten: Nach Zurückstellen der CPU-Zeit wird der OB nicht neu aufgerufen!

    Code:
    ORGANIZATION_BLOCK OB 11
    TITLE = "Time of Day Interrupt"
    VERSION : 0.1
     
     
    VAR_TEMP
    OB11_EV_CLASS : BYTE ;    //Bits 0-3 = 1 (Coming event), Bits 4-7 = 1 (Event class 1)
    OB11_STRT_INFO : BYTE ;   //16#12 (OB 11 has started)
    OB11_PRIORITY : BYTE ;    //Priority of OB Execution
    OB11_OB_NUMBR : BYTE ;    //11 (Organization block 11, OB11)
    OB11_RESERVED_1 : BYTE ;  //Reserved for system
    OB11_RESERVED_2 : BYTE ;  //Reserved for system
    OB11_PERIOD_EXE : WORD ;  //Period of execution (once, per minute/hour/day/week/month/year)
    OB11_RESERVED_3 : INT ;   //Reserved for system
    OB11_RESERVED_4 : INT ;   //Reserved for system
    OB11_DATE_TIME : DATE_AND_TIME ;  //Date and time OB11 started
    Oster_Date_Time : DATE_AND_TIME ; 
    Oster_Datum : DATE ;  
    Aktuell_Datum : DATE ;    
    a : DINT ;    
    b : DINT ;    
    c : DINT ;    
    d : DINT ;    
    e : DINT ;    
    END_VAR
    BEGIN
    NETWORK
    TITLE =Datum für Ostersonntag nach Gauss bis 2089
     
      L     LB    12; 
      BTI   ; 
      L     L#2000; 
      +D    ; 
      T     #d; 
    L     L#19; 
      MOD   ; 
      T     #a; 
      L     #d; 
      L     L#4; 
    MOD   ; 
      T     #b; 
      L     #d; 
      L     L#7; 
      MOD   ; 
    T     #c; 
      L     #a; 
      L     L#19; 
      *D    ; 
      L     L#24; 
      +D    ; 
      L     L#30; 
      MOD   ; 
    T     #d; 
      L     #b; 
      L     #b; 
      +D    ; 
      T     #b; 
      L     #c; 
      L     L#4; 
      *D    ; 
      T     #c; 
      L     #b; 
      L     #c; 
      +D    ; 
      T     #b; 
      L     #d; 
      L     L#6; 
      *D    ; 
      T     #e; 
      L     #b; 
      L     #e; 
      +D    ; 
      L     L#5; 
      +D    ; 
      L     L#7; 
      MOD   ; 
      T     #e; 
      L     #d; 
      +D    ; 
      T     #b; 
     
    NETWORK
    TITLE =Ostertermin als Date_and_Time zwischenspeichern
     
    O(    ; 
      L     #b; 
      L     L#35; 
      ==D   ; 
      )     ; 
      O     ; 
      U(    ; 
      L     #d; 
    L     L#28; 
      ==D   ; 
      )     ; 
      U(    ; 
      L     #e; 
      L     L#6; 
      ==D   ; 
      )     ; 
      U(    ; 
    L     #a; 
      L     L#10; 
      >D    ; 
      )     ; 
      L     #b; 
      L     L#16; 
      -D    ; 
    ITB   ; 
      T     LB    22; 
      L     4; 
      T     LB    21; 
      SPB   M_00; 
      L     #b; 
      L     L#9; 
      -D    ; 
      ITB   ; 
      T     LB    22; 
      L     #b; 
      L     L#9; 
      >D    ; 
      SPB   M_00; 
      L     #b; 
      L     L#22; 
      +D    ; 
      ITB   ; 
      T     LB    22; 
      L     3; 
      T     LB    21; 
    M_00: L     LB    12; 
      T     LB    20; 
    NETWORK
    TITLE =Bewegliche Feiertage ermitteln für Bundesland Hessen
    // Standard Library, IEC Function Blocks, FC 6 DT_DATE IEC
      CALL "DT_DATE" (
           IN                       := #Oster_Date_Time,
           RET_VAL                  := #Oster_Datum);
      CALL "DT_DATE" (
    IN                       := #OB11_DATE_TIME,
           RET_VAL                  := #Aktuell_Datum);
     
      R     "Arbeitsfreie Feiertage"; //Platzhalter
      L     #Aktuell_Datum; 
      L     #Oster_Datum; 
      -I    ; 
      L     -2; 
      ==I   ; 
      S     "Arbeitsfreie Feiertage"; //Karfreitag
      TAK   ; 
      L     0; 
      ==I   ; 
      S     "Arbeitsfreie Feiertage"; //Ostern
      TAK   ; 
      L     1; 
      ==I   ; 
      S     "Arbeitsfreie Feiertage"; //Ostermontag
      TAK   ; 
      L     39; 
      ==I   ; 
      S     "Arbeitsfreie Feiertage"; //Himmelfahrt
      TAK   ; 
      L     49; 
      ==I   ; 
      S     "Arbeitsfreie Feiertage"; //Pfingsten
      TAK   ; 
      L     50; 
      ==I   ; 
      S     "Arbeitsfreie Feiertage"; //Pfingstmontag
      TAK   ; 
      L     60; 
      ==I   ; 
      S     "Arbeitsfreie Feiertage"; //Fronleichnam
    NETWORK
    TITLE =Fest datierte Feiertage und sonstige arbeitfreie Tage
     
     
      L     LW    13; 
      L     W#16#101; 
      ==I   ; 
      S     "Arbeitsfreie Feiertage"; //Neujahr
      TAK   ; 
      L     W#16#501;
      ==I   ; 
      S     "Arbeitsfreie Feiertage"; //1.Mai
      TAK   ; 
      L     W#16#1003; 
      ==I   ; 
      S     "Arbeitsfreie Feiertage"; //3.Oktober
      TAK   ; 
      L     W#16#1224; 
      ==I   ; 
      S     "Arbeitsfreie Feiertage"; //Heiligabend
      TAK   ; 
      L     W#16#1225; 
      ==I   ; 
      S     "Arbeitsfreie Feiertage"; //Weihnachten
      TAK   ; 
      L     W#16#1226; 
      ==I   ; 
      S     "Arbeitsfreie Feiertage"; //2.Weihnachtstag
      TAK   ; 
      L     W#16#1231; 
      ==I   ; 
      S     "Arbeitsfreie Feiertage"; //Sylvester
     
     
    END_ORGANIZATION_BLOCK
    Geändert von Werner54 (18.04.2007 um 16:07 Uhr) Grund: W#16#105 ist natürlich nicht der erste Mai
    mfG Werner
    Hoch lebe die Suchfunktion!
    Zitieren Zitieren Arbeitsfreie Tage  

  8. Folgender Benutzer sagt Danke zu Werner54 für den nützlichen Beitrag:

    SIGGI (01.02.2009)

Ähnliche Themen

  1. Antworten: 32
    Letzter Beitrag: 14.03.2011, 22:38
  2. Antworten: 0
    Letzter Beitrag: 23.04.2009, 19:12
  3. Aktueller Wochentag Date_and_Time
    Von bastler im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 28.10.2008, 18:40
  4. Uhrzeit mit sfc0 stellen, Wochentag unbekannt
    Von Merten1982 im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 11.04.2007, 17:00
  5. Antworten: 13
    Letzter Beitrag: 06.12.2004, 21:39

Lesezeichen

Berechtigungen

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