IBH-Netlink und libnodave

Sir_Mortimer

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

ich habe ein Problem mit der Verbindung zu einer Simatic C7-623 über IBH-Netlink. Firma IBHsoft, Bezeichnung IBH LINK, ETHERNET MPI-PPI PROFIBUS.


So wie ich es verstanden habe, habe ich alle Parameter richtig eingetragen, aber ich bekomme keine verbindung mir der C7.

Der Code zum Verbinden ist:

ph = 0
di = 0
dc = 0

Rem uncomment the daveSetDebug... line, save your sheet
Rem run excel from dos box with: excel yoursheet >debugout.txt
Rem send me the file debugout.txt if you have trouble.
Rem call daveSetDebug(daveDebugAll)
TCP_Init = -1
ph = openSocket(1099, peer$) ' for IBH NetLink

If (ph > 0) Then
di = daveNewInterface(ph, ph, "IF1", 2, daveProtoMPI_IBH, daveSpeed187k)

'
'You can set longer timeout here, if you have a slow connection
' Call daveSetTimeout(di, 500000)
res = daveInitAdapter(di)
If res = 0 Then
'
' with ISO over TCP, set correct values for rack and slot of the CPU
'
dc = daveNewConnection(di, 2, 0, 2)

res = daveConnectPLC(dc)
e$ = daveStrError(res)
If res = 0 Then
TCP_Init = 0
End If
End If
End If


Die Funktion läuft auch gut bis zur Funktion "res = daveConnectPLC(dc)". An der Stelle bekomme ich den Fehlercode -5 "no messages defined!"

Ich konnte bisher keinen eintrag finden, der mir einen Hinweis auf die Ursache brachte.

Mit der IBH-Software bekomme ich eine Verbindung zur C7, mit den Testprogrammen aus der libnodave-Bibliothek bekomme ich nur die Fehlermeldung, daß keine Verbuindung zum PLC erstellt werden konnte.

Da ich schon mehrmals gelesen habe, daß die Verbindung funktioniert und geprüft ist, liegt der Fehler wohl bei mir - ich find ihn nur nicht!!

Vielen Dank für Eure Mühen, Holger
 
Wenn testIBH.exe nicht funktioniert, brauchst du es aus EXCEL heraus nicht zu probieren.

Gewöhnlich funktioniert testIBH aber! Auf der Kommandozeile eingeben:
testIBH <IP-Adresse>
Falls deine CPU eine andere MPI(Profibus)-Adresse als 2 hat, die Adresse angeben:
testIBH --mpi=<MPI-Adresse> <IP-Adresse>

Falls testIBH nicht funktioniert, den Debug-Modus einschalten:
testIBH -d --mpi=<MPI-Adresse> <IP-Adresse>

Das Ergebnis dann hier nochmal veröffentlichen.
 
Ist der IBH-Link richtig parametriert?
Ist er mit ping an der eingestellten Adresse erreichbar?
Liefert die C7 die Versorgungsspannung am MPI?

@Jochen:
Der IBH-Link entspricht dem Lite
 
Ah, alles klar! Dachte es nur, da die Bauform dem neuen Pro ja sehr ähnlich ist! D.h. dieser läuft unter libnodave immer noch mit dem Lite Protokoll?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
HAllo Zottel, Jochen und Rainer,

vielen Dank für Eure schnelle Antwort!

Was für ein NetLink es genau ist sehen ich nicht, es steht weder Lite noch Pro drauf

Der Netlink ist richtig parametriert, da ich ja mit der mitgelieferten SW von IBH auf die Steuerung zugreifen kann, und zwar als Beispielprg Basic sowohl in der kompilierten Form als auch im Rumtime Modus.

Wenn ich testibh -d --mpi=2 192.168.1.135 eingebe bekomme ich folgende Antwort:

setting MPI address of PLC to:2
openSocketw.c: enter OpenSocket
openSocketw.c: 1
openSocketw.c: 2 4B04
openSocketw.c: peer:192.168.1.135=-2029934400
openSocketw.c: 6
openSocketw.c: 7
openSocketw.c: socket is 1952
openSocketw.c: setsockopt No error 0
openSocketw.c: 8
openSocketw.c: bind Socket error: No error
openSocketw.c: Connected to host: 192.168.1.135
ConnectPLC
trying next ID:
_daveInitStepIBH before write.
writeIBH: :
0:0x07,0xFF,0x06,0x01,0x00,0x00,0x97,0x00,0x14,0xFF,0xF0,0xF0,0xF0,0xF0,
_daveInitStepIBH write returned 14.
readIBHpacket: 10 bytes read, 10 needed
readIBHpacket: packet:
0:0xFF,0x07,0x02,0x01,0x97,0x00,0x00,0x00,0x14,0x00,
*** Got response 10 20
_daveInitStepIBH 4:0
_daveInitStepIBH before write.
writeIBH: :
0:0x07,0xFF,0x11,0x02,0x00,0x00,0x82,0x00,0x14,0x00,0x02,0x01,0x0C,0xE0,0x04,0x00,
10:0x80,0x00,0x02,0x00,0x02,0x01,0x00,0x01,0x00,
_daveInitStepIBH write returned 25.
readIBHpacket: 13 bytes read, 13 needed
readIBHpacket: packet:
0:0xFF,0x07,0x05,0x02,0x82,0x00,0x00,0x00,0x14,0x00,0x02,0x01,0x09,
wrong! 3
readIBHpacket: 16 bytes read, 16 needed
readIBHpacket: packet:
0:0xFF,0x07,0x08,0x00,0x00,0x00,0xC2,0x02,0x14,0x00,0x02,0x0A,0x00,0x22,0x01,0x80,
wrong! 3
timeout in ReadIBHPacket.
timeout in ReadIBHPacket.
timeout in ReadIBHPacket.
_daveInitStepIBH 5:5 connID: 0
Couldn't connect to PLC.


Ich kann leider nicht mit allem etwas anfangen.

Vielen Dank fürs angucken
 
Ich vermute, dass die Rack/Slot-Angabe mit 0/0 nicht korrekt ist. Am besten ein wireshark-Log von der ibh-Software und libnodave machen und hier einstellen. Dann kann ich mehr dazu sagen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Rack/Slot ist doch nur bei TCP/IP Zugriff interessant, oder?

Natürlich nicht. Rack und Slot ist immer dann notwendig, wenn der Adapter nicht direkt mit der Baugruppe reden möchte, auf der er steckt. Dabei spielt es keine Rolle, ob es sich um eine Ethernet- oder Profibus-CP handelt. Im Gegenzug dazu kann Rack/Slot bei PN-CPUs auf 0 gesetzt werden.
 
Natürlich nicht. Rack und Slot ist immer dann notwendig, wenn der Adapter nicht direkt mit der Baugruppe reden möchte, auf der er steckt. Dabei spielt es keine Rolle, ob es sich um eine Ethernet- oder Profibus-CP handelt. Im Gegenzug dazu kann Rack/Slot bei PN-CPUs auf 0 gesetzt werden.

Ja, das es bei Routing noch gebraucht wird ist mir auch klar. Aber doch nicht bei einer normalen MPI Verbindung, oder? Zumindest gibt es in AGLink Rack/Slot auch nur bei TCP/IP Verbindungen und bei Routing zum einstellen!
 
Es geht hier nicht um Routing, da es hier keinen Busübergang gibt.
Versuche doch einfach mal Folgendes: stecke den NetLink auf eine 342-5 und lese dann Daten von der SPS ohne dass beim CR Rack/Slot angegeben wurde.
Was meinst Du was passiert?

Und beim AGLink kann man Rack/Slot direkt beim CR angeben (in der AGL_PLCConnectEx-Funktion).
 
Hab libnoidave mal so geändrt das es Rack/Slot bei IBH Link und Netlink mitschickt (hoffe das die Rack/Slot Infos an der gleichen Stelle stehen wie bei TCP/IP, d.h. nach dem Verbindungstyp). Kann das leider erst testen wenn Ich wieder in der Firma bin. Aber vieleicht kannst du "Sir_Mortimer" das ja mal hiermit probieren, ob deine Verbindung dann klappt, wenn du Rack und Slot angibst! Testprogramm ist enthalten! Sobald Ich wieder in der Firma bin werde Ich schaun ob Ich die Rack/Slot Infos an die richtige Stelle gepackt habe!
 

Anhänge

  • TestLibrary.zip
    316,2 KB · Aufrufe: 29
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Rainer, Hallo Jochen,

vielen Dank für Eure Beiträge, das waren neue Erkenntnisse für mich.

Vielen Dank Jochen für Dein Testprg.

Ich bin erst jetzt dazu gekommen es auszuprobieren. Mußt vorher noch .NET-Frame installieren.

Also, nach anfänglichem mucken läuft Dein Programm mit der Einstellung

Net-Link lite
MPI 2
Rack 0
CPU-Slot 2
Local MPI 0
IP 192.168.1.135
Port 1099

Ich kann mich mit der SPS verbinden und Daten abfragen. Die sind zwar nicht das, was ich erwartet habe, sprich, das was drinstehen sollte, aber immerhin, ich kann was auslesen.

Nachtrag: Ich habe mit dem Testprg von IBH eien wert in das MB8 geschrieben, und konnte ihn mit Deinem testprg einwandfrei lesen!! Das ist schonmal Erfolgversprechend, finde ich.

Was ich nicht verstehe ist, daß es in meinem VB6 Programm nicht geht, obwohl ich da auch Rack und CPU-Slot eintrage (siehe ganz oben).

By the Way, welches ist die aktuelle Veresion von Libnodave? Ich habe 0.8.4.5

Was also mache ich anders als Du, wäre auch schön, wenns unter VB6 laufen würde.

Vielen Dank, bis bald, Holger
 
Zuletzt bearbeitet:
Hallo Rainer, Hallo Jochen,

vielen Dank für Eure Beiträge, das waren neue Erkenntnisse für mich.

Vielen Dank Jochen für Dein Testprg.

Ich bin erst jetzt dazu gekommen es auszuprobieren. Mußt vorher noch .NET-Frame installieren.

Also, nach anfänglichem mucken läuft Dein Programm mit der Einstellung

Net-Link lite
MPI 2
Rack 0
CPU-Slot 2
Local MPI 0
IP 192.168.1.135
Port 1099

Ich kann mich mit der SPS verbinden und Daten abfragen. Die sind zwar nicht das, was ich erwartet habe, sprich, das was drinstehen sollte, aber immerhin, ich kann was auslesen.

Nachtrag: Ich habe mit dem Testprg von IBH eien wert in das MB8 geschrieben, und konnte ihn mit Deinem testprg einwandfrei lesen!! Das ist schonmal Erfolgversprechend, finde ich.

Was ich nicht verstehe ist, daß es in meinem VB6 Programm nicht geht, obwohl ich da auch Rack und CPU-Slot eintrage (siehe ganz oben).

By the Way, welches ist die aktuelle Veresion von Libnodave? Ich habe 0.8.4.5

Was also mache ich anders als Du, wäre auch schön, wenns unter VB6 laufen würde.

Vielen Dank, bis bald, Holger

Bei einer MPI/DP Verbindung werden bei der orginalen libnodave Rack&Slot nicht benutzt (das ist ja das was ich mit Rainer diskutiert habe!). Probier dein VB6 Programm einfach mal mit meiner libnodave.dll!
 
Hallo Jochen,

Deine DLL ist genial: Ich habe sofort verbindung bekommen!!!

Ich habe zwar immer noch Datensalat, aber das werde ich schon hinbekommen.

Andererseitz wundert mich das, denn das selbe prg funktioniert (das Auslesen aus dem DB und "Aussortieren" in Variablen) mit einer Vipa Speed 7 und Ethernet-Anschluß ohzne Probleme. Muß ich auf was bestimmtes achten, wenn ich die Get-Funktionen benutze? oder kann ich sie so 1:1 übernehmen?

Wenn ich den Code posten soll sags mir.


Wie ist eigentlich das Copyright geregelt? Kann ich Deine DLL kommerziell nutzen?

Danke schonmal, Holger
 
Zurück
Oben