MW20 lesen mit LibNoDave

Earny

Level-1
Beiträge
422
Reaktionspunkte
38
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
es will einfach nicht gelingen, den Wert im MW20 zu lesen. Der Wert im MW20 geht im Bereich 0 bis 5000 in Zehnerschritten rauf und runter.
In der Textbox steht immer nur der Wert "0". Der Timer arbeitet. Es gibt keine Fehlermeldung. Ich teste mit Accontrol.

Code:
[COLOR=#0000ff]Private[/COLOR] [COLOR=#0000ff]Sub[/COLOR] Timer2_Tick([COLOR=#0000ff]ByVal[/COLOR] sender [COLOR=#0000ff]As[/COLOR] System.Object, _
[COLOR=#0000ff]ByVal[/COLOR] e [COLOR=#0000ff]As[/COLOR] System.EventArgs) [COLOR=#0000ff]Handles[/COLOR] Timer2.Tick
[COLOR=#0000ff]Dim[/COLOR] MW(1) [COLOR=#0000ff]As[/COLOR] [COLOR=#0000ff]Byte[/COLOR]
[COLOR=#0000ff]If[/COLOR] fds.rfd > 0 [COLOR=#0000ff]Then[/COLOR]
[COLOR=#008000]'MW20 = 20x8 = 160[/COLOR]
res = dc.readBytes(libnodave.daveFlags, 0, 160, 2, MW)
txtWert.Text = dc.getS16
[COLOR=#0000ff]End[/COLOR] [COLOR=#0000ff]If[/COLOR]
[COLOR=#0000ff]End[/COLOR] [COLOR=#0000ff]Sub[/COLOR]

Gruß
Earny
 
Hallo Rainer,

"res" erhält den Wert "0". Das steht glaube ich für OK.
Der "dc.getS16" liefert die "0" in die Textbox. Das müsste so sein, weil die Textbox in der Voreinstellung leer ist.

Der Debugger meldet in der Ausgabe:
openSocketw.c: bind Socket error: No error
openSocketw.c: Connected to host: 192.168.53.53

Ich habe die Sache jetzt nicht mehr mit Accontrol, sondern mit einer wirklichen CPU getestet. Das MPI/LAN-Kabel hat die IP-Adresse
192.168.53.53

Gibt es außer der "libnodave.dll" noch weitere Dateien, die man nach System32 kopieren muss, wenn man mit VB2005 arbeitet?
Für die Bit-Verarbeitung hat aber die "libnodave.dll" genügt.

Ich habe bisher keine Erfahrung mit dem Lesen von Digitaladressen der S7 mit LibNoDave.

Gruß
Earny
 
Hallo Earny,

dc.gets16 liefert eine Null, weil in MW160 nichts steht.
Die korrekte Anfrage lautet:
res=dc.readBytes(libnodave.daveFlags,0,20,2,MW)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Andreas,
Danke, ich hab das eben auch gerade herausgefunden. Ich habe mich heute mit dem Lesen und Schreiben von Bits beschäftigt. Da wäre die 160 richtig gewesen.

Jetzt habe ich ein neues Problem:
Die Aktualisierung des Wertes über LibNoDave aus dem MW20 in meine VB2005-Visualisierung ist aber relativ langsam. Der Timer ist auf 100 ms eingestellt. Es wird allerdings nur alle 1 bis 1,5 s ein Wert aktualisiert.
Kann man die Kommunikation über LibNoDave schneller hinbekommen?

Gruß
Earny
 
In meinem Testprogramm hat das Auslesen 500ms gedauert und ich hab 4 Anfragen gesendet. Hast Du mal probiert, mittels MPI2-Protokoll und dem in PLC-VCom eingerichteten virtuellen Com-Port die Verbindung aufzubauen?
So hatte ich es gemacht.
 
Hallo Andreas,
ich habe mal PLCVCom aktiviert. Damit wird es auch nicht schneller.
Anschließend habe ich noch mal den Test mit Accontrol gemacht. Das ist genauso langsam. Ich glaube die Wahl des Adapters "MPI/LAN-Kabel" bzw. Siemens-Adapter bzw. Accontrol spielt keine entscheidende Rolle.

Gruß
Earny
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich habs grad noch mal mit ACControl getestet, damit gehts sogar noch schneller. Als Indikator nehme ich einen Timer, den ich auslese. Mein VB-Timer ist auf 100ms eingestellt und der Wert des S7-Timers den ich auslese, wird alle 100-200ms aktualisiert
 
Zurück
Oben