2 Stimmen

Libnodave Kommunikation mit S7-1200

Seit ein paar Tagen versuche ich, die libnodave als Kommunikationsbibliothek zu verwenden, um mit einem S7-1200-PLC von Siemens (CPU 1214C) zu kommunizieren. Mit der libnodave-Bibliothek werden einige Dinge bereitgestellt. Die Delphi-Anwendung funktioniert, die Windows-Exe funktioniert.

Auf dem Vmware läuft Linux und die vorkompilierte Binärdatei von testISO_TCP funktioniert. Sieht so aus, als ob ich es verwenden kann, oder?

daveInterface * di;
daveConnection * dc;
_daveOSserialType fds;
ds.rfd=openSocket(102, "192.168.0.1");
fds.wfd=fds.rfd;
if (fds.rfd>0) {
    di =daveNewInterface(fds,"IF1",0, daveProtoISOTCP, daveSpeed187k);
    daveSetTimeout(di,5000000);
    dc =daveNewConnection(di,0,0,1);  // fügen Sie hier Ihr Rack und Slot ein
    if (0==daveConnectPLC(dc)) 
    {
       printf("Verbunden..\n");
    }
}

Aber wenn ich den Quellcode 1:1 in meine IDE (Eclipse) kopiere, erhalte ich folgende Fehlermeldung:

IF1-Fehler in daveConnectPLC() Schritt 1. Wiederholen...IF1-Fehler in daveConnectPLC() Schritt 1. Wiederholen...IF1-Fehler in daveConnectPLC() Schritt 1. Wiederholen...Konnte keine Verbindung zum PLC herstellen. Stellen Sie sicher, dass Sie die Option -2 mit einem CP243 verwenden, aber nicht mit CPs 343 oder 443.

Es scheint, dass ein Fehler beim Verbinden mit dem PLC auftritt. Die folgende Funktion erzeugt diesen Fehler:

DaveConnectPLC(dc)

Beachten Sie, dass Rack und Slot unverändert sind, wenn Sie es mit der ausgeführten Binärdatei in Linux vergleichen!

Kann mir jemand helfen, es auf der Eclipse-IDE zum Laufen zu bringen? Es ist ziemlich seltsam, dass alle ausführbaren/ausführbaren Dateien funktionieren, aber wenn ich es direkt aus der IDE ausführen möchte, funktioniert es nicht.

Vielen Dank im Voraus.

1voto

Zunächst einmal ist das Ausführen auf virtuellen Maschinen nicht das gleiche wie das Ausführen auf einem echten Computer. Dass es unter Windows läuft, garantiert nicht, dass es unter Linux läuft, obwohl die Quelle die gleiche ist und/oder die gleichen Bibliotheken verwendet werden. Im Grunde ist das vorcompilierte Programm unter Linux der einzige Beweis dafür, dass es laufen wird und kann.

Immer wenn ich Probleme in diesem Bereich habe, schaue ich mir die verwendete Compiler-Version und die Compiler-Einstellungen an. Das Ausführen von Code mit Debug-Option ist berüchtigt dafür, Code mit Hardware-Kommunikation zu beschädigen.

Wenn du Wireshark noch nicht benutzt, würde ich es sehr empfehlen. Es ist ein perfektes Werkzeug, um zu sehen, was passiert.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X