Step 7 Datum extrahieren aus FC6 DT to DATE

sony

Level-1
Beiträge
2
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo liebes Forum,

leider stehe ich ein wenig oder ganz auf dem Schlauch und komme leider nicht mehr weiter.
Ich möchte aus der CPU mit der SFC1 "Read_Clock" das Datum und die Uhrzeit auslesen. Den ausgelesenen Wert lege ich in der Schnittstelle "TEMP" als DT-Typ ab.
Nun möchte ich mit der FC6 aus der DT das Datum extrahieren. Leider hänge ich an dessen Ausgang RET_VAL.
Wie kann ich den TYP DATE in Jahr/Monat/Tag aufteilen und z.B. nur TAG und MONAT als BCD ausgeben auf der AW2??

Entweder sehe ich vor lauter Bäumen den Wald nicht mehr, oder keine Ahnung. Ich hoffe hier kann mir geholfen werden :)
 
Sobald Du mit SFC1 die Uhr in die TEMP-Variable gelesen hast, hast Du alles was Du brauchst. Weiteres Zerlegen des DATE_AND_TIME ist nicht nötig, da es eh keine fertige Funktion für die Zerlegung in die Einzelteile gibt, weil DATE_AND_TIME eigentlich eine Struktur ist, auf deren Einzelteile man direkt zugreifen kann - sehr schön machbar in SCL und AT-Sicht.

Man kann sich einfach über den Aufbau des Datentyps DATE_AND_TIME informieren:
Das DATE_AND_TIME in Deiner Variablendeklaration in TEMP markieren und F1 drücken, oder den SFC1 markieren und F1 drücken, oder ...
Da wirst Du sehen, daß Du einfach nur das zweite und dritte Byte aus der DATE_AND_TIME-Variable lesen brauchst.
z.B. so in AWL
Code:
LAR1 P##tempVar_wo_SFC1_hingeschrieben_hat
L B [AR1, P#2.0]
T AB2
L B [AR1, P#1.0]
T AB3

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Harald,
danke für die schnelle Antwort.
Ok. Also ist im Grunde, für mein Anliegen, der FC6 DT_to_Date hier überflüssig.
Besteht generell die Möglichkeit aus dem DATE Typ das Format in Tag.Monat.Jahr zu stückeln und diese dann BCD codiert z.B. auf das AW2 zu transferieren?

Danke
 
Jein.
;)

Prinzipiell kann man alles, was man von Hand umrechnen kann, natürlich auch automatisiert umrechnen.
Da Du mit mehr oder weniger Aufwand aus einer fortlaufenden Tageszahl und einem Anfangsdatum (= Date) das aktuelle Datum ausrechnen kannst, bekommt das auch 'ne SPS hin.
Die Schwierigkeit in Deiner Anfrage ist allerdings, 6 Ziffern (TT MM JJ) BCD-codiert in nur 4 Halbbytes (= WORD) unterzubringen.
;)

Wie Harald Dir erklärt hat, enthält das DT-Format alle gewünschten Angaben byteweise im BCD-Format.
Demzufolge ist es das Einfachste, ein Date zusammen mit einer willkürlichen Uhrzeit mittels FC3 Date_and_TOD_to_DT ins DT-Format zurück zu wandeln und dann wie von Harald oben angegeben auf die einzelnen Bytes des Datums zuzugreifen.

Aber wie immer gibt es auch dafür viele Wege die nach Rom führen.
 
Zurück
Oben