Datum und Zeit konvertieren

A

Anonymous

Guest
Zuviel Werbung?
-> Hier kostenlos registrieren
Ist es möglich das Datum und die Uhrzeit in eine DINT oder in einen String zu konvertieren?

Darf ich FCs aus Bibliotheken umbenennen?

Bei momentanen Stand der Dinge könnte es passieren das ich 2 unterschiedliche FC5 aus den Bibliotheken verwende.
 
Ich habe leider noch eine Frage vergessen.

Kann ich vor oder nach der Konvertierung die Milliekunden wegkürzen?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Zu allem kann ich nur ja sagen. Je nach Format gibt es Bausteine in der Lib von Siemens. Das Format Time ist ein DINT und kann ganz einfach in AWL auf eine andere Variable gebracht werden.

die FC´s kannst du einfach umbenennen, in der Symboltabelle musst du dann nur mit Hand die Symbolik anpassen.

Die ms wirst du leicht durch eine Division los.

pt
 
Danke für die Info das das Format TIME einem DINT entspricht, das bringt mich um einiges weiter.

Aber mit welcher Division soll ich die ms los werden?

Entspricht auch das Format Date einem DINT?
 
date belegt 2 byte
time belegt 4 byte
date_and_time belegt 8 byte

du kannst aber auch die lokaldaten des ob 1 verwenden.

ob1
Code:
      L     LB    12
      T     DB80.DBB   10               //jahr

      L     LB    13
      T     DB80.DBB   11               //monat

      L     LB    14
      T     DB80.DBB   12               //tag

      L     LB    15
      T     DB80.DBB   13               //stunde

      L     LB    16
      T     DB80.DBB   14               //minute

      L     LB    17
      T     DB80.DBB   15               //sekunde

      L     LB    18
      T     DB80.DBB   16               //ms

      L     LB    19
      T     DB80.DBB   17               //ms und wochentag 1=sonntag
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Verstehe ich das richtig?

LB 12 bis LB 19 sind Systemdaten auf die ich über L LB x standardmäßig zugreifen kann ohne weitere Funktionen laden zu können.

Die Daten haben die Größe eines Bytes und werden in den DB80 transferiert.

Ab dem 10 Byte sind die Datums und Zeitdaten im DB80 eingetragen.

Ist das so korrekt?
 
korrekt

kopiere obigen code einfach mal in den ob1 und beobachte die dbb's in einer vat
 
OK. Ich hab' das probiert. Die Zeit wird als HEX-Wert im DB gespeichert. Sobald ich die Werte, welche ich als INT im DB gespeichert habe, auslese und in einen String konvertieren will folgendes Problem auf.

Die Werte werden von HEX auf eine normale Zahl umgewandelt, die Werte die ich in den String speichere stimmen somit nicht.

Anstelle von 14 Uhr rechnet die S7 intern auf 20 (1x16 + 4 = 20) um und speichert nun den Wert 20 im String. Kann die Umrechnung umgehen und den HEX - Wert in den String speichern?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Code:
      L     LB    12
      BTI   
      T     DB80.DBB   10
      L     LB    13
      BTI   
      T     DB80.DBB   11
      L     LB    14
      BTI   
      T     DB80.DBB   12
      L     LB    15
      BTI   
      T     DB80.DBB   13
      L     LB    16
      BTI   
      T     DB80.DBB   14
      L     LB    17
      BTI   
      T     DB80.DBB   15
      L     LB    18
      BTI   
      T     DB80.DBB   16
      L     LB    19
      BTI   
      T     DB80.DBB   17
 
Danke!

Wäre das so einfach mit den 3 Buchstaben BTI gegangen?

Ich hab' das etwas kompliziert mit Divisionen, Multiplikationen, Additionen und Subtraktionen gelöst.

Den Zusatz BTI werd' ich auf jeden Fall sofort ausprobieren.
 
Zurück
Oben