Libnodave mit Mono ( C# / .NET)

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.

libnodave

 

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.

libnodave2


Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert