Date_Time verändern ?

Voxe

Level-1
Beiträge
286
Reaktionspunkte
36
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

als S7-Neuling versuche ich gerade eine grosse Zeitschaltuhr zu bauen. Dank der Beiträge hier, habe ich es geschafft (mit SFC1), die Systemzeit in einem DB abzulegen. Habe, die Bytes auch schön in Integer gewandelt damit ich damit arbeiten kann.

Nun habe ich festgestellt, oder, meine es, das meine CPU, an einem Tag um eine Sekunde ungenau ist. OK, kein Problem. Ich werde also, wenn ein Tageswechsel ist, mittels einer Flanke, die Sekunden nachstellen. Das mache ich also mit dem SFC0.

Aber, ich bin zu blöde eine DATE_TIME - Variable mit den gewünschten Daten zu erzeugen. Ich weiss zwar, welches Byte ich beschreiben muss. Aber wie beschreibe ich eine Temp-Variable des Typs DATE_TIME eines FC's ?

Danke für die Hilfe und Gruß, Voxe
 
Du bildest dir einen Pointer auf die Lokaldaten-Deklaration deiner Variablen und beschreibst dann mit dem Begleit-Offset die entsprechende Stelle :
Code:
L P##my_DateTime
LAR1

L #myStunde
T B[AR1,P#3.0]

usw.
 
Hallo Lupo,

hoffe es zu verstehen. Aber wie übergebe ich es an die DATE_TIME Variable für den SFC0 ?

Gruß, Voxe
 
Ich habe es so verstanden, dass du im Temp-Bereich deines FC's eine Variable, ich nenne sie mal my_DateTime, vom Typ Date_and_Time deklariert hast.
In diese variable läßt du dir mittels des SFC1 die DT ausgeben, die modifizierst du dann, wenn du es nicht so machen willst wie von M-Ott beschrieben, und die schreibst du dann mit dem SFC0 wieder zurück.
Schön wäre es, wenn du das nur auf ein Ereignis hin machen würdest und dann auch nur einmal bei demselben (Flanke bilden).
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Larry,

das ist mein Plan.

meine Variable heisst: nDate_Time. Aber wie kann ich sie beschreiben.
Michaels-Idee ist gut, aber ich weiss den Offset noch nicht wirklich. Mir fehlt einfach die Stelle, wie ich meine Variable beschreiben kann.

Gruß und Danke, Voxe

PS: ich will sie einmal am Tag beschreiben, also Flankenwechsel des Tag-Bytes
 
Du legst sie einfach symbolisch an den passenden Eintrag des SFC-Aufrufs.
Also so :
Code:
call SFC0
PDT := #n_Date_Time
Ret_Val := MW200
 
Hallo zusammen,

habe Lupo's Lösung die natürlich funktioniert, nicht auf Anhieb verstanden bzw. umgesetzt. Ist halt S7. :D

Code:
U M 0.7       // meine Flanke
SPBN end
L P##Date_Time
LAR1
L 2
T B [AR1,P#3.0]    // das Stunden-Byte wird auf 2 gestellt

CALL SFC 0         // und übertragen
PDT     :=#Date_Time
RET_VAL :=#Dummy
NOP 0
end: R M 0.0

Also nochmals Danke und Gruß, Voxe
 
Zuletzt bearbeitet:
Zurück
Oben