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

Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 22

Thema: libnodave und PDU-Größe

  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,

    ich möchte in meiner (C# .NET) Anwendung mit möglichst optimaler Geschwindigkeit Daten mit libnodave (wahlweise S7Online oder Ethernet).

    Hierzu habe ich mir nun ein Konzept überlegt, wie ich meine Daten intelligent in Blöcke aufteile. Das klappt auch soweit, nur habe ich nun nirgends gefunden, wie viele Byte an Nutzdaten ich genau in ein Paket packen kann.

    Die PDU-Größe kann ich mir ja mit getMaxPDULen() holen. Nun ist das aber ja die Gesamtgröße inkl. Header etc.
    Bei der S7-300 habe ich gelesen, dass 22Byte für Header etc. draufgehen. Zur S7-400 habe ich nirgends einen eindeutigen Wert gefunden...ich habe aber hinweise darauf gefunden, dass es mehr ist.... ich müsste aber unbedingt den Wert wissen!
    Außerdem stellt sich mir die Frage, wie es bei Read/Write-Multiple ist. Da müsste sich ja die Nutzdatengröße verringern, je mehr Items/Blöcke ich in den Request packe. Ich müsste diesen Wert genau wissen, um eine Formel aufstellen zu können, Wieviel byte ich genau in einen Request packen kann....

    Kennt jemand die Werte und kann mir Weiterhelfen? Die Informationen zu PDU sind im Internet irgendie recht spärlich...

    Ein weiteres Problem ist, dass ich mit getMaxPDULen() an meiner S7-315 sporadisch manchmal 240 und manchmal aber auch 256 zurückgeliefert bekomme...Weiß jemand woran das liegen könnte?!

    Gruß
    Markus
    Zitieren Zitieren libnodave und PDU-Größe  

  2. #2
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.223
    Danke
    533
    Erhielt 2.698 Danke für 1.950 Beiträge

    Standard

    Ich kann dir das nicht sicher beantworten, Zottel ist da bestimmt der bessere Ansprechpartner. Da ich aber vor einiger Zeit ein WinCC-Problem mit Rohdatenvariablen hatte, war ich in der Hilfe zu WinCC auf folgendes gestoßen:

    Code:
    Rohdatenvariablen als Byte-Array dienen zur Übertragung von
    Anwenderdatenblöcken zwischen WinCC und AS und hantieren nur die
    Nutzdaten.
    
    Eine Rohdatenvariable als Byte-Array wird im Kanal wie eine normale
    Prozessvariable behandelt, die über Adresse und Länge des Datenbereichs
    (z.B. DB 100, DW 20, Länge 40 Byte) adressiert wird.
    
    Die Länge der Rohdaten ist auf einen zu übertragenden Datenblock begrenzt
    und muss mit einer PDU (Protocol Data Unit) vollständig übertragbar sein.
    Die maximale Länge der vom Kommunikationstreiber übertragbaren
    Datenblöcke richtet sich nach der beim Verbindungsaufbau ausgehandelten
    PDU-Länge abzüglich der Header- und Zusatzinformationen. Bei den bei
    SIMATIC S7 üblichen PDU-Längen ergeben sich somit folgende maximale
    Längen:
    
    S7-300: PDU-Länge 240/480 Byte; Datenblocklänge max. 208/448 Byte; jeweils abhängig vom CPU-Typ
    
    S7-400: PDU-Länge 480 Byte; Datenblocklänge max. 448 Byte
    Vielleicht hilft dir das vorerst mal weiter.
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

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

    Der Header ist bei der S7-400 genau so groß wie bei der S7-300.
    Rainer Hönle
    DELTA LOGIC GmbH

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

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

    ok, der overhead scheint also bei beiden 32 Byte zu sein. (in den docs von libnodave steht allerdings bei s7-300 etwas von mehr als 208 Byte, aber seis drum)

    Bleibt noch die Frage, wie es sich bei einem Request mit mehreren Blöcken verhält. Weis da jemand etwas?

  5. #5
    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
    ok, der overhead scheint also bei beiden 32 Byte zu sein. (in den docs von libnodave steht allerdings bei s7-300 etwas von mehr als 208 Byte, aber seis drum)

    Bleibt noch die Frage, wie es sich bei einem Request mit mehreren Blöcken verhält. Weis da jemand etwas?
    22 meinst du. Oder 18. Bei mehreren Blöcken gibt es einen Overhead für das ganze Telegramm und einen anderen für jede Variable.
    Um es dir genau zu sagen, muß ich auch in den Quellcode schauen und zählen. Da ich keine Lust habe, schlage ich dir vor:
    Starte eine Anfrage für 5 Blöcke, z.B. 4 a 40Byte (oder 4 a 100 Byte für ne 400) und einen machst du bei jeder Anfrage länger (for-next-Schleife), bis du einen Fehler kriegst. Wenn du dasselbe mit 3 oder 4 oder 6 Blöcken machst, kannst du selbst ausrechnen, wieviel Byte Telegramm-Header und Variablenblock header haben. Ach ja, manche (alle?) CPUs hängen bei ungerader Anzahl ein 0-Byte an...

  6. #6
    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 die Antwort.

    Ich meinte schon 32. Zumindest würde ich aufgrund von Ralles Antwort auf 32 schließen...und für die 400er habe ich auch an anderer Stelle schon mal etwas von 448 gelesen... Leider habe ich zur Zeit keine 400er zur Verfügung, so dass ich das nicht testen kann...

  7. #7
    Registriert seit
    07.07.2004
    Beiträge
    3.285
    Danke
    38
    Erhielt 584 Danke für 382 Beiträge

    Beitrag

    Hallo,

    Zitat Zitat von mabi
    Die PDU-Größe kann ich mir ja mit getMaxPDULen() holen. Nun ist das aber ja die Gesamtgröße inkl. Header etc.
    Leute, was soll die Diskussion über so einen Driss. Ein ordentlicher Protokolltreiber wie OPC-Server, AGLink etc. wickelt das für Euch unsichtbar selbsttätig ab, eine PDULength sollte ab einer gewissen Schicht im OSI Modell wirklich nicht mehr interessieren..

    Zitat Zitat von Rainer Hönle
    Der Header ist bei der S7-400 genau so groß wie bei der S7-300.
    Rainer, ich kann förmlich sehen, wie Du bei der Antwort gegrinst hast ....
    Und die Frage hat Ralle schon beantwortet.

    Gruß

    Question_mark
    ''Ich habe wirklich keine Vorurteile.
    Meine Meinung ist nur die Summe der Erfahrungen" ... (Question_mark)
    Zitieren Zitieren PDU Länge  

  8. #8
    Registriert seit
    07.07.2004
    Beiträge
    3.285
    Danke
    38
    Erhielt 584 Danke für 382 Beiträge

    Beitrag

    Hallo,

    Zitat Zitat von mabi
    bei s7-300 etwas von mehr als 208 Byte, aber seis drum)
    Ist halt abhängig von der 300-er CPU, also bei der 315-er stimmt das schon, aber ab 318 sind wir schon im Bereich der 400-er CPU's, aber das hat Ralle schon in seinem Beitrag erklärt. Man muss nur genau und aufmerksam lesen.

    Gruß

    Question_mark

    PS : Nur falls es es noch Verständnisprobleme gibt, hier das Zitat von Ralle (und er hat Recht) :
    Zitat Zitat von Ralle
    S7-300: PDU-Länge 240/480 Byte; Datenblocklänge max. 208/448 Byte; jeweils abhängig vom CPU-Typ
    Geändert von Question_mark (22.06.2008 um 01:40 Uhr)
    ''Ich habe wirklich keine Vorurteile.
    Meine Meinung ist nur die Summe der Erfahrungen" ... (Question_mark)
    Zitieren Zitieren PDU Length  

  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 Question_mark Beitrag anzeigen
    Hallo,
    Leute, was soll die Diskussion über so einen Driss. Ein ordentlicher Protokolltreiber wie OPC-Server, AGLink etc. wickelt das für Euch unsichtbar selbsttätig ab, eine PDULength sollte ab einer gewissen Schicht im OSI Modell wirklich nicht mehr interessieren..
    Libnodave tut das auch, wenn man die Funktion daveReadManyBytes() benutzt. Ob ein OPC Server so schlau ist, Tags optimierend zusammenzufassen und wie gut, dürfte herstellerabhängig schwanken.

    Bloß mag sich einer, der sich für den darunterliegenden Driss nie interessiert hat, wundern warum 1 Byte mehr Daten plötzlich doppelt so lange dauert. Und wenn er das gewußt hätte, hätte er ja vielleicht woanders auch 2 Byte sparen können...

  10. #10
    Registriert seit
    07.07.2004
    Beiträge
    3.285
    Danke
    38
    Erhielt 584 Danke für 382 Beiträge

    Beitrag


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    Zitat Zitat von Zottel
    Libnodave tut das auch, wenn man die Funktion daveReadManyBytes() benutzt.
    Ja, ich weiss. Hab es leider versäumt, darauf hinzuweisen. Mich ärgert eigentlich nur, dass manche Fragesteller sich mit der S7 Kommunikation beschäftigen wollen und nur leider nicht die Energie aufbringen, die wirklich ausführlichen Handbücher von Siemens zur Datenkommunikation durchzulesen. Oder wenigstens die Suchfunktion im Forum zu benutzen, denn das ist hier alles schon ausführlich und im Detail durchgekaut worden.

    Zitat Zitat von Zottel
    Ob ein OPC Server so schlau ist, Tags optimierend zusammenzufassen und wie gut, dürfte herstellerabhängig schwanken.
    Zumindest für den Simatic OPC-Server kann ich eine gute und optimale Zusammenfassung der Tags bestätigen. Und bei den anderen Herstellern gehe ich jetzt auch mal davon aus, denn eigentlich bemühen sich alle Hersteller Ihre Produkte zu optimieren und ständig zu verbessern.

    Ich glaube aber, der Vergleich LibNoDave und OPC-Server hinkt doch sehr stark. Das sind m.E. zwei unterschiedliche Kommunikationswege und kann man nicht direkt vergleichen (obwohl ich den Vergleich selbst angezettelt habe ).

    Gruß

    Question_mark
    ''Ich habe wirklich keine Vorurteile.
    Meine Meinung ist nur die Summe der Erfahrungen" ... (Question_mark)
    Zitieren Zitieren Ein Blick in das Handbuch der S7 Kommunikation ....  

Ähnliche Themen

  1. Größe der MMC bestimmen
    Von MeisterLampe81 im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 09.01.2010, 15:14
  2. DB-Länge und Größe in SCL
    Von Pikador im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 09.03.2008, 15:31
  3. Größe UDT in SCL
    Von Larry Laffer im Forum Simatic
    Antworten: 14
    Letzter Beitrag: 17.12.2007, 20:25
  4. [Frage] - Mit LibNoDave DB Größe ermitteln?
    Von marcengbarth im Forum Hochsprachen - OPC
    Antworten: 4
    Letzter Beitrag: 31.08.2007, 13:52
  5. Größe von Datenwörten
    Von neueruser im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 07.03.2007, 06:41

Lesezeichen

Berechtigungen

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