# Libnodave daveReadPLCTime



## IchMensch (29 Juli 2009)

Moin!

Ersteinmal möchte ich dem "Erfinder" von Libnodave meinen Lob für diese tolle Leistung ausprechen! Super DLL!

Aber ich habe natürlich auch eine Frage dazu: *Wo finde ich bzw. wie kann ich nach einem erfolgreichen Aufruf von daveReadPLCTime (Rückgabewert=daveResOK) die Zeit erhalten?*

In VB6 wird diese Funktion ja wie folgt definiert:

Private Declare Function daveReadPLCTime Lib "libnodave.dll" (ByVal dc As Long) As Long

Es ist also kein Verweis auf ein Byte Array oder ähnliches definiert, in dem der Wert geschrieben wird.

Ich hoffe, ihr könnt mir helfen.

Schon mal VIELEN DANK!!


----------



## Thomas_v2.1 (29 Juli 2009)

Du musst die Zeit aus dem Ergebnis selber extrahieren.
Die einzelnen Bytes mittels daveGetU8 auslesen, und ins BCD-Format wandeln. Gesamt ist die Antwort 10 Bytes lang.

Byte 0: ist wohl Reserve
Bytes 1, 2: Jahreszahl
Byte 3: Monat
Byte 4: Tag
Byte 5: Stunde
Byte 6: Minute
Byte 7: Sekunde
Bytes 8, 9: Millisekunden


----------



## IchMensch (31 Juli 2009)

Hallo Thomas_v2.1,

vielen Dank für Deine Antwort. Mittlerweile ist es mir gelungen, ein Datum zu lesen und auch zu schreiben.
Meiner Meinung nach ist die Bedeutung der Bytes jedoch nicht ganz richtig (siehe auch DATE_AND_TIME in der SIEMENS Online Hilfe):

Byte 0: ist wohl Reserve
Byte 1: ist wohl immer &h19
Byte 1, Jahreszahl von 90 ...89, d.h. die Jahre von 1990 bis 2089
Byte 3: Monat
Byte 4: Tag
Byte 5: Stunde
Byte 6: Minute
Byte 7: Sekunde
Byte 8: Hunderter und Zehner der Millisekunden
Byte 9: oberes Nibbel: Einer der Millisekunden
unteres Nibbel: Wochentag 1 ... 7 (1=Sonntag)

Für alle die, die keine Lust haben das auszuprogrammieren, habe ich mal meine Funktion für Visual Basic 6 beigefügt.

Gruß
Stefan


----------



## Thomas_v2.1 (31 Juli 2009)

Ja, das Wochentagsnibble habe ich vergessen.

Ich habe das aus dem Telegramm ausgelesen das der Simatic Manager bei der Funktion "Uhrzeit stellen" an die SPS schickt

Dort steht an Byte 1 auch eine 0x20 im Jahr 2009. Das Wochentagsnibble steht in diesem Telegramm immer auf 0, scheint wohl von der SPS bei der Zeitübernahme ignoriert zu werden (den SFC Set clock interessiert das auch nicht).


----------



## Elisio Cappio (28 Juli 2021)

Good morning
I'm using LibNoDave for my projects, I'm using VB6 and Step7 300.
Very interested in your S7Demo.zip
but I can't figure out how to read/write db fields:

*DATE_AND_TIMEBytes 8
TIME_OF_DAY       Bytes 4
DATE Bytes 2*

I think you have to use: daveReadBytes
but I can't convert the buffer properly. There is an example to understand

Thank you all

Elysian


----------

