Time and Date

paula23

Level-2
Beiträge
235
Reaktionspunkte
15
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi Leute,

ich weis es wurde schon viel geschrieben, aber ich habe nicht das richtige gefunden. Ich brauche die Zeit im TimeandDate Format von Siemens.
Ich bekomme folgende Daten geschickt,

Word 2008 (Jahr)
Byte 10 (Monat)
Byte 13 (Tag)
Byte 11 (Stunde)
Byte 45 (Minute)
Byte 13 (Sekunde)

Ich weiss Siemens hat das Format in BCD, wie kann ich das wandeln, ich habe ja ein WORD und Bytes. Vielleich habt ihr im Forum einen Link?

Danke, Servus.
 
Hallo Paula,

ich habe mal den Datentyp Date-and-Time angehängt.
Am besten ist in den Lokaldaten eine Variable vom Typ Dat-and-Time anlegen und dann auf die Lokaldatenbytes direkt schreiben.

Zur Wandlung gibt es die Befehle ITB (IntegerToBCD) und DTB (Doubleint.ToBCD).
Hilfreich ist hier sicher noch SLW x (SchiebeWort nach Links um x, x=Anzahl Bits), SLD x, SRW x bzw. SRD x. Alle Befehle beziehen sich auf den Wert im Akku1.

Ich packe mal die Operandenliste für eine 300er CPU dazu.:cool:


MfG
FrankW
 

Anhänge

  • Beschreibung Datentyp Date-and-Time.pdf
    5,1 KB · Aufrufe: 246
  • Simatic S7 Operationsliste S7-300.pdf
    738,5 KB · Aufrufe: 126
Und wie trenne ich das Jahr, da bekomme ich 2008 aber das Siemens Format kennt ja nur 08 ?

Wenn ich ein Integer wandle brauche ich doch auch ein 16 Bit Wert und nicht ein Byte wie ich aber habe ???

Das was Ihr geschrieben habt ist mir schon klar, aber irgentwie hab ichs nicht verstanden wie Ihr aus meinen Fragen entnehmen könnt.

Danke.
 
Hallo Paula,

Code:
Und wie trenne ich das Jahr, da bekomme ich 2008 aber das Siemens Format kennt ja nur 08 ?

Die nächsten 92 Jahre sollte das mit dem Abziehen von 2000 funktionieren.

Code:
Wenn ich ein Integer wandle brauche ich doch auch ein 16 Bit Wert und nicht ein Byte wie ich aber habe ???

Du kannst auch ein Byte laden und als INT wandeln. Dann ist der Rest halt "0". (Schau mal in die Operationsliste S.15 - Bits zählen von Rechts nach Links)

MfG
FrankW
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Und wie trenne ich das Jahr, da bekomme ich 2008 aber das Siemens Format kennt ja nur 08 ?.
Code:
L   #jahr_4stellig
L   2000
-I
T  #jahr_2stellig

Wenn ich ein Integer wandle brauche ich doch auch ein 16 Bit Wert und nicht ein Byte wie ich aber habe ???
Nein, das ist egal.
Code:
L    #monat_byte  //Monat als Dezimal
ITB
T    #monat_BCD   //Monat als BCD-Zahl
geht ebenso mit 8 wie auch mit 16 Bit.
.
 
Zurück
Oben