Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 18

Thema: liblvdave (libnodave und LabVIEW)

  1. #1
    ctb1 Gast

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Bin gerade dabei LabVIEW mit libnodave zu verbinden

    Status:
    1. libnodave mit VS.NET übersetzt.
    2. liblvdave mit VS.NET erstellt (auf libnodave aufgesetzt).
    3. LVdaveXXX VI,s erzeugt.
    4. Auslesen von Bytes über MPI funktioniert bereits.

    Wer hat Erfahrung mit libnodave unter Windows?

    libnodave http://libnodave.sourceforge.net
    liblvdave url für download folgt.
    LVdaveXXX url für download folgt.
    Zitieren Zitieren Gelöst: liblvdave (libnodave und LabVIEW)  

  2. "Hallo zusammen!

    Ich arbeite auch mit VS.Net allerdings auf C#. Wollte mir zunächst mit hilfe von libnodave ein kleines Testproggi schreiben. Bin dabei aber schnell an meine Grenzen gestoßen (Dll-Import) .
    Mein Hauptproblem ist das ich net genau weis, wie alle Methoden heissen bzw. deren genaue "Aufrufstrukturen" sind. Habe zwar ein paar Einfache entschluesselt, allerdings wenns komplexer wird is Schluß.

    Wär nett wenn ihr mir helfen könntet

    Thx vorab

    Bewareofthis

    ---> Beware@2die4.com"


  3. #2
    Registriert seit
    19.06.2003
    Beiträge
    2.200
    Danke
    85
    Erhielt 259 Danke für 175 Beiträge

    Standard

    Interessant. Benutzt du die existierende Windows-.DLL? Bz.W sag mir eben, was VS ist? Visual Studio? Kompiliert also die C-Quellen?
    Mir würde es darum gehen, daß es möglichst nur eine C-Quelle gibt. Auf diese Weise würden alle Anwendungen von Erweiterunge/Verbesserungen am Hauptzqweig automatich profitieren. Falls du Änderungen am C-Code machen mußtest, würde ich die gerne per condiional defines in den Code einpflegen.

  4. #3
    Anonymous Gast

    Standard

    Erstmal danke für deine Antwort

    Als C Kompiler verwende ich Microsoft Visual C++ .NET 7.0
    Für die Anbindung an LabVIEW die Datei 'labview.h' und labview.c' in das Projekt eingefügt.
    Das Hauptproplem bei LabVIEW ist die übergabe von Parameter beim Aufruf von DLL Funktionen (Hab auch zu wenig Erfahrung damit).

    Mir währe es auch recht, daß es möglichst nur eine C-Quelle gibt, deshalb würd ich dich bitten den LabVIEW Code in deinen Code einzupflegen.

    Aktuelle Version: http://www.c-n-t.at/ctb/download/libnodave.rar

  5. #4
    Registriert seit
    19.06.2003
    Beiträge
    2.200
    Danke
    85
    Erhielt 259 Danke für 175 Beiträge

    Standard

    Danke für den Code!

    Zu den Änderungen:
    nodave.c enthält keine. Das ist sehr gut
    log.h: Wenn es darum geht, die
    #define __filename
    einheitlich zu gestalten, kein Problem.
    nodave.h:
    Das
    #define BCCWIN
    #define DOEXPORT
    gehört nicht in die Header Datei. Es ist ja gerade dafür da, daß dieselbe header-Datei unter verschiedenen Bedingungen verschieden behandelt wird.
    Wenn du es unbedingt zum Bestandteil von Code machen möchtest, statt es als conditional defines irgendwo im Projekt file, Makefile oder im Copiler Options Dialog zu setzen, ist die richtige Art:

    datei meincode.c:
    #define BCCWIN
    #define DOEXPORT
    #include "nodave.h"

    Die Kommentare hinter den #endifs gehen natürlich in Ordnung.
    Die Einrückungen der #include-Anweisungen (mittels tabs?) machen den Code zwar lesbarer, aber ich bin nicht sicher, ob jeder C-Compiler das frißt...

    Aber ich glaube, auch VS kann mit der etwas weniger lesbaren Version leben.

    Das Schwierigste: Ich habe weder VS noch LabView zur Verfügung. Mir ist nicht klar, was man Dritten zur Verfügung stellen muß danit sie:
    1. das vorkompilierte LabView-Modul nutzen können.
    2. Im Sinne von open source dieses selbst erstellen können. Die speziellen LabView-header dürfte ich wahrscheinlich nicht in die Distribution aufnehmen, da NI die Rechte hat.
    Andererseits reicht einem LabView-Anwender ja der hinweis, wo er sie hinzupacken hat.

    Noch eine Frage, weil ich Labview nicht kenne. Habe immer nur die Bilder gesehen, bei denen mit grafischen Symbolen Datenfluß-orientiert "programmiert" wird: Wie kann in LabView eine unterbrochene Verbindung wiederaufgebaut werden?
    Z.B. nach Ziehen des MPI.-Adapters?

    Damit die Diskussion hier im Forum nicht den Rahmen sprengt und wir leichter Dateien austauschen können, wäre es vielleicht gut, wenn du meine normale Mailadresse (auf der libnodave-Seite angegeben) benutzt.

  6. #5
    Registriert seit
    20.10.2003
    Ort
    Biberach
    Beiträge
    5.083
    Danke
    963
    Erhielt 1.471 Danke für 929 Beiträge

    Standard

    Mahlzeit,

    es gibt natürlich auch die Möglichkeit, eine Bibliothek
    einzusetzen, in die LabVIEW fix und fertig integriert ist:

    AGLink
    MHJ

    Gut, ist weder kostenfrei noch open source, aber vielleicht
    trotzdem interessant, da fertig.

    Viele Grüße

    Gerhard Bäurle
    Beste Grüße Gerhard Bäurle
    _________________________________________________________________

    Die Signatur ist den allgemeinen Sparmaßnahmen zum Opfer gefallen.

  7. #6
    Anonymous Gast

    Standard

    Hallo zusammen!

    Ich arbeite auch mit VS.Net allerdings auf C#. Wollte mir zunächst mit hilfe von libnodave ein kleines Testproggi schreiben. Bin dabei aber schnell an meine Grenzen gestoßen (Dll-Import) .
    Mein Hauptproblem ist das ich net genau weis, wie alle Methoden heissen bzw. deren genaue "Aufrufstrukturen" sind. Habe zwar ein paar Einfache entschluesselt, allerdings wenns komplexer wird is Schluß.

    Wär nett wenn ihr mir helfen könntet

    Thx vorab

    Bewareofthis

    ---> Beware@2die4.com

  8. #7
    Registriert seit
    19.06.2003
    Beiträge
    2.200
    Danke
    85
    Erhielt 259 Danke für 175 Beiträge

    Standard

    Wie die Funktionen (Methoden? sind doch für Objekte.) heißen:

    Das Testprogramm testMPI.c benutzt die wichtigsten. Schmeiß einfach aus main alles raus, was mit optionen eingeschaltet wird. Dann bleibt ein ziemlich kleines Programm übrig. Die wichtigsten sind:

    di=daveNewInterface(...)
    daveInitAdapter(di)
    dc=daveNewConnection(di,...)

    connectPLC(dc)
    daveReadBytes(dc, ...);

    Das reicht eigentlich für.den 1. Test

    Ansonsten müßtest du etwas gezielter fragen.

  9. #8
    Registriert seit
    19.06.2003
    Beiträge
    2.200
    Danke
    85
    Erhielt 259 Danke für 175 Beiträge

    Standard

    Hier der Minimaltest für MPI:
    Angehängte Dateien Angehängte Dateien

  10. #9
    Anonymous Gast

    Standard

    Hallo und Thx,
    also ich arbeite ja mit c#.net , also muß ich per Dll-Import auf Libnodave zugreifen. Das Hauptprob dabei ist, die Definitionen der einzelnen Typen bzw. Konstanten. Da Libnodave OpenSource is, ist es auf jeden Fall machbar. Hab mich in die Header-Files eingelesen und hab wie gesagt Einige einfache Funktionen "entschluesselt", so daß ich in meinem c# Proggi auf die Libnodave-Dll zugreifen kann. Schwierig wirds, wenn die Definitionen komplexer werden
    Bsp. aus der Libnodave-Docu:

    daveInterface * di;
    di =daveNewInterface(fds, "IF1", localMPI, daveProtoXXX, daveSpeedYYY);

    Die Struktur daveInterface is so dekl.:

    struct _daveInterface {
    _daveOSserialType fd; /* some handle for the serial interface */
    int users; /* a counter used when multiple PLCs are accessed via */
    /* the same serial interface and adapter. */
    int localMPI; /* the adapter's MPI address */
    char * name; /* just a name that can be used in programs dealing with multiple */
    /* daveInterfaces */
    int timeout; /* Timeout in microseconds used in transort. */
    int protocol; /* The kind of transport protocol used on this interface. */
    int speed; /* The MPI or Profibus speed */
    int ackPos; /* position of some packet number that has to be repeated in ackknowledges */
    int nextConnection;
    _initAdapterFunc initAdapter; /* pointers to the protocol */
    _connectPLCFunc connectPLC; /* specific implementations */
    _disconnectPLCFunc disconnectPLC; /* of these functions */
    _disconnectAdapterFunc disconnectAdapter;
    _exchangeFunc exchange;
    _sendMessageFunc sendMessage;
    _getResponseFunc getResponse;
    _listReachablePartnersFunc listReachablePartners;
    };

    Hier sind also mehrere Strukturen usw. definiert.

    Um Libnodave nutzen zu können muß ich doch die Struktur "_daveInterface"
    bei mir im Programm nochmals definieren, oder gibt´s ne andere Möglichkeit?

    MfG

    Bewareofthis

  11. #10
    Anonymous Gast

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo und Thx,
    also ich arbeite ja mit c#.net , also muß ich per Dll-Import auf Libnodave zugreifen. Das Hauptprob dabei ist, die Definitionen der einzelnen Typen bzw. Konstanten. Da Libnodave OpenSource is, ist es auf jeden Fall machbar. Hab mich in die Header-Files eingelesen und hab wie gesagt Einige einfache Funktionen "entschluesselt", so daß ich in meinem c# Proggi auf die Libnodave-Dll zugreifen kann. Schwierig wirds, wenn die Definitionen komplexer werden
    Bsp. aus der Libnodave-Docu:

    daveInterface * di;
    di =daveNewInterface(fds, "IF1", localMPI, daveProtoXXX, daveSpeedYYY);

    Die Struktur daveInterface is so dekl.:

    struct _daveInterface {
    _daveOSserialType fd; /* some handle for the serial interface */
    int users; /* a counter used when multiple PLCs are accessed via */
    /* the same serial interface and adapter. */
    int localMPI; /* the adapter's MPI address */
    char * name; /* just a name that can be used in programs dealing with multiple */
    /* daveInterfaces */
    int timeout; /* Timeout in microseconds used in transort. */
    int protocol; /* The kind of transport protocol used on this interface. */
    int speed; /* The MPI or Profibus speed */
    int ackPos; /* position of some packet number that has to be repeated in ackknowledges */
    int nextConnection;
    _initAdapterFunc initAdapter; /* pointers to the protocol */
    _connectPLCFunc connectPLC; /* specific implementations */
    _disconnectPLCFunc disconnectPLC; /* of these functions */
    _disconnectAdapterFunc disconnectAdapter;
    _exchangeFunc exchange;
    _sendMessageFunc sendMessage;
    _getResponseFunc getResponse;
    _listReachablePartnersFunc listReachablePartners;
    };

    Hier sind also mehrere Strukturen usw. definiert.

    Um Libnodave nutzen zu können muß ich doch die Struktur "_daveInterface"
    bei mir im Programm nochmals definieren, oder gibt´s ne andere Möglichkeit?

    MfG

    Bewareofthis

Ähnliche Themen

  1. Labview-Libnodave-CP5611-SPS
    Von Günni1977 im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 07.05.2010, 17:12
  2. libnodave und labview?
    Von Tomas im Forum Hochsprachen - OPC
    Antworten: 0
    Letzter Beitrag: 18.06.2009, 13:53
  3. LabView mit RS-232
    Von da_kine im Forum Sonstige Steuerungen
    Antworten: 8
    Letzter Beitrag: 20.03.2007, 16:47
  4. Labview mit SPS
    Von hakan im Forum Simatic
    Antworten: 10
    Letzter Beitrag: 20.07.2006, 11:04
  5. Labview und S7
    Von Anonymous im Forum Hochsprachen - OPC
    Antworten: 4
    Letzter Beitrag: 09.12.2005, 21:58

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •