libnodave S7Online mir .Net

eloboy

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

ich Versuche mit vb.net Schnittstelle "S7Online" auf eine WinLC zuzugreifen.
Bei

Code:
[SIZE=2]fds.rfd = libnodave.openS7online([/SIZE][SIZE=2][COLOR=#a31515]"S7ONLINE"[/COLOR][/SIZE][SIZE=2])[/SIZE]
[SIZE=2][SIZE=2]fds.wfd = fds.rfd[/SIZE]
[/SIZE][SIZE=2][SIZE=2][SIZE=2]di = [/SIZE][SIZE=2][COLOR=#0000ff]New[/COLOR][/SIZE][SIZE=2] libnodave.daveInterface(fds, [/SIZE][SIZE=2][COLOR=#a31515]"IF1"[/COLOR][/SIZE][SIZE=2], localMPI, useProto, speed)[/SIZE]
[SIZE=2][SIZE=2]di.setTimeout(20000)[/SIZE]
[SIZE=2]res = di.initAdapter[/SIZE]
[/SIZE][/SIZE][/SIZE][SIZE=2]res = dc.readBytes(libnodave.daveDB, 130, 0, 32, buf)[/SIZE]
bekommen ich immer -128 zurück

das "testS7online.exe" funktioniert ohne Probleme
das C# Beispiel bekomme ich auch irgendwie nicht zum Laufen.:(


hat jemand einen fertiges Beispiel vor vb.express 2005?
oder eine Lösung?

danke im Vorraus

Ps.: Gibt es auch noch eine ander Doku aus was bei "libnodave-0.8.4" beigelegt wurde?
 
Hallo,

ich Versuche mit vb.net Schnittstelle "S7Online" auf eine WinLC zuzugreifen.
Bei

Code:
[SIZE=2]fds.rfd = libnodave.openS7online([/SIZE][SIZE=2][COLOR=#a31515]"S7ONLINE"[/COLOR][/SIZE][SIZE=2])[/SIZE]
[SIZE=2][SIZE=2]fds.wfd = fds.rfd[/SIZE]
[/SIZE][SIZE=2][SIZE=2][SIZE=2]di = [/SIZE][SIZE=2][COLOR=#0000ff]New[/COLOR][/SIZE][SIZE=2] libnodave.daveInterface(fds, [/SIZE][SIZE=2][COLOR=#a31515]"IF1"[/COLOR][/SIZE][SIZE=2], localMPI, useProto, speed)[/SIZE]
[SIZE=2][SIZE=2]di.setTimeout(20000)[/SIZE]
[SIZE=2]res = di.initAdapter[/SIZE]
[/SIZE][/SIZE][/SIZE][SIZE=2]res = dc.readBytes(libnodave.daveDB, 130, 0, 32, buf)[/SIZE]
bekommen ich immer -128 zurück

das "testS7online.exe" funktioniert ohne Probleme
das C# Beispiel bekomme ich auch irgendwie nicht zum Laufen.:(

Ich wusste zwar mal was die Fehlercodes bedeuten, ich finde es nur nicht mehr auf die schnelle:rolleyes:

Ich arbeite zwar nicht mit der S7online, aber schau dir mal die testS7online.c datei an. Speziell so ab Zeile 450.


in Zeile 476 lese ich folgendes:
Code:
[SIZE=2]dc =daveNewConnection(di,plcMPI,0,0);[/SIZE]

Wenn ich mich nicht irre musst du die "daveConnection" ja erst initialisieren um über sie Daten zu lesen zu können.

PS: Das übersetzten von C nach VB.net dürfte eigentlich keine probleme machen, musst halt nur etwas anders schreiben :) :)
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
-128 daveResUnexpectedFunc

Sie dir auch mal den Quelltext zum Beispiel für S7Online an. Ist zwar C, aber zumindest die Funktionsnamen sind ja gleich bzw. ähnlich. Ich denke auch, MW hat Recht, da fehlt etwas.
 
Falls Du es nicht schon selbst rausgefunden haben solltest: Du hast den Aufruf von daveNewConnection und daveConnectPLC vergessen.
Ich komme zwar aus der C# Ecke, aber in VB sollte das ungefähr so aussehen:

Code:
dc = daveNewConnection(di, remoteMPI, remoteRack, remoteSlot)
res = daveConnectPLC(dc)

Das ganze muss nach di.initAdapter und vor dem Verwenden von dc zum lesen / schreiben passieren.

Gruß
Squonk
 
Gibt es schon eine Lösung?

Ich habe gerade das selbe Problem mit s7online über einen
Deltalogic USB Adapter auf die Steuerung zuzugreifen

Mein programm ist nicht in .net sonder Python, aber die Sprachen sind
ziemlich identisch

Code:
    libnodave = ctypes.windll.LoadLibrary('../dll/libnodave.dll')
    fds = daveOSserialType()

    fds.rdf = libnodave.openS7online("/S7online", 0)
    fds.wdf = fds.rdf
    if(fds.rfd >= 0):

        di = libnodave.daveNewInterface(fds, "IF1", 0 ,_daveProtoS7online ,_daveSpeed187k)
        libnodave.daveSetTimeout(di, 5000000)
        res = libnodave.daveInitAdapter(di)
        print "InitAdapter: " + str(res)

        dc = libnodave.daveNewConnection(di,2,0,2);
        res = libnodave.daveConnectPLC(dc)
        print "ConnectPLC: " + str(res)

        buf = ctypes.create_string_buffer(100)
        res = libnodave.daveReadBytes(dc,_daveDB,2,0,0,buf)
        print "ReadBytes: " + str(res)


Bei mir kommt bei Read auch immer -126 was im Klartext heisst:
"Unexpected function code in answer"
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Bei mir kommt bei Read auch immer -126 was im Klartext heisst:
"Unexpected function code in answer"
Bei mir steht "this result contains no data"!

S7online ist LEIDER reichlich experimentell! Wenn es eben geht, bevorzugt besser jedes andere Protokoll!

Die Fehlercodes sind LEIDER etwas durcheinander. Die Texte stimmen eigentlich nur für Fehler in der laufenden Kommunikation.

daveSetTimeout(di, 5000000) hat bei S7online keine Wirkung, wenn ich mich recht erinnere.

Bei openS7online("/S7online" frage ich mich, was der führende "/" soll!
 
Der "/" war ein Fehler, daran lags aber nicht.

Mit einem PG mit integrierter Schnittstelle funktioniert das ganze,
nur über den Datalogic Netlink Usb scheinbar nicht.

Nicht so schlimm, der CP343-1 Lean kommt ja bald :ROFLMAO:
 
Hallo zusammen,
habe inzwischen ein Beispiel in Visual Basic und mit VB.Net Express 2008 geschrieben. Verwendet wird libnodave 0.8.4.4.
Es hat bei mir die Verbindung über den S7 MPI-Programmieradapter und die Verbindung über Ethernet funktioniert.

Für alle, die ein Beispielprogramm :TOOL: suchen, ihr findet die beiden Beispielprojekte auf meiner Homepage unter http://nueckes.redirectme.net

Gruß
Nuecke

:!::!: PS: Ich übernehme natürlich KEINERLEI Gewährleistung für die Anwendung dieser Programme und eventuell daraus entstehende Schäden !!!!!!!!!!!

:sw14: oder :sw12: oder :sm1:
 
Hey Leute,

ich bin auch sehr an diesen beiden Beispielprogrammen interessiert.

Könnte mir jemand der die Dateien noch hat vllt alles per eMail schicken?

meine Email ist: kinglazee@web.de
Vielen Dank im voraus!

Gruß kinglazee
 
Zurück
Oben