LibNodave 0.8.4 - daveConnectPLC liefert Rückgabewert 4

Zuviel Werbung?
-> Hier kostenlos registrieren
Verwendest du NoDaveDemo und libnodave.dll aus der gleichen Version? Wenn du das Demo aus der 0.8.4 mit der dll aus 0.8.2 verwendest, muß es nicht gehen. Die hier gepostete korrigierte dll 0.8.4.4 sollte mit dem Demo aus 0.8.4 funktionieren.
Falls es auch mit zusammenpassender Demo und DLL nicht funktioniert:
Liefert die Demo in ihrer Statusleiste eine Fehlermeldung ?
Evtl. wäre ein Screenshot hilfreich.

Gruß Axel
 
Benutze die 0.8.4.4'er dll und die 0.8.4'er Version von NoDaveDemo. Die TestMPI läuft eigentlich sehr gut - Benchmarks laufen auch ab, ich kann die Anzahl der DB's usw. aus der SPS anzeigen lassen. Allerdings ist der DB nicht groß genug um ihn direkt anzeigen zu lassen.
In NoDaveDemo werden wie gesagt keine passenden Werte angezeigt und es kommt die Fehlermeldung Error = -10.
 

Anhänge

  • NoDaveDemo.JPG
    NoDaveDemo.JPG
    101,5 KB · Aufrufe: 33
Zuviel Werbung?
-> Hier kostenlos registrieren
In NoDaveDemo werden wie gesagt keine passenden Werte angezeigt und es kommt die Fehlermeldung Error = -10.
Welches Protokoll verwendest Du in der Demo ?

In der Version 0.8.4 von libnodave finde ich den Returncode -10 ausschließlich bei der _daveGetResponseMPI3 (daveProtoMPI3).
Falls Du das verwendest, dann probier's doch mal mit daveProtoMPI / daveProtoMPI2.


Gruß Axel
 
Hallo afk,
es ist sehr kurios. Testmpi aus 0.8.2 und dll aus 0.8.2 funktioniert in Standardeinstellung. Adapter startet und stoppt korrekt. NoDaveDemo mit dll 0.8.2 funktioniert gar nicht. NoDaveDemo mit dll 0.8.4.4 funktioniert nur hin und wieder (wenn ich die Protokolle wechsel, programm stoppe, neu starte). Dann kommen auch korrekte Werte. Ist nur nicht reproduzierbar. Anscheinend stoppt das Programm den Adapter nicht korrekt. Zum Stoppen muß ich immer TestMPI aus 0.8.2 neu laufen lassen.

Die Kombination dll 0.8.4.4 und TestMPI 0.8.4 läuft überhaupt nicht.
 
Hallo afk,
es ist sehr kurios. Testmpi aus 0.8.2 und dll aus 0.8.2 funktioniert in Standardeinstellung. Adapter startet und stoppt korrekt. NoDaveDemo mit dll 0.8.2 funktioniert gar nicht. NoDaveDemo mit dll 0.8.4.4 funktioniert nur hin und wieder (wenn ich die Protokolle wechsel, programm stoppe, neu starte). Dann kommen auch korrekte Werte. Ist nur nicht reproduzierbar. Anscheinend stoppt das Programm den Adapter nicht korrekt. Zum Stoppen muß ich immer TestMPI aus 0.8.2 neu laufen lassen.

Die Kombination dll 0.8.4.4 und TestMPI 0.8.4 läuft überhaupt nicht.
TestMPI benötigt die dll garnicht, weil der Code statisch gelinkt ist. Dadurch ist natürlich der fehlerhafte Code der Version 0.8.4 drin.
Ich habe gestern eine Version 0.8.4.4 veröffentlich. Lade sie dir am besten komplett herunter.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

Kann es sein das mit den neue dll auch die anruf von S7ONLINE geandert ist?

In meinen visual basic 2005 code hatte ich die code immer so angerufen:

myPH = openS7online(acspnt)

wobei "acspnt" ein string ist.
Mit den neue dll, bekomme ich aber eine vb fehler, der darauf deutet das die anruf geandert ist, vielleicht ist die parameter kein string mehr oder ist da vielleicht eine parameter dazu gekommen?

hat jemand eine idee?

p.s. Die schreib fehler kommen ja davon das ich ein niederlander bin.
 
Hallo,

Kann es sein das mit den neue dll auch die anruf von S7ONLINE geandert ist?

In meinen visual basic 2005 code hatte ich die code immer so angerufen:

myPH = openS7online(acspnt)

wobei "acspnt" ein string ist.
Mit den neue dll, bekomme ich aber eine vb fehler, der darauf deutet das die anruf geandert ist, vielleicht ist die parameter kein string mehr oder ist da vielleicht eine parameter dazu gekommen?

hat jemand eine idee?

p.s. Die schreib fehler kommen ja davon das ich ein niederlander bin.
Ja, es ist ein Parameter dazugekommen (allerdings schon in 0.8.4), das Window-Handle des laufenden Programms. Leider kann ich dir nicht sofort sagen, wie du an diese Handle kommst.
 
Ja, es ist ein Parameter dazugekommen (allerdings schon in 0.8.4), das Window-Handle des laufenden Programms. Leider kann ich dir nicht sofort sagen, wie du an diese Handle kommst.

Dann warte ich mal ab. mit window-handle meinen sie ob das form maximized, minimized ist?

Danke fur die schnelle antwort!!!

gruss Ruud
 
Zuviel Werbung?
-> Hier kostenlos registrieren
.. mit window-handle meinen sie ob das form maximized, minimized ist?
Nein. Ein window-handle wir von windows erzeugt, wenn ein neues Fenster geöffnet wird. Es dient dazu, ein Fenster zu identifizieren. Kannst du C lesen? Dann schau dir mal testS7online.c an:
Die Funktion GetConsoleHwnd() liefert das handle des (bereits offenen) Konsolenfensters, in dem das Programm gerade läuft. Dieses wird dann an openS7online als zweiter Parameter übergeben.
Verstehst du das so oder soll ich das lieber auf Englisch schreiben?
 
Window-Handle

Hallo,

Ruud schrieb:
mit window-handle meinen sie ob das form maximized, minimized ist?

Nein ich glaube nicht, das Zottel damit den Status (maximized, minimized) meint. Vielmehr hat (nicht nur) jedes Fenster in Windows ein Handle.
Damit kann z.B. auf ein Fenster in einem anderen Prozess zugegriffen werden.
Oder wie in diesem Falle eher wahrscheinlich, ein Callback an das aufrufende Programm, oder was auch immer ...

Gruß

Question_mark
 
Hallo,

Die declaration musste dan so sein.

Private Declare Function openS7online Lib "libnodave.dll" (ByVal peer As String, ByVal iHandle As Integer) As Integer
und dan die anruf:
iTest = Form1.Handle
myPH = openS7online(acspnt, iTest)

Gehe das jetzt mal probieren, danke fur die gute responce.

gruss Ruud
 
Wird LibNoDave eigentlich regelmäßig aktualisiert? Ich hab ewig die Version 0.8.4...:confused:
Aktualisiert wird es schon, aber eher unregelmäßig, da das Projekt im Grunde genommen allein auf Zottels Schultern lastet.

Mir sind aber so gut wie keine Probleme mit der Version 0.8.4 bekannt, und wenn doch mal irgendwelche Bugs auftauchen, gibt Zottel normalerweise auch recht schnell eine neue Version raus, in der der Fehler behoben ist (siehe Version 0.8.4.4).

Wenn Dir allerdings die Weiterentwicklung zu langsam geht, dann kannst Du Dich natürlich auch selbst damit befassen, libnodave ist ja schließlich Open-Source.


Gruß Axel
 
Hallo,

Die declaration musste dan so sein.

Private Declare Function openS7online Lib "libnodave.dll" (ByVal peer As String, ByVal iHandle As Integer) As Integer
und dan die anruf:
iTest = Form1.Handle
myPH = openS7online(acspnt, iTest)

Gehe das jetzt mal probieren, danke fur die gute responce.

gruss Ruud
Hallo Ruud, 2 Fragen:
1. funktioniert es so?
2. Handle und der Rückgabewert der Funktion sind 32 bit breit. Ist Integer in VB 32 bit? Ist das neu? Ab welcher Version?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Ruud, 2 Fragen:
1. funktioniert es so?
2. Handle und der Rückgabewert der Funktion sind 32 bit breit. Ist Integer in VB 32 bit? Ist das neu? Ab welcher Version?

1- Die anruf funktioniert jezt, aber wenn ich jezt z.b. eine INT abfrage kriege ich als antwort -128, ich muss erst aussuchen was das ist. Alle ander verbindustypen funktionieren einwandfrei.

2. Ich glaub das mit den umstieg von VB6 (da is INT noch 16 bit) auf vb2003 die INT geandert ist in 32. Und auch die long ist geandert. Ich habe eine PDF dazu.
 

Anhänge

  • Konica8031-CP0210883.pdf
    298,1 KB · Aufrufe: 23
@Ruud

Nimmst du TCP/IP? Da gibt es irgendein Problem, ich bin auch gerade am Suchen.
S7-Online funktioniert bei mir mit CP5511, aber nicht mit TCP/IP (CP343).
Warum kann ich leider auch nicht sagen, Ich werde morgen mal probieren,
ob es noch mit meinem NetLinkPro läuft. Eigentlich sollte das ja egal sein, da die
Schnittstelle ja mit den S7-Tools eingestellt wird.

PS: Ist aber im Prinzip auch nicht notwendig, da man ja nicht S7-Online nutzen muß,
wenn man direkt TCP/IP fahren kann ;).
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Geht TCP/IP überhaupt mit S7Online ?
Wo wird dann die IP-Adresse der SPS übergeben bzw. eingestellt ?


Gruß Axel

Na ich dachte immer mit dem Siemens-Programm (PG-Schnittstelle einstellen), liege ich da falsch? Aber wie gesagt, ist ja eigentlich auch nicht sinnvoll/notwemdig, da man direkt mit Libnodave auf den CP kommt.
 
Na ich dachte immer mit dem Siemens-Programm (PG-Schnittstelle einstellen), liege ich da falsch?
Keine Ahnung, ich hab bisher noch keine Stelle gefunden (weder in den Einstellungen der PG/PC-Schnittstelle, noch in libnodave), wo ich bei S7Online eine IP-Adresse eingeben oder als Parameter übergeben kann. Darum bin ich davon ausgegangen, daß TCP/IP per S7Online mit libnodave (noch ?) nicht geht.

Aber wie gesagt, ist ja eigentlich auch nicht sinnvoll/notwemdig, da man direkt mit Libnodave auf den CP kommt.
Ganz Deiner Meinung, darum hab ich mir darüber auch keine weiteren Gedanken gemacht ...


Gruß Axel
 
Hallo,

Ich glaube das S7ONLINE das IP adres aus den step7 project holt. Da steht es ja in die "properties" von die CP karte.

Bei meinem test habe ich die S7ONLINE mit den "ISO on TCP" eingestelt. Das vorteil davon ist das es nur eine MAC adresse benotigt.

Selber habe ich ein CP5512, die teste ich morgen mal, ob der vielleicht funktioniert.

gruss Ruud
 
Zurück
Oben