Uhrzeit und Datum auslesen

smartie

Level-1
Beiträge
298
Reaktionspunkte
22
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi zusammen,

ich muss an einen Drucker das aktuelle Datum und die Uhrzeit im Format hh:mm in ASCII übergeben. Habe auch eine Uhr in S7-300 und kann die einzelnen Werte wie Datum und Uhr auslesen.
Mein Problem ist nur das ich bei der Uhr auch ss:msms bekomme die ich nicht brauchen kann.

Hier im Forum und bei Siemens hab ich schon mal einen Lösungsansatz gefunden :


//*** AR1 sichern
TAR1 #AR1_TEMP
SET
SAVE

//*** CPU-Zeit lesen und AR1 auf TEMP_DT
CALL "READ_CLK"
RET_VAL:=#TEMP_INT
CDT :=#TEMP_DT

LAR1 P##TEMP_DT

L LB [AR1,P#0.0] //BYTE 0 := JAHR
L LB [AR1,P#1.0] //BYTE 1 := MONAT
L LB [AR1,P#2.0] //BYTE 2 := TAG
L LB [AR1,P#3.0] //BYTE 3 := STUNDEN
L LB [AR1,P#4.0] //BYTE 4 := MINUTEN
L LB [AR1,P#5.0] //BYTE 5 := SEKUNDEN
L LB [AR1,P#7.0] //BYTE 7 = WOCHENTAG
L 2#1111 // hier die ms ausmaskieren
UW

//*** AR1-Register wiederherstellen
LAR1 #AR1_TEMP
BE

Aber leider ist mir nicht so ganz klar welches Format die Variable TEMP_DT
hat.
Ich würde anstatt der Variable jetzt z.B. DB1.DBD1 hinschreiben und da dann erwarten das ich Datum und Uhrzeit erhalte das ich in BCD auswerten kann und weiter nach ASCII wandeln kann.

Versteht jemand was ich meine? Und hat vielleicht auch jemand eine Lösung für mein Problem?

Danke schon mal im vorraus.

Gruß
smartie​
 
date_and_time (temp_dt)kannst du nur als temp_variable verwenden, da die 8 byte lang ist.

du musst das aber nicht über adressregister machen. unnötig.
z.b.
deine temp_dt ist die erste var (LB0-LB7)
CALL "READ_CLK"
RET_VAL:=#TEMP_INT
CDT :=#TEMP_DT

L LB3 //hh
bti
T MB 10
L LB4 //mm
bti
T MB11

die mb's kannst du nun in ascii wandeln.
 
Zurück
Oben