Nach langen Versuchen habe ich nun endlich Libnodave, zusammen mit Mono unter Linux zum laufen bekommen. (Ich gehe davon aus das Programmieren von C# und Libnodave sind soweit geläufig)
Beispielscode für das C# Programm
Das Programm ruft vom DB42.DBD508 den Wert kodiert als Float und gibt diesen zurück in die Konsole als String. Das Programm zeigt die absoluten Basics beim Programmieren!
// Allgemeine Variablen static libnodave.daveOSserialType fds; static libnodave.daveInterface di; static libnodave.daveConnection dc; static int rack = 0; static int slot = 2; /// <summary> /// Der Haupteinstiegspunkt für die Anwendung. /// </summary> static void Main(string[] args) { Program s7 = new Program(); fds.rfd = libnodave.openSocket(102, "192.168.10.164"); fds.wfd = fds.rfd; if (fds.rfd > 0) { di = new libnodave.daveInterface(fds, "IF1", 0, libnodave.daveProtoISOTCP, libnodave.daveSpeed187k); di.setTimeout(1000000); dc = new libnodave.daveConnection(di, 0, rack, slot); if (0 == dc.connectPLC()) { int res; byte[] buf = new byte[2]; res = dc.readBytes(libnodave.daveDB, 42, 508, 4, buf); if (res == 0) { Console.WriteLine(dc.getFloat().ToString()); } } else { return; } } else { return; } dc.disconnectPLC(); libnodave.closeSocket(fds.rfd); Console.ReadKey(); }
Libnodave in Linux mit Mono
Als nächstes benötigen wir Mono zum ausführen unseres .NET Programms unter Linux. Ich habe Debian als Distribution installiert. Hier genügt ein einfaches:
apt-get install mono-complete
um die notwendigen Pakete zu installieren.
Im Arbeitspfad von Linux
sollten nun die erstelle Exe des Programms sein, sowie die libnodave.dll, libnodave.net.dll, libnodave.so. Diese Dateien finden sich im Archiv das direkt auf der Projektseite von Libnodave bezogen werden kann.
Da Mono direkt nichts mit fremden DLL-Files anfangen kann, ist es zwigend Notwendig, dass .so File in das Verzeichnis zu kopieren! Genaueres kann auch hier nachgelesen werden.
Ausführen des Programms
als letztes navigieren wir unsere Shell-Konsole in Linux in den Pfad in den sich die Daten befinden. Nun genügt ein einfaches:
mono SPS_RFC1006_Test.exe
und schon liefert mir die Konsole den aktuellen Wert der SPS in mein Shell. Dieses kann ich jetzt beliebig weiterverarbeiten.
Schreibe einen Kommentar