S7 Libnodave und Excel

Zuviel Werbung?
-> Hier kostenlos registrieren
Irgendwie habe ich das gleiche Problem mir der 315-2DP und dem CP343.
Obwohl ich mit allen Einstellungen bei Rack und Slot experimentiert habe, bekomme ich keine Werte von der CPU gelesen.
Wenn ich Rack = 0 und Slot = 0 benutzte und davePLCStop und dave PLCStart benutze, stopt oder startét nur der CP aber nicht die CPU.

Kann da evtl. jemand bitte weiterhelfen?

Danke
 
Irgendwie habe ich das gleiche Problem mir der 315-2DP und dem CP343.
Obwohl ich mit allen Einstellungen bei Rack und Slot experimentiert habe, bekomme ich keine Werte von der CPU gelesen.
Wenn ich Rack = 0 und Slot = 0 benutzte und davePLCStop und dave PLCStart benutze, stopt oder startét nur der CP aber nicht die CPU.

Kann da evtl. jemand bitte weiterhelfen?

Danke
Mit Rack- und Slotnummer 0 wird immer die Baugruppe adressiert, auf der das Kabel steckt. In diesem Fall die CP. Wenn das nicht gewünscht sein sollte, dann einfach die Rack- und Slotnummer der CPU verwenden. Die kann ganz leicht aus der Hardwarekonfig abgelesen werden. Als Faustformel gilt: Racknummer 0 (außer CPU steckt auf ER) und bei 300er Slotnummer 2, bei 400er mit 4A PS Slotnummer 2 und mit 10A PS Slotnummer 3 verwenden. Dann sollte es klappen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ja, das ist schon klar wie das mit Rack und Slot gemeint ist.

Mein Rack als Schema 1. Steckplatz CPU 315-2DP
2. Steckplatz DI32
3. Steckplatz DO32
4. Steckplatz ASi-CP
5. Steckplatz CP343

Gebe ichn nun Rack 0 und Slot 0 an und benutzte davePLCStop oder davePLCStart, startet und stopt nur mein CP obwohl er ja garnicht auf Steckplatz 0 steckt. Wie schon gesagt, ich habe mit vielen Einstellungen von Rack und Slot experimentiert und nichts hat zum Erfolg geführt.

Desweiteren kann ich mit testISO_TCP die festgelegten Merkerbytes aus der CPU lesen, aber mit meinen Einstellungen in VBA scheint das nicht zu funktionieren.

Zum Lesen der Merkerbytes benutze ich daveReadBytes. Muß ich sonst was anderes benutzen.

Danke erstmal.
 
ja, das ist schon klar wie das mit Rack und Slot gemeint ist.
Wohl doch noch nicht ganz. Wie bereits geschrieben: wenn Rack 0 und Slot 0 verwendet wird, wird damit automatisch die Baugruppe adressiert, in der das Kabel steckt. In diesem Falle die CP. Es gibt physikalisch keinen Slot 0 (wohl aber Rack 0, ist ja logisch ;))!

Mein Rack als Schema 1. Steckplatz CPU 315-2DP
2. Steckplatz DI32
3. Steckplatz DO32
4. Steckplatz ASi-CP
5. Steckplatz CP343

Gebe ichn nun Rack 0 und Slot 0 an und benutzte davePLCStop oder davePLCStart, startet und stopt nur mein CP obwohl er ja garnicht auf Steckplatz 0 steckt. Wie schon gesagt, ich habe mit vielen Einstellungen von Rack und Slot experimentiert und nichts hat zum Erfolg geführt.

Desweiteren kann ich mit testISO_TCP die festgelegten Merkerbytes aus der CPU lesen, aber mit meinen Einstellungen in VBA scheint das nicht zu funktionieren.

Zum Lesen der Merkerbytes benutze ich daveReadBytes. Muß ich sonst was anderes benutzen.

Danke erstmal.
Was in der Auflistung fehlt und von Siemens immer implizit angenommen wird ist das PS. Dies steckt in Slot 1 und die CPU dann in Slot 2. Dies ist auch aus der Hardwarekonfig so ersichtlich. OK, vielleicht ist Slot 1 leer aber die CPU steckt bei einer 300er in Slot 2. Deshalb muss zur Kommunikation mit der CPU bei einer 300er Rack 0 / Slot 2 angegeben werden. Die 400er Einstellungen habe ich ja auch bereits beschrieben.
Ich hoffe, dass jetzt wirklich alles was die Adressierung anbelangt klar ist.
 
Hallo,

ja, das ist schon klar wie das mit Rack und Slot gemeint ist.

Mein Rack als Schema 1. Steckplatz CPU 315-2DP
2. Steckplatz DI32
3. Steckplatz DO32
4. Steckplatz ASi-CP
5. Steckplatz CP343

Gebe ichn nun Rack 0 und Slot 0 an und benutzte davePLCStop oder davePLCStart, startet und stopt nur mein CP obwohl er ja garnicht auf Steckplatz 0 steckt.
Ja, aber 0,0 ist wohl immer das Ding, was die Verbindung unterhält, selbst.
Wie schon gesagt, ich habe mit vielen Einstellungen von Rack und Slot experimentiert und nichts hat zum Erfolg geführt.
Es sollte halt Rack 0, Slot 2 sein bein deinem Aufbau.
Desweiteren kann ich mit testISO_TCP die festgelegten Merkerbytes aus der CPU lesen...
testISO_TCP nimmt standardmäßig 0 und 2...
...aber mit meinen Einstellungen in VBA scheint das nicht zu funktionieren.
Komisch...
Zum Lesen der Merkerbytes benutze ich daveReadBytes. Muß ich sonst was anderes benutzen.
Mmmhh.. wenn du meine Makros nutzt, erfolgt vor dem readBytes irgendwo immer auch ein Aufruf von daveInitAdapter und daveConnectPLC. initAdapter macht bei ISOTCP nix, aber connectPLC brauchst du.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Nur wenn ich Rack 0 und Slot 0 benutze bekomme ich res = 0 ansonsten bei allen anderen Einstellungen -1.

Habe ich aber res = 0 mit Rack 0 und Slot 0 und lese nun mit daveReadByte die Merkerbytes aus der CPU bekomme ich als res2 irgendwas mit 33000 als RetVal.
 
Ich würde da folgendes vorschlagen: Rack 0 und Slot 2 einstellen und den Versuch mit Etherreal aufzeichnen. Dann sieht man genau, was fehlschlug. Danach auch den geglückten Versuch von Zottels Beispielprogramm aufzeichnen. Dann sind die Unterschiede leicht zu erkennen.
@Zottel: Oder wie siehts Du das?

OffTopic: Kommst Du dieses Jahr wieder auf die Messe?
 
Ich würde da folgendes vorschlagen: Rack 0 und Slot 2 einstellen und den Versuch mit Etherreal aufzeichnen. Dann sieht man genau, was fehlschlug. Danach auch den geglückten Versuch von Zottels Beispielprogramm aufzeichnen. Dann sind die Unterschiede leicht zu erkennen.
@Zottel: Oder wie siehts Du das?
Ich kann mir nur vorstellen, daß er connectPLC nicht macht oder das die Parameterübergabe von VB an die DLL nicht in Ordnung ist :-(
Beides sieht man auch ohne Ethereal in der debug-Ausgabe von Libnodave und das ohne TCP/IP drumherum.

Entweder, die Anwendung schickt die Anforderung zu connectPLC oder nicht.

Und wenn sie sich mit slot=0 nicht von der mit slot=2 unterscheidet, ist's die Parameterübergabe.

Wie aber paßt er dann den VB-Code an?

Gut wäre es, wenn er einen C-Compiler hätte und bedienen könnte. Dann könnte er in nodave.c
//#define DEBUG_CALLS
"unkommentieren", in daveNewConnection() die Zeilen:
#ifdef DEBUG_CALLS
LOG5("daveNewConnection(di:%p MPI:%d rack:%d slot:%d)\n",
di, MPI, rack, slot);
FLUSH;
#endif
ergänzen, einmal neu übersetzen und dann sagt ihm daveNewConnection(), was es für Parameter aus VB bekommt.

Wenn allerdings die Parameterübergabe nicht ok ist, dürfte es noch keiner geschafft haben. Und seit 8 Monaten meckert keiner?

OffTopic: Kommst Du dieses Jahr wieder auf die Messe?
Nein.
 
Zurück
Oben