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

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

Thema: libnodave und geschwindigkeit

  1. #1
    Registriert seit
    30.01.2008
    Beiträge
    8
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    zunächst einmal ein herzliches dankeschön an den/die Macher von libnodave. Ich teste die library seit zwei Tagen (unter .NET) und bin wirklich sehr angetan. Die Kommunikation mit einer cp5611 über s7online und einer 315er SPS funktioniert wirklich einwandfrei.
    Nur ein großes Problem steht mir im Weg: Ich muss in meiner Anwendung (es geht um eine Simulation) auf eine große Menge Daten, die überall verstreut in der SPS liegen können, lesend und schreibend zyklisch zugreifen. Also Eingänge, Ausgänge, Merker und DBs.
    Nun habe ich getestet, dass über Mpi das auslesen und schreiben von 200 MerkerBytes in jeweils einer Anforderung schon ca. 80ms dauert. Wenn ich nun zudem in 10DBs jweils 200 Byte lesen und schreiben will, und auch noch 200Byte Ein-/und Ausgänge dann komme ich ganz schnell auf eine minimale Zykluszeit von einigen Sekunden! Die Anwendung sollte aber nach Möglichkeit mit ca 0,5s laufen.

    Selbst wenn ich in meiner Anwendung nur 200Bit benötige muss ich ja immer den ganzen Speicher einlesen, da diese 200Bit überall verteilt sein können. (ist in der Anwendung frei konfigurierbar).
    Nur die benötigten Bytes auszulesen würde noch länger dauern, da noch mehr einzelne Anforderungen notwendig wären.


    Nun ist die Frage: Es muss doch irgendwie auch eine schnellere Möglichkeit geben. WinCC beispielsweise kann doch auch sehr viele Variablen, die überall verstreut sein können, auslesen und schreiben und dabei trotzdem die Zykluszeiten einhalten... Liegt das an der Libnodave bzw. wäre es mit anderen (kostenpflichtigen) Tools eher schneller möglich? Oder über OPCServer?

    Über Profibus (1,5Mbit)habe ich es übrigens auch schon probiert, ist aber auch nur knapp doppelt so schnell...


    Gruß
    Zitieren Zitieren libnodave und geschwindigkeit  

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

    Standard

    Zitat Zitat von mabi Beitrag anzeigen
    zunächst einmal ein herzliches dankeschön an den/die Macher von libnodave. Ich teste die library seit zwei Tagen (unter .NET) und bin wirklich sehr angetan. Die Kommunikation mit einer cp5611 über s7online und einer 315er SPS funktioniert wirklich einwandfrei.
    Danke!
    Nur ein großes Problem steht mir im Weg: Ich muss in meiner Anwendung (es geht um eine Simulation) auf eine große Menge Daten, die überall verstreut in der SPS liegen können, lesend und schreibend zyklisch zugreifen. Also Eingänge, Ausgänge, Merker und DBs.
    Nun habe ich getestet, dass über Mpi das auslesen und schreiben von 200 MerkerBytes in jeweils einer Anforderung schon ca. 80ms dauert.
    Kann ich jetzt nicht testen, aber das Testprogramm testS7online kann mittels der Option -b einen Benchmark durchführen. Probier es einmal aus und poste das Ergebnis. Dabei werden folgende Tests jeweils 100x ausgeführt:
    - 1 Byte lesen
    - Einen großen Block (typisch 200 Byte) lesen
    - Verteilte Variablen (5 oder 6 Stück) durch eine einzige Anforderung lesen
    Ein typischer Wert für den 2. Test mit einem NetLink/IBH-Link ist 5-6 Sekunden mit einer CPU 315, so daß 55ms zu schaffen wären. Der CP5611 selbst wird da keinesfalls langsamer sein. Es kann gut sein, daß die Anbindung von Libnodave an die s7online.dll suboptimal ist.
    Wenn ich nun zudem in 10DBs jweils 200 Byte lesen und schreiben will, und auch noch 200Byte Ein-/und Ausgänge dann komme ich ganz schnell auf eine minimale Zykluszeit von einigen Sekunden! Die Anwendung sollte aber nach Möglichkeit mit ca 0,5s laufen.
    Schreiben mußt du ja eventuell nur, wenn sich auf der PC-Seite ein Wert ändert. Wenn da ein Mensch einzelne Einstellungen vornimmt, wird es unteri 1 Variable/500ms bleiben.
    Selbst wenn ich in meiner Anwendung nur 200Bit benötige muss ich ja immer den ganzen Speicher einlesen, da diese 200Bit überall verteilt sein können. (ist in der Anwendung frei konfigurierbar).
    An dieser Stelle würde ich dir raten, die Konfiguration an das SPS-Programm zu übermitteln und dieses die zu lesenden Bits in einem Übergabe-Speicherbereich kopieren zu lassen.
    Nur die benötigten Bytes auszulesen würde noch länger dauern, da noch mehr einzelne Anforderungen notwendig wären.
    Nun ist die Frage: Es muss doch irgendwie auch eine schnellere Möglichkeit geben.
    Das bezweifel ich.
    WinCC beispielsweise kann doch auch sehr viele Variablen, die überall verstreut sein können, auslesen und schreiben und dabei trotzdem die Zykluszeiten einhalten...
    Das bezweifel ich wieder, jedenfalls wenn diese Zykluszeiten im Millisekunden-Bereich liegen.
    Liegt das an der Libnodave bzw. wäre es mit anderen (kostenpflichtigen) Tools eher schneller möglich? Oder über OPCServer?
    Alle diese Tools benutzen das gleiche Übertragungsprotokoll. Dieses begrennzt die Länge von Anfrage und Antwort auf die PDU-Länge (240 Byte bei 315). Darin sind Protokoll-Overhead und Nutzdaten unterzubringen.
    Die Anfrage wird abgeschickt und auf die Antwort der CPU gewartet. Anfrage kann nach mehreren Variablen an unterschiedlichen Adressen fragen, aber auf Kosten der Nutzdatenlänge in der Antwort, da für jede Variable Typ und Längeninformationen mit zurückgeliefert werden. Das einzige, was ein gutes Tool da machen könnte, ist genau auszurechnen, welche Verteilung auf mehrere Anfragen optimal ist. Z.B. ist es günstiger 12 Byte ab MD0 in einem Rutsch zu lesen, wenn MD0 und MD8 benötigt werden.
    WinCC als HMI-Tool wird auch den Bildschirm nicht öfter als alle 500 bis 1000 ms neu aufbauen. Eventuell könnte es je nach angezeigtem Bild nur die tatsächlich benötigten Werte lesen.

  3. #3
    mabi ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    30.01.2008
    Beiträge
    8
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    danke für deine schnelle und eingehende Antwort!

    Ein typischer Wert für den 2. Test mit einem NetLink/IBH-Link ist 5-6 Sekunden mit einer CPU 315, so daß 55ms zu schaffen wären. Der CP5611 selbst wird da keinesfalls langsamer sein. Es kann gut sein, daß die Anbindung von Libnodave an die s7online.dll suboptimal ist.
    das Benchmark hatte ich auch schon laufen lassen. Ich weiß die genauen Werte momentan nicht mehr auswendig aber der zweite Wert lag glaube ich sogar knapp unter 5s. Die erwähnten 80ms waren auch für schreiben UND Lesen von JEWEILS 200Byte. Also nur lesen waren um die 40ms. Eigentlich also durchaus ein "guter" Wert, nur für meinen Anwendungsfall eben nicht gut genug

    Schreiben mußt du ja eventuell nur, wenn sich auf der PC-Seite ein Wert ändert. Wenn da ein Mensch einzelne Einstellungen vornimmt, wird es unteri 1 Variable/500ms bleiben.
    leider nein, denn die Variablen werden nicht bzw. nicht nur durch Menschliche Bedienung sondern auch durch automatische Vorgänge verändert.

    Alle diese Tools benutzen das gleiche Übertragungsprotokoll. Dieses begrennzt die Länge von Anfrage und Antwort auf die PDU-Länge (240 Byte bei 315). Darin sind Protokoll-Overhead und Nutzdaten unterzubringen.
    Die Anfrage wird abgeschickt und auf die Antwort der CPU gewartet. Anfrage kann nach mehreren Variablen an unterschiedlichen Adressen fragen, aber auf Kosten der Nutzdatenlänge in der Antwort, da für jede Variable Typ und Längeninformationen mit zurückgeliefert werden. Das einzige, was ein gutes Tool da machen könnte, ist genau auszurechnen, welche Verteilung auf mehrere Anfragen optimal ist. Z.B. ist es günstiger 12 Byte ab MD0 in einem Rutsch zu lesen, wenn MD0 und MD8 benötigt werden.
    WinCC als HMI-Tool wird auch den Bildschirm nicht öfter als alle 500 bis 1000 ms neu aufbauen. Eventuell könnte es je nach angezeigtem Bild nur die tatsächlich benötigten Werte lesen.
    Ok, da wird mir wohl nichts anderes übrig bleiben, also in meinem Programm auch zu versuchen eine optimale Verteilung hinzubekommen und mich notfalls evtl mit Zykluszeiten von 1s zufrieden zu geben. Ich glaube du hast recht und WinCC liest tatsächlich nur die benötigten Werte, wobei diese ja auch quer im Speicher verteilt liegen können...
    Werde morgen auch mal noch schauen wieviel es noch bringt, den Profibus auf 12MBit hochzujagen. (dürfte dem Libnodave über s7online ja egal sein, oder?)

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

    Standard

    Die Profibus-Baudrate ist Libnodave egal. Ob es gegenüber 1,5MBit etwas bringt siehst du ja.
    Das Problem liegt eher in folgendem:
    1. Die CPU braucht recht lange für die Antwort. Probier mal:
    1.1. Die typische Einstellung 20% Zeit/Leistung für Kommunikation zu erhöhen. Ich habe es noch nie probiert...
    1.2. Einen Benchmark starten und während er läuft einen zweiten in einem zweiten Fenster. Sie werden langsamer, aber wenn ich mich recht erinnere, ist die Summe der pro Zeit empfangenen Telegramme größer als bei einem einzelnen Test. Das könnte ein Programm nutzen, indem es mehrere Verbindungen aufmacht und darauf gleichzeitige Anfragen absetzt. Allerdings hat Libnodave in Verbindung mit S7online und mehreren Verbindungen Probleme...
    1.3. Die S7-Kommunikation läuft auf dem Profibus mit niedriger Priorität, wenn sonst nichts zu tun ist und die CPU den Token hat. Daher ist es günstig, wenn keine weiteren Master, noch günstiger keine weiteren Teilnehmer als CPU und CP5611 dran hängen. Eventuel ließe sich mit den PB-Timing-Parametern was rausholen, aber da fehlt mir im Augenblick der Überblick.
    1.4 Versuch es mit einer Siemens-CPU mit integrierter Ethernet-Schnittstelle oder einer VIPA-CPU.

  5. #5
    mabi ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    30.01.2008
    Beiträge
    8
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    ja die Baudrate auf 12Mbit hat nur noch wenig gebracht. (ca. 0,2s im Benchmark.

    Ich habe heute nocheinmal alle Möglichkeiten, die ich momentan zur Verfügung habe, mit Benchmark durchgetestet.
    Der zweite Wert war ca.:
    CP5611 über MPI: 4,7s
    CP5611 über DP(1,5Mbit): 2,7s
    CP5611 über DP(12Mbit): 2,5s
    Ethernet mit CP343-1: 4,8s
    Ethernet ist also sogar etwas langsamer als MPI. Liegt aber wohl am Rückwandbus.

    Werde mich jetzt wohl mit der Profibus-Variante zufriedengeben und in meinem Programm versuchen, die jeweils benötigten Daten in geschickte Blöcke zu zerlegen.

  6. #6
    Registriert seit
    24.05.2006
    Beiträge
    234
    Danke
    14
    Erhielt 77 Danke für 57 Beiträge

    Standard

    So rein interessehalber 'ne Frage zu deiner Messung "Ethernet mit CP343-1: 4,8s":
    Was war das denn für ein Ethernet-CP? Extern über den Bus angebunden vermute ich mal - die Geschwindigkeit ist innerhalb der Toleranz identisch zu MPI.

    Zottel hatte von Siemens CPUs mit integriertem Ethernet bzw. Vipa Speed7 gesprochen, da geht die interne Kommunikation - weil anderer Bus - deutlich schneller.

  7. #7
    Registriert seit
    28.10.2005
    Ort
    Ottweiler, Saar
    Beiträge
    940
    Danke
    259
    Erhielt 124 Danke für 109 Beiträge

    Standard

    Zitat Zitat von hovonlo Beitrag anzeigen
    ...
    Zottel hatte von Siemens CPUs mit integriertem Ethernet bzw. Vipa Speed7 gesprochen, da geht die interne Kommunikation - weil anderer Bus - deutlich schneller.
    Mal unabhängig von libnodave bin ich daran interessiert zu erfahren,
    ob es Siemens-CPUs der 300er Bauform mit interner TCP gibt, die den Transfer
    wirklich schneller abwickeln als die Kombi CPU+CP343. Nachweislich, nicht
    vermutlich.

  8. #8
    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

    Zitat Zitat von argv_user Beitrag anzeigen
    Mal unabhängig von libnodave bin ich daran interessiert zu erfahren,
    ob es Siemens-CPUs der 300er Bauform mit interner TCP gibt, die den Transfer
    wirklich schneller abwickeln als die Kombi CPU+CP343. Nachweislich, nicht
    vermutlich.
    Im Prinzip ja. Nun mal Spaß beiseite. Die Siemens-CPUs mit integrierter Ethernet-Schnittstelle sind bei kurzer Zykluszeit wirklich deutlisch schneller als die Kombination CPU + CP. Geht aber die Zykluszeit nach oben, dann ist irgendwann die Kombination CPU + CP schneller. Das Ganze hängt aber nebenbei noch von so Kleinigkeiten wir Firmwareversion etc. ab. Ich habe hierzu schon die verschiedensten SPSen und CPs in den Fingern gehabt. Grundsätzlich gilt: Soll die Kommunikationsleistung hoch sein, dann muss man sich den Einsatz einer 400er überlegen.
    Zu den Vipa-SPSen kann ich derzeit noch nichts sagen, da ich diese noch nicht getestet habe und somit nicht in den Reigen der Siemens-Steuerungen bezüglich Kommunikationsleistung einordnen kann.
    Rainer Hönle
    DELTA LOGIC GmbH

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

  9. Folgender Benutzer sagt Danke zu Rainer Hönle für den nützlichen Beitrag:

    argv_user (01.02.2008)

  10. #9
    Registriert seit
    28.10.2005
    Ort
    Ottweiler, Saar
    Beiträge
    940
    Danke
    259
    Erhielt 124 Danke für 109 Beiträge

    Standard

    Hallo Rainer,

    erstmal vielen Dank für den Beitrag.

    Das ist kein Spaß. Ich bin da echt noch auf der Suche.
    Es geht um eine mobile Anwendung, die in "Echtzeit" auf Daten
    vom PC reagieren soll; quasi wie auf Analogeingänge, nur dass
    die Daten vom PC geliefert werden.
    TCP muss aber sein (lt. Kunde).

    Und die 400er scheidet leider aus Platzgründen aus, obwohl sie ja
    viel schneller als die 300 ist.

    Naja, vielleicht ergibt sich ja noch was.

  11. #10
    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


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Was bedeutet in diesem Zusammenhang Echtzeit? Ich denke Du must innerhalb einer bestimmten Zeit eine Reaktion haben. Wie lang ist diese Zeit maximal? Muss es wirklich TCP/IP sein oder genügt Ethernet? Hintergrund: Vielleicht gibt es eine Software auf dem PC die als PNIO-Device agiert. Mit einer PN-CPU hättest Du dann mit Sicherheit eine sehr schnelle Reaktion. Und wenn mit mobil auch wireless gemeint ist, dann sind diese Komponenten ebenfalls verfügbar.
    Rainer Hönle
    DELTA LOGIC GmbH

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

Ähnliche Themen

  1. Kom.geschwindigkeit mit 315/2DP vs. 315/PN/2DP
    Von Waelder im Forum Simatic
    Antworten: 21
    Letzter Beitrag: 10.08.2009, 09:00
  2. Geschwindigkeit des MPI-Netzwerkes
    Von CheGuevara83 im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 20.05.2007, 22:03
  3. op 37 geschwindigkeit
    Von tilllorenzo im Forum HMI
    Antworten: 1
    Letzter Beitrag: 27.05.2006, 21:53
  4. Geschwindigkeit OP/MP und sps
    Von Anonymous im Forum HMI
    Antworten: 12
    Letzter Beitrag: 13.01.2006, 08:26
  5. Geschwindigkeit SPS-PC
    Von Anonymous im Forum Simatic
    Antworten: 0
    Letzter Beitrag: 17.06.2005, 17:09

Lesezeichen

Berechtigungen

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