Fehler-Codes der Libnodave-Funktionen

Thomas450

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

möchte über die Libnodave-Bibliothek mit eine SPS komunizieren. Dabei tauchen verschieden Probleme auf.

Erhalte z.B. bei
"res = dc.writeBytes(libnodave.daveDB, db, pos_db, l, t_buf);"
in res den Wert -3 wenn ich über einen PC-Adapter Daten in einen DB schreiben möchte.
db = 170
pos_db = 0
l = 220

Das Schreiben von z.B. 50 Bytes funktioniert.

Kann mit jemand sagen, wo ich eine Beschreibung der Fehler-Codes welche die Funktionen zurückgeben finden kann.



Gruß Thomas
 
Header Files

So wie ich mich erinnere stehen Codes in einem der Header Files, waren aber anscheinend nicht komplett.

Im speziellen Fall vermute ich, dass das Telegramm zu lang ist, zumindest weiss ich, dass man einen Block von 256 Bytes teilen muss.
 
Mit MaxPDULen-28 funktioniert das Schreiben. Danke für die Info.

Ein paar Infos über die Funktionsweise bei Fehlern wären schon hilfreich. Ich bekomme z.B. die Kommunikation über openS7online("/S7ONLINE") auch nicht ans Laufen.
res = di.initAdapter liefert -44


Gruß Thomas
 
Zuviel Werbung?
-> Hier kostenlos registrieren
bei mir kam der -44 Fehler, weil ich nach openS7online bei daveNewInterface das falsche Protokoll verwendet habe.

So ists richtig:
Code:
ph = openS7online("s7online", 0)  ' to use Siemes libraries for transport 
di = daveNewInterface(ph, ph, "IF1", 0, [U]daveProtoS7online[/U], 0)
Das Handle kann "0" (Dez Null) sein. Außer man sucht sich das Handle von Excel raus...

Bitte auch bei S7ONLINE beachten, dass die cleanUP Funktion auch angepasst werden muss, damit die DLL wieder korrekt geschlossen wird.
Das "port handle" darf nicht hoch zählen.


Also so:
Code:
If ph <> 0 Then
    'res = closePort(ph)
    'res = closeSocket(ph)
    res = closeS7online(ph)
    ph = 0
End If

*ACK*

Viel Spass beim Testen!

P.S.: Ob S7ONLINE oder /S7ONLINE eingeben wird ist egal!
 
Zurück
Oben