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

Ergebnis 1 bis 4 von 4

Thema: Offset auf S7-Zeit für WinCCflexible (MP377)????

  1. #1
    Registriert seit
    18.09.2010
    Beiträge
    1
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo
    Ich habe ein Problem mit einer Uhrzeit funktion:

    Diese Funktion sollte mir die Baugruppenzeit auslesen und einen Stundenoffset von x addieren oder subtrahieren, um damit eine andere Zeitzone anzeigen zukönnen.
    das funktioniert jedoch nicht so ganz weil ich irgendwo beim wandeln des BCD wertes einen Fehler habe, schätze ich. Schaut es euch doch mal an vieleicht könnt ihr mir weiterhelfen.
    Am rande kann ich eigentlich irgendwo in der Systemzeit (wenn diese auf Greenwich time steht)ein Bít sehen mit dem ich auf Sommer- oder Winterzeit umstellen kann???

    MFG Inbetriebnehmer
    Angehängte Dateien Angehängte Dateien
    Zitieren Zitieren Offset auf S7-Zeit für WinCCflexible (MP377)????  

  2. #2
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.163
    Danke
    921
    Erhielt 3.286 Danke für 2.655 Beiträge

    Standard

    Zum Addieren und Subtrahieren von Zeiten zu einem DATE_AND_TIME-Wert gibt es in Step7 fertige Funktionen:
    Standard Library > IEC Function Blocks: FC1 "AD_DT_TM" und FC35 "SB_DT_TM". ( 1 Stunde entspricht T#1H )

    Diese Funktionen beachten auch korrekt, wenn sich durch die Berechnung das Datum ändert.

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet
    Zitieren Zitieren FC1 "AD_DT_TM" und FC35 "SB_DT_TM"  

  3. #3
    Registriert seit
    17.06.2004
    Ort
    Offenau
    Beiträge
    3.745
    Danke
    209
    Erhielt 421 Danke für 338 Beiträge

    Standard

    dafür habe ich folgendes im einsatz:

    im instanzdb steht ab dib0 die systemzeit (mit sommer winterzeit)
    und ab dib18 die spszeit (zeit direkt von der cpu)
    Code:
          CALL  "BLKMOV"
           SRCBLK :=#SPSZEIT
           RET_VAL:=#RET_VAL_TEMP
           DSTBLK :=#SYSTEMZEIT
    
    //Umstellung auf Sommerzeit
          L     DIB   18
          BTD   
          L     4
          /D    
          L     DIB   18
          BTD   
          +D    
          +     L#5
          L     L#7
          MOD   
          L     L#-1
          *D    
          +     L#31
          T     #TAG_IM_MAERZ
    
    //Zurückstellung
          L     DIB   18
          BTD   
          L     L#4
          /D    
          L     DIB   18
          BTD   
          +D    
          +     L#2
          L     L#7
          MOD   
          L     L#-1
          *D    
          +     L#31
          T     #TAG_IM_OKTOBER
    
    //Prüfung ob Zeit im Bereich
          SET   
          R     #SOMMERZEIT
    
          L     DIB   18
          BTI   
          T     #JAHR
    
          L     DIB   19
          BTI   
          T     #MONAT
    
          L     DIB   20
          BTI   
          T     #TAG
    
          L     DIB   21
          BTI   
          T     #STUNDE
    
    
    //Monat <3 oder 10<
          U(    
          L     3
          L     #MONAT
          <I    
          )     
          U(    
          L     10
          <I    
          )     
          SPB   ja
    
    //Tag im März > TAG_IM_MÄRZ
          U(    
          L     #MONAT
          L     3
          ==I   
          )     
          U(    
          L     #TAG_IM_MAERZ
          L     #TAG
          <I    
          )     
          SPB   ja
    
    //Prüfung der Stunde im März
          U(    
          L     #MONAT
          L     3
          ==I   
          )     
          U(    
          L     #TAG_IM_MAERZ
          L     #TAG
          ==I   
          )     
          U(    
          L     #STUNDE
          L     2
          >=I   
          )     
          SPB   ja
    
    //Tag im Oktober < TAG_IM_OKTOBER
          U(    
          L     #MONAT
          L     10
          ==I   
          )     
          U(    
          L     #TAG
          L     #TAG_IM_OKTOBER
          <I    
          )     
          SPB   ja
    
    //Prüfung der Stunde im Oktober
          U(    
          L     #MONAT
          L     10
          ==I   
          )     
          U(    
          L     #TAG_IM_OKTOBER
          L     #TAG
          ==I   
          )     
          U(    
          L     #STUNDE
          L     2
          <I    
          )     
          SPB   ja
    
          SPA   nee
    
    ja:   SET   
          S     #SOMMERZEIT
    
    
    //Anzahl der Tage im Monat bestimmen
    
          U(    
          L     #MONAT
          L     4
          ==I   
          )     
          O(    
          L     #MONAT
          L     6
          ==I   
          )     
          O(    
          L     #MONAT
          L     9
          ==I   
          )     
          O(    
          L     #MONAT
          L     11
          ==I   
          )     
          SPB   m30
    
          L     #MONAT
          L     2
          ==I   
          SPB   feb
    
          L     31
          SPA   mOk
    m30:  L     30
          SPA   mOk
    
    feb:  L     #JAHR
          L     4
          MOD   
          U     ==0
          SPB   sJah
    
          L     28
          SPA   mOk
    
    sJah: L     29
    
    mOk:  T     #MONAT_TAGE
    
          L     DIB    3                    //Stunde
          BTI   
          L     23
          ==I   
          SPB   tagP
    
          L     DIB    3                    //Stunde
          BTI   
          +     1
          ITB   
          T     DIB    3                    //Stunde
          SPA   nee                         //Tag hat sich nicht geändert -> Ok.
    
    tagP: L     0
          T     DIB    3                    //Stunde
    
          L     #TAG                        //Tag
          +     1
          T     #TAG
          L     #MONAT_TAGE
          >I    
          SPB   monP
    
          L     #TAG
          ITB   
          T     DIB    2                    //Tag
    
          SPA   woTa
    
    monP: L     1
          T     DIB    2                    //Tag
    
          L     #MONAT
          +     1
          T     #MONAT
          L     12
          >I    
          SPB   jahP
    
          L     #MONAT
          ITB   
          T     DIB    1                    //Monat
    
          SPA   woTa
    
    jahP: L     1
          T     DIB    1                    //Monat
    
          L     DIB    0                    //Jahr
          BTI   
          +     1
          ITB   
          T     DIB    0                    //Jahr
    
    
    woTa: L     7
          L     DIB    7                    //Wochentag
          ==I   
          SPB   woNu
    
          L     DIB    7                    //Wochentag
          +     1
          T     DIB    7                    //Wochentag
          SPA   nee
    
    woNu: L     1
          T     DIB    7                    //Wochentag
    
    nee:  NOP   0
    ---------------------------------------------
    Jochen Kühner
    https://github.com/jogibear9988/DotN...ToolBoxLibrary - Bibliothek zur Kommunikation mit PLCs und zum öffnen von Step 5/7 Projekten
    Zitieren Zitieren Sommer/Winterzeit  

  4. Folgender Benutzer sagt Danke zu Jochen Kühner für den nützlichen Beitrag:

    Klärmolch (02.02.2011)

  5. #4
    Registriert seit
    22.01.2009
    Beiträge
    288
    Danke
    61
    Erhielt 32 Danke für 25 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,
    Die #SPSZEIT erhalte ich über SFC1.
    Die Variablen habe ich alle im entsprechenden Format unter "STAT" angelegt, paßt das? (funktioniert jedenfalls)
    Kann ich die Variablen aus dem IDB direkt weiterverarbeiten?

    Gruß
    Klaus

Ähnliche Themen

  1. Indradrive CS Kommutierungs-Offset
    Von Scorch89 im Forum Antriebstechnik
    Antworten: 1
    Letzter Beitrag: 10.06.2011, 16:53
  2. Array Offset
    Von forellengarten im Forum CODESYS und IEC61131
    Antworten: 6
    Letzter Beitrag: 04.04.2011, 22:22
  3. Antworten: 6
    Letzter Beitrag: 08.02.2009, 21:21
  4. Pointer und Offset
    Von SPSTorsten im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 14.01.2009, 21:42
  5. DB-Nummer und Offset aus Symbol auslesen
    Von nobby_nobbs im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 14.08.2008, 15:41

Lesezeichen

Berechtigungen

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