# Ist LibNoDave so langsam?



## Earny (25 November 2008)

Hallo,
ich will von einer S7-300-CPU kontinuierlich den Wert im MW20 einlesen. Dazu habe ich in VB2005 die Timer2-Prozedur angelegt, die alle 100 ms aufgerufen wird. 
Dabei stelle ich fest, dass die Wertänderung im MW20 in VB2005 nicht schnell genug erfasst wird. Die S7-CPU verändert alle 100 ms den Wert im MW20. In VB2005 macht sich aber nur alle 2 bis 3 s eine Wertänderung bemerkbar. Es spielt dabei keine Rolle, ob ich für die Übertragung einen alten PC-Adapter von Siemens (6ES7 972-0CA22-0XA0) mit der Einstellung 38,4 kBit/s oder ein schnelles MPI-LAN-Kabel der Prozessinformatik mit 187,5 kBit/s einsetze. Auch beim Einsatz von Accontrol als fiktive CPU bleibt das Resultat gleich:
Nur alle 2 bis 3 s macht sich in VB2005 in der Textbox "txtWert" eine Wertänderung bemerkbar. Die Messung mit dem GetTickCount hat ergeben, dass die ReadBytes-Methode beim Siemens-PC-Adapter ca. 78 ms, beim MPI-Lan-Kabel ca. 15-30 ms und bei Accontrol ca. 0 ms benötigt. Bei diesen Messungen war das Timer2-Intervall auf 5 s eingestellt. Der Wert selbst wird richtig dargestellt.
Ich habe die "libnodave.dll" ins System32 kopiert und die "libnodave.net.dll" in den VB-Projektordner in ...\bin\debug
Für die "libnodave.net.dll" habe ich einen Verweis angelegt.

Hier der Programmcode des Timers2:



> Private Sub Timer2_Tick(ByVal sender As System.Object, _
> ByVal e As System.EventArgs) Handles Timer2.Tick
> Dim MW(1) As Byte, Wert As Short, Zeit As Long
> If fds.rfd > 0 Then
> ...


 
Gruß
Earny


----------



## Andreas138 (26 November 2008)

*LibnoDave ist schnell genug!!*

Hallo Earny,

das auszulesende Word ist 2 Byte lang. Das sollte im Aufruf auch so angegeben werden. 
res = dc.readBytes(libnodave.daveFlags, 0, 20, 2, MW)

Gruß
Andreas


----------



## marcengbarth (26 November 2008)

Eigentlich sind bei 2 Byte 100ms gar kein Problem.


----------



## Andreas138 (26 November 2008)

Es ist ja auch kein Problem. Bei mir dauert das Auslesen im Schnitt 15ms (ich teste mit ACControl). Allerdings erfasst die Prozedur von Earny die Zahlenwertänderung in MW20 nur in 256er Schritten, da das MB21 nicht ausgelesen wird. Deshalb wird in VB nur alle 2-3sec ein veränderter Wert angezeigt (S7-Wert wird alle 100ms um 10 verändert)


----------



## marcengbarth (26 November 2008)

Ich sollte ja auch richtig lesen. Sorry!


----------



## Earny (26 November 2008)

Hallo Andreas,
kaum macht man es richtig - schon funktionierts!
Das mit der 1 habe ich glatt übersehen. 

Gruß
Earny


----------

