Sommer Winterzeit

1. in 10 Monaten im Jahr hast du keine Probleme.
2. du musst das konkrete Datum der Zeitumstellung herausfinden (in OSCAT gabs glaube ich auch was mit Kalender)
3. du vergleichst dein Datum mit selbigen ( Subtraktion der Werte und ob Ergebnis positiv oder negativ entscheidet über Sommer/Winterzeit)
4. du echnest in utc um

Thomas
 
er vergeleicht beide eingänge miteinander ...

in den einen kann ich die geladene zeit setzten und in den anderen müsste ich doch manuell eine zeit eingeben oder nicht?
das funktioniert auch nicht -.- oder mach ich was falsch?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
er vergeleicht beide eingänge miteinander ...

in den einen kann ich die geladene zeit setzten und in den anderen müsste ich doch manuell eine zeit eingeben oder nicht?
das funktioniert auch nicht -.- oder mach ich was falsch?
FC34 müsste sein was du suchst:

SB_DT_DT FC 34 Subtract DT - DT; subtrahiert zwei Zeitpunkte (DT) liefert eine Zeitdauer (TIME)
 
das ist es auch nicht da er aus dem subtrahiertem ein ergebnis herausgibt...
ich bräuchte nur etwas was überprüft ob diese gleichgroß sind mehr nicht...
kann man den aus dt keine ganze zahlen machen und mit normalen vergleichern arbeiten???
 
... und das Ergebnis kannst du auf >< 0 Vergleichen, und weist wo du bist vor oder nach dem Datum der Zeitumstellung.
Du kannst auch das Datum zerlegen und dann die einzelnen Werte vergleichen.
Oder du rechnest den fortlaufenden tag des Jahres aus und vergleichst dann...
Viele Wege führen nach Rom oder anderswohin.
Thomas
 
Zuviel Werbung?
-> Hier kostenlos registrieren
... ich schlage mich mit dem problem seit mehreren tagen und solangsam muss es zum ziel kommen -.- , da es anscheinend keine andere möglichkeit gibt als die zahlen ausseinander zu pflücken muss ich das wohl machen. Mit dem fc 6 DT_Date kann ich wohl das datum rausnehmen ... dann habe ich nur noch tag.monat.und jahr
aber wie kann ich nun tag und monat noch herausnehmen um damit zu arbeiten?
dann muss das ganze ja noch in eine reale zahl oder so umgewndelt werden damit ich vergleichswerte eintippen kann oder???
 
das ist es auch nicht da er aus dem subtrahiertem ein ergebnis herausgibt...
was kommt denn raus wenn du das Wunschdatum vom Umstellungsdatum subtrahierst? Und den Wert vergleichst du mit 0 einmal > und einmal <
dann habe ich nur noch tag.monat.und jahr
aber wie kann ich nun tag und monat noch herausnehmen um damit zu arbeiten?
Transferiere dein Ergebnis in irgend einen DB.
Dann lad dir die einzelnen Bytes und schau dir an was drinsteht.
Die die du brauchst benutzt du dann.

Thomas
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Bt_lt

Hallo,

fuer das ermitteln, ob ein Datum in der Sommerzeit liegt und dann in Sommerzeit umrechnen, gibt es in der S7-Standard-Bibliothek den Baustein FC61 "BT_LT".
Oder Du nimmst diesen abgespeckten Baustein "BT_LT_3" von mir und fuetterst ihn am Eingang mit Deinem zu pruefenden Datum. Der Baustein gibt Dir aus, ob das Datum in der Sommerzeit liegt und die ggf. umgerechnete Zeit.

Harald
 
Nicht getestet !

Hi Siqo,

wenn ich dich richtig verstanden habe, dann könntest du mit deinem Eingabefeld DT und einer Taste für "Uhrzeit übernehmen" auf deinem Touchpanel den SFC0 nutzen und deine Lokalzeit in die CPU schreiben.

Dann nutzt du den FC60 zur Auswertung deiner Uhrzeit...
... ungefähr wie im angehängten Bild.

Lokalzeit in der...
...Winterzeit - 1Std
...Sommerzeit - 2Std
= Worldtime

Gruß
Toki
 

Anhänge

  • Worldtime.JPG
    Worldtime.JPG
    52,8 KB · Aufrufe: 57
genau so sollte es sein :)

aber ich komme noch nicht gut zurecht ...

ich habe in den db1 eine variable angelegt mit folgendem namen
db1_lokalzeit welche ja dann vom touchpanel beschrieben wird.

dann nehme ich diese variable und tue diesen auf den eingang im fc1
vom sfc0 baustein auf den eingang pdt.
was für eine funtkion hat ret_val???
 
Zuletzt bearbeitet:
so dafür habe ich im DB1 eine variable eingegeben namens db1_set als INT anfangswert bei 0

schreibe also am ausgang des re_val db1.db1_set und er akzeptiert es aber nicht und markiert es rot an
wo ist nun der fehler?
 
Was meinst du jetzt ?? Du willst den Fehlercode in einen DB laden ?

Dann schreibst du an RET_VAL einfach

Code:
RETVAL     := DB2.DBW0

Das würde ihn dir im DB 2 in ein Wort angefangen an der Adresse 0.0 schreiben.

Oder hab ich da jetzt was falsch verstanden ?

Edit: Wenn du das so schreiben möchtest wie in deinem Post dann musst du dem Variablennamen im db den Symbolischen Namen des DB's
vorransetzen: "symbolischer Name".db1_set
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
ich muss das doch erst in einem DB deklarieren oder nicht?
als nächstes hätte ich es gerne in db1 (alles ereignisse von fc1 = db1)
wenn ich im db1 -> db1.dw0 eingeben möchte geht das nicht... da kommt immer so ein geräusch fürn fehler -.- ...
würde gern die meldung von ret_val in db1 laden wollen
oder ist das nicht möglich?
 
habe nun folgendes gemacht:

ret_val = db1.dbw0

er meckert nicht mehr aber im db1 sehe ich nicht das dort was angelegt wurde
 
Ich bin mir im Moment nicht mehr so ganz sicher was dein Ziel ist....

Wie hast du nachgeschaut ob im DB1 ein Wert steht ? Variablentabelle ? Online Ansicht ?

Überschreibst du das Datenbausteinwort vllt. wieder an einer anderen Stelle in deinem Programm ?
 
Zurück
Oben