Schnelle Datenübertragung mit DotNetSiemensPLCToolBoxLibrary (LibNoDave) Nummer 2

Du musst auch noch aufpassen, das du nicht einfach 222 Bytes an nutzdaten in die PDU bekommst, jede Variablenanfrage braucht wieder zusätzliche 6 Bytes für den Request Header! Aber wie gesagt, diese ganze optimierung, sortierung und zusammenfassung ist in meiner Connection Klasse schon drin!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Du musst auch noch aufpassen, das du nicht einfach 222 Bytes an nutzdaten in die PDU bekommst, jede Variablenanfrage braucht wieder zusätzliche 6 Bytes für den Request Header!

Danke für den Tipp, dann sind es ja pro PDU nur noch 216 Byte an Nutzdaten.

Aber wie gesagt, diese ganze optimierung, sortierung und zusammenfassung ist in meiner Connection Klasse schon drin!

Aber die nützt mir ja nur zum Teil etwas.

Ich habe ja pro SPS eine Variablenliste. Deine Lib optimiert diese nun, aber diese die ganze Liste wird ja über eine Verbindung gelesen, indem sie sie auf mehrere PDUs aufteilt wird, welche dann nacheinander gelesen werden.

Das kostet Zeit!

Um Zeit zu sparen, will ich daher meine Liste aufteilen in Unterlisten von der Größe einer PDU. Dann will ich pro PDU eine Verbindung in einem separaten Thread nutzen will.

Deshalb muss ich diese Optimierung nun zum Teil nochmal selber durchmachen... Das ist ja die Crux an der Sache!

Wenn du das parallele Lesen über mehrere Verbindungen und die Vor-optimierung noch in deine Lib einbauen würdest, wäre das natürlich eine Supersache. Die Lib müsste dann aber berücksichtigen, dass die Anzahl an Verbindungen begrenzt ist. Kann man die Anzahl an verfügbaren Verbindungen irgendwie abfragen, so dass man beim öffnen einer Verbindungen keinen Fehler bekommt, falls alle Verbindungen aufgebraucht sind?
 
Zuletzt bearbeitet:
Wenn dann würde ich einbauen, das man sagt, ich will z.b. max 4 verbindungen nutzen! eine abfrage geht bestimmt über irgendeine szl, aber ich weis ja nicht ob vlt auch danach noch welche frei sein sollen z.b. für pg zugriff oder panels welche danach noch eingeschaltet werden!
 
nein, es sind 222, da ist der erste header soweit ich weis schon abgezogen! aber jeder weitere bereich heist 6byte weniger! deshalb liest meine leseroutine beim abstand <6 auch den bereich dazwischen mit ein! und bei 400er cpus kannst du auch noch den short req nehmen, da sparst glaub ich nochmal 1 byte
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wenn dann würde ich einbauen, das man sagt, ich will z.b. max 4 verbindungen nutzen! eine abfrage geht bestimmt über irgendeine szl, aber ich weis ja nicht ob vlt auch danach noch welche frei sein sollen z.b. für pg zugriff oder panels welche danach noch eingeschaltet werden!

Es währe am schönsten, wenn dies direkt in deine Bibliothek eingebaut würde. Die Optimierung ist schon schön, und bringt auch einiges an Übertragungszeit. Will man jedoch größere Datenmengen lesen oder schreiben und noch eine akzeptable Übertragungszeit erreichen, kommt man an mehreren Verbindungen nicht vorbei.

Hab ja in dem älteren Thema einen Beitrag erstellt, wo ich mehrer Verbindungen und die Optimierung verglichen habe. In meinem Fall brachte die Optimierung so viel wie parallele Verbindungen, jedoch erst mit der Kombination beider Möglichkeiten, konnte die Übertragungszeit auf eine akzeptable Zeit verringert werden.
 
Prüfst du deinen parallel Verbesserungen auch mit einer belasteten SPS?

die PUT/GET-Kommunikation wird relativ schnell nach unten gestuft wenn die SPS was zu tun hat und da werden deine Parallelanfragen auch mehr Belastung erzeugen
 
Zuviel Werbung?
-> Hier kostenlos registrieren
nein, es sind 222, da ist der erste header soweit ich weis schon abgezogen! aber jeder weitere bereich heist 6byte weniger! deshalb liest meine leseroutine beim abstand <6 auch den bereich dazwischen mit ein! und bei 400er cpus kannst du auch noch den short req nehmen, da sparst glaub ich nochmal 1 byte
Was meinst Du denn mit short req?
 
Zurück
Oben