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

Ergebnis 1 bis 10 von 10

Thema: libnodave und MPI

  1. #1
    Registriert seit
    26.03.2010
    Beiträge
    94
    Danke
    3
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen,

    ich hatte die direkte MPI Kommunikation etwas auf Eis gelegt, aber es gibt noch immer noch das selbe Problem bei meiner MPI Kommunikationversuchen unter libnodave (0.8.4.5) und Visual Basic 2008 Express.

    Mein Ziel ist es einen Datenlogger zu programmieren, welcher konfigurierbare Datenbereiche (E,A,M,DB...) einer S7 317 PN/DP in ebenfalls konfigurierbaren Formaten (bin, dez,hex...) in eine simple Datei schreibt. Dies möchte ich absichtlich mit einem autarken Programm erstellen, da ich ohne Excel oder ähnliches auskommen möchte.

    So weit so gut, über ISO TCP funktioniert das ganze schon ganz passabel, jedoch scheitere ich bei dem Versuch über den SSW7 USB nach MPI Adapter von Helmholz Daten zu lesen.

    Mit dem Protokoll "libnodave.daveProtoMPI" scheint die SPS Verbindung erfolgreich initiert zu werden (der Rückgabewert von "di.initAdapter" und "dc.connectPLC" ist "0", also eigentlich alles ok, auch leuchten beim Adapter alle Kommunikations LEDs). Beim Leseversuch per "dc.readBytes" oder auch das Multiread "dc.execReadRequest" jedoch schmiert mir das Programm mit Speicherverletzungsfehler (Rückgabewert von "dc.execReadRequest": -5) ab, auch lässt sich die "erfolgreich" geöffnete Verbindung nicht mehr schliessen.


    Mit den Protokollen "libnodave.daveProtoMPI2" oder "libnodave.daveProtoMPI3", "libnodave.daveProtoMPI4" und "libnodave.daveProtoMPI_IBH" bekomme ich leider gar keine Verbindung aufgebaut.

    Bei "libnodave.daveProtoMPI2" ist der Rückgabewert von "di.initAdapter" "0" und "dc.connectPLC" ist Fehlercode "3", ich weiss jedoch leider nicht wo die Fehlercodes dokumentiert sind. Wenn mir vielleicht jemand mitteilen könnte wo die Rückgabewerte inkl Fehlercodes der libnodave Funktionen und auch deren Parameteroptionen aufgelistet sind würde mir dies evtl auch schon helfen den Fehler eingrenzen zu können.
    Bei "libnodave.daveProtoMPI3" ist der Rückgabewert von "di.initAdapter" bereits -1, ich weiss jedoch wie gesagt leider nicht was dieser Code aussagt, da bei mir dei Funktion libnodave.daveStrerror(res) nur kryptische Zeichenketten zurück gibt.

    Ich habe bei allen Versuchen, sowohl 19,2 als auch 187,5kBaud probiert, auch habe ich die Tests einmal auf einem Rechner ohne und einmal mit installiertem SIMATIC Manager durchgeführt.

    Eine Frage habe ich da mal ausserdem. Wieso wird auch in diversen MPI Beispielen bei libnodave.setPort() eine niedrigere Baudrate als bei libnodave.daveInterface() angegeben. Da das Interface ja über den Port kommuniziert müsste doch eigentlich nach meinem Verständnis der Port eine höhere Rate haben als das Interface.

    Für libnodave.daveInterface() gint es ja ausserdem nur eine eingeschränkte Auswahl an Baudraten wie z.B.
    libnodave.daveSpeed9k '9600Baud
    libnodave.daveSpeed19k '19200Baud
    libnodave.daveSpeed45k '45000Baud?
    libnodave.daveSpeed93k '93000Baud?
    libnodave.daveSpeed187k '187500Baud
    libnodave.daveSpeed500k '500000Baud
    libnodave.daveSpeed1500k '1500000Baud

    Bei den Beispielen wird libnodave.setPort() hingegen oftmals mit 38400Baud parametriert, welche es bei libnodave gar nicht zur AUswahl gibt. Was sind die Hintergründe und wie spielen diese Parametrierungen zusammen?

    Ich bin für jede neue Erkenntnis offen und dankbar.


    Gruss,

    bool
    Zitieren Zitieren libnodave und MPI  

  2. #2
    Registriert seit
    27.10.2005
    Ort
    Schwäbisch Gmünd
    Beiträge
    5.224
    Danke
    630
    Erhielt 955 Danke für 769 Beiträge

    Standard

    Das eine sind die Geschwindigkeiten auf der MPI/PROFIBUS-Seite, das andere ist die Geschwindigkeit auf der seriellen Seite des PC-Adapters. Diese haben nichts miteinander zu tun.
    Rainer Hönle
    DELTA LOGIC GmbH

    Ein Computer kann das menschliche Gehirn nicht ersetzen. Engstirnigkeit kann unmöglich simuliert werden. (Gerd W. Heyse)

  3. #3
    Registriert seit
    17.06.2004
    Ort
    Offenau
    Beiträge
    3.745
    Danke
    209
    Erhielt 421 Danke für 338 Beiträge

    Standard

    Die Baudrate bei Setport ist für die Serielle Schnittstelle, und die andere für die dews MPI Bus!
    ---------------------------------------------
    Jochen Kühner
    https://github.com/jogibear9988/DotN...ToolBoxLibrary - Bibliothek zur Kommunikation mit PLCs und zum öffnen von Step 5/7 Projekten
    Zitieren Zitieren Neee...  

  4. #4
    bool ist offline Benutzer
    Themenstarter
    Registriert seit
    26.03.2010
    Beiträge
    94
    Danke
    3
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Zitat Zitat von Jochen Kühner Beitrag anzeigen
    Die Baudrate bei Setport ist für die Serielle Schnittstelle, und die andere für die dews MPI Bus!
    ... das klingt einerseits plausibel. Was mich jedoch etwas verwirrtist, dass ja eigentlich der MPI Adapter zunächst am seriellen COM Port hängt und dieser per libnodave.setPort() in den ganzen Beispielprogrammen mit 19200 oder 38400Baud parametriert ist. Wie kann es dann sein dass ich per libnodave.daveInterface() eine Baudrate von 187500 fahren kann welche ja eigentlich weit über der Parametrierung meines Phsikalischen Ports liegt?
    Wie muss ich mir das vorstellen?
    Funktioniert libnodave.daveInterface() eigenlich auch mit anderen Baudraten als 187500? Ich frage da in den meisten Beispielen diese Rate hardcodiert ist.

    Danke bereits im voraus.

    Gruss,

    bool

  5. #5
    Registriert seit
    27.10.2005
    Ort
    Schwäbisch Gmünd
    Beiträge
    5.224
    Danke
    630
    Erhielt 955 Danke für 769 Beiträge

    Standard

    Wie bereits geschrieben handelt es sich bei dieser um Baudrate um die MPI/PROFIBUS-Baudrate. Und der PC-Adapter kann auf der Busseite eben diese Geschwindigkeiten (bis zu 1,5 MBit/s). Die Beispiele funktionieren, das MPI meistens auf 187500 Baud eingestellt ist.
    Rainer Hönle
    DELTA LOGIC GmbH

    Ein Computer kann das menschliche Gehirn nicht ersetzen. Engstirnigkeit kann unmöglich simuliert werden. (Gerd W. Heyse)

  6. #6
    Registriert seit
    17.06.2004
    Ort
    Offenau
    Beiträge
    3.745
    Danke
    209
    Erhielt 421 Danke für 338 Beiträge

    Standard

    Der Serille Port muss ja auch nicht so schnell wie der Bus sein...
    ---------------------------------------------
    Jochen Kühner
    https://github.com/jogibear9988/DotN...ToolBoxLibrary - Bibliothek zur Kommunikation mit PLCs und zum öffnen von Step 5/7 Projekten
    Zitieren Zitieren Hmm...  

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

    Standard

    Zitat Zitat von bool Beitrag anzeigen
    ... das klingt einerseits plausibel. Was mich jedoch etwas verwirrtist, dass ja eigentlich der MPI Adapter zunächst am seriellen COM Port hängt und dieser per libnodave.setPort() in den ganzen Beispielprogrammen mit 19200 oder 38400Baud parametriert ist. Wie kann es dann sein dass ich per libnodave.daveInterface() eine Baudrate von 187500 fahren kann welche ja eigentlich weit über der Parametrierung meines Phsikalischen Ports liegt?
    Wie muss ich mir das vorstellen?
    So ein MPI-Adapter ist nicht nur ein Pegelwandler. Es steckt ein eigener kleiner Rechner darin, der 2 serielle Schnittstellen hat, eine zum PC und die andere zum MPI-Bus.

  8. #8
    bool ist offline Benutzer
    Themenstarter
    Registriert seit
    26.03.2010
    Beiträge
    94
    Danke
    3
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Zitat Zitat von Zottel Beitrag anzeigen
    So ein MPI-Adapter ist nicht nur ein Pegelwandler. Es steckt ein eigener kleiner Rechner darin, der 2 serielle Schnittstellen hat, eine zum PC und die andere zum MPI-Bus.
    Hallo Zottel,
    Danke fürs Feedback.

    Wenn die Geschwindigkeiten des Adapters in beide Richtungen auf Bus-/Protokollebene unterschiedlich sein können bedeutet dies dann aber trotzdem, dass die Nutzdaten von der SPS über den Adapter in den PC zur Applikation maximal mit der kleineren Baudrate (minus dem Zeitverlust durch Protokollumsetzung im Adapter) transportiert werden können. Kann man das so sagen?

    Gruss,

    bool

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

    Standard

    Zitat Zitat von bool Beitrag anzeigen
    Hallo Zottel,
    Danke fürs Feedback.

    Wenn die Geschwindigkeiten des Adapters in beide Richtungen auf Bus-/Protokollebene unterschiedlich sein können bedeutet dies dann aber trotzdem, dass die Nutzdaten von der SPS über den Adapter in den PC zur Applikation maximal mit der kleineren Baudrate (minus dem Zeitverlust durch Protokollumsetzung im Adapter) transportiert werden können....?
    Ja. Und deshalb ist die Geschwindigkeit mit ISO over TCP oder Netlinks bedeutend höher.
    Aber: Profibus und MPI sind für mehr als 2 Teilnehmer gedacht, die sich die Bandbreite teilen. Und für eine S7 ist die Beantwortung von Kommunikationsanfragen eine eher nachrangige Aufgabe.

  10. Folgender Benutzer sagt Danke zu Zottel für den nützlichen Beitrag:

    bool (11.05.2010)

  11. #10
    bool ist offline Benutzer
    Themenstarter
    Registriert seit
    26.03.2010
    Beiträge
    94
    Danke
    3
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Zottel Beitrag anzeigen
    Ja. Und deshalb ist die Geschwindigkeit mit ISO over TCP oder Netlinks bedeutend höher.
    Aber: Profibus und MPI sind für mehr als 2 Teilnehmer gedacht, die sich die Bandbreite teilen. Und für eine S7 ist die Beantwortung von Kommunikationsanfragen eine eher nachrangige Aufgabe.
    ok, glaube ich habs verstanden.

    Jetzt bräuchte ich "nur noch" eine Lösung zu dem Problem, dass ich über meinen USB<>MPI Adapter keine Daten lesen kann und nach ?Verbindungsaufbau? (Alle "res" beim Verb.Aufbau =0) bei den Lesefunktionen immer den Fehlercode "-5" erhalte. Hierzu hatte ich bereits einen Thread zum explizit definierten Adapter (Helmholz SSW7-USB) eröffnet (siehe: http://sps-forum.de/showthread.php?t=35034 )

    Gruss und Danke,

    bool

Ähnliche Themen

  1. Antworten: 0
    Letzter Beitrag: 09.09.2010, 00:27
  2. ÄÖnderungen am libnodave.net.cs File von libnodave
    Von Jochen Kühner im Forum Hochsprachen - OPC
    Antworten: 5
    Letzter Beitrag: 12.05.2010, 16:56
  3. LibNoDave unter VB.Net ohne libnodave.net.dll
    Von Earny im Forum Hochsprachen - OPC
    Antworten: 2
    Letzter Beitrag: 09.03.2010, 18:57
  4. libnodave: Woher kommt die "libnodave.net.dll"?
    Von Thomas_v2.1 im Forum Hochsprachen - OPC
    Antworten: 2
    Letzter Beitrag: 10.11.2008, 12:07
  5. VB.Net und Libnodave
    Von oliverlorenz im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 07.05.2008, 10:54

Lesezeichen

Berechtigungen

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