# Libnodave-0.8.4.5



## Zottel (12 Juli 2009)

Ich habe soeben eine neue Version von Libnodave veröffentlicht. Große Neuigkeiten gibt es nicht. 
Ich habe ich einige Dinge ergänzt:
- Funktion closeSocket() schließt ein mit openSocket() geöffnetes socket.
- bei ISO over TCP wird zunächst mit select() festgestellt, ob eine Antwort emfangen wurde, bevor mit recv() empfangen wird. Dadurch sollten Funktionsaufrufe nach timeout zurückkehren, anstatt endlos auf eine Antwort zu warten.
- Bei Linux wurde setport verändert, um mit neueren Kerneln zusammenzuarbeiten.


----------



## Thomas_v2.1 (12 Juli 2009)

Hallo,
mir ist da letztens was aufgefallen:

In der Funktion daveSetPLCTimeToSystime in der nodave.c ist die Zeile:
//    ts[1]=daveToBCD(systime.tm_year/100+19);
auskommentiert.
Da obenbrüber bei ts[1] konstant 0x19 steht, wird die Jahreszahl wohl immer auf 19xx gesetzt.

Wenn ich das Uhrzeit-Stellen vom PG aus mache, wird an dieser Position zumindest eine 20 geschrieben.


----------



## dalbi (12 Juli 2009)

Hallo,

in der Excel&VB Datei Modul12.bas ist auch ein kleiner Fehler

Private Declare Function openS7online Lib "libnodave.dll" (ByVal peer As String) As Long

da fehlt noch ein Parameter.

Gruss Daniel


----------



## Zottel (12 Juli 2009)

Thomas_v2.1 schrieb:


> Da obenbrüber bei ts[1] konstant 0x19 steht, wird die Jahreszahl wohl immer auf 19xx gesetzt.


Das danach von Step7 (V5.4) angezeigte Datum ist dennoch korrekt (2009).


> Wenn ich das Uhrzeit-Stellen vom PG aus mache, wird an dieser Position zumindest eine 20 geschrieben.


Mag sein. Mir scheint allerdings, daß Step7 nur die Zehner und Einer interpretiert und Daten in einem gewissen Zeitraum dem 19xx und andere dem 20xx zuordnet. 
Muß nochmal probieren, wie es aussieht, wenn man Datum/Uhrzeit innerhalb eines SPS-Programms liest und verarbeitet.
Übrigens akzeptiert Step7 keine größere Jahreszahl als 2038. Ist das das definitive Ende für S7 ??.


----------



## Zottel (12 Juli 2009)

Zottel schrieb:


> Muß nochmal probieren, wie es aussieht, wenn man Datum/Uhrzeit innerhalb eines SPS-Programms liest und verarbeitet.


Das Struct DATE_AND_TIME hat nur ein Byte für das Jahr. Aus der Hilfe:
0    Year    1990 to 2089
Ferner lese ich auch dann eine 0x19 zurück, wenn ich vorher das Datum mittels PG auf 2009 gestellt habe.


----------



## Thomas_v2.1 (12 Juli 2009)

Zottel schrieb:


> Das Struct DATE_AND_TIME hat nur ein Byte für das Jahr. Aus der Hilfe:
> 0    Year    1990 to 2089
> Ferner lese ich auch dann eine 0x19 zurück, wenn ich vorher das Datum mittels PG auf 2009 gestellt habe.



Könnte dann höchstens noch relevant für Einträge im Diagnosepuffer sein.
Bei Gelegenheit probiere ich nochmal aus wie die CPU dort den Zeitstempel anzeigt.


----------

