Libnodave Multiple Read für S5

RobinHood

Level-1
Beiträge
8
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

wir verwenden Libnodave 0.8.4.5 über AS511 um auf unsere S5 zuzugreifen.

Gestern wollte ich um das lesen etwas zu beschleunigen, dauert für 3 DBs mit insgesamt 270 Byte gut 3 Sekunden und da fehlt noch einiges :rolleyes:, die Read multiple Funktionen nutzen.
Leider erhalte ich nur ein
Code:
-131 Function not supported for S5
Ist in Zukunft geplant diese Funktion auch für die S5 zu implementieren?
 
Bei AS511 kannst du nicht mehr viel beschleunigen. Die Baudrate ist langsam, und das AS511 Protokoll mit dem ewigen Ping-Pong von ein paar Bytes macht das nochmal langsamer.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ist in Zukunft geplant diese Funktion auch für die S5 zu implementieren?
Nein, denn das Protokoll unterstützt keine solche Funtion (Abfrage von Werten aus mehreren Bereichen in einer Anfrage). Wenn es dir zu langsam ist, warum kopierst du nicht im SPS-Programm alles in einen DB?, das sollte helfen.
Nachtrag: Und versuch es mal mit der neuesten Version (0.8.5), es gab auch eine Verändrung beim AS511 Protokoll, aber ich weiß jetzt nicht, ob sie sich auf die Geschwindigkeit auswirkt..
 
Zuletzt bearbeitet:
Ich weiß nicht ob das mit libnodave möglich ist. Aber bei einem Lesebefehl wird ja vor jedem Lesen erst die Adresse in der SPS abgefragt, und dann anhand der Adresse die Daten gelesen. Das ist wieder einiges an Ping-Pong.
Ich habe das AS511-Protokoll mal auf einer S7 mit seriellem CP nachgebildet. Da hat die Gegenstelle das so gemacht, dass diese über die Programmierfunktion (Read Module) immer den kompletten DB aus dem AG geladen hat. Ich habe mich auch gewundert was das soll (bzw. war mein Programm gar nicht darauf vorbereitet ;-) ). Aber der Vorteil dabei ist, dass direkt die DB-Nummer angefordert werden kann, und nicht erst die Speicheradresse bestimmt werden muss.

Ansonsten könnte die Speicheradresse zur Not zwischenspeichern und nur alle x Sekunden / Minuten abfragen. Bei WinCC flexible gibt es auch diese Option, wobei dort die Adresse nur einmalig angefragt wird.
 
Hallo ihr beiden :),

Nachtrag: Und versuch es mal mit der neuesten Version (0.8.5), es gab auch eine Verändrung beim AS511 Protokoll, aber ich weiß jetzt nicht, ob sie sich auf die Geschwindigkeit auswirkt..

Probiere ich nächste Woche mal aus.

Wenn es dir zu langsam ist, warum kopierst du nicht im SPS-Programm alles in einen DB?, das sollte helfen.
Das war auch meine Idee. Leider haben wir weder ein Gerät zum brennen des EPROMs noch kann ich AWL und einige hundert Euro sind vor der Buchhaltung schwer zu argumentieren mit „das ist nun 2 Sekunden schneller“.

Was ist denn die maximale Größe des Payload? Gilt auch hier 222 Byte ist Maximum (also 111DW pro Read)?

Ansonsten könnte die Speicheradresse zur Not zwischenspeichern und nur alle x Sekunden / Minuten abfragen. Bei WinCC flexible gibt es auch diese Option, wobei dort die Adresse nur einmalig angefragt wird.

Stecke leider nicht so tief drin, wäre das viel Aufwand zu implementieren?
 
Zuletzt bearbeitet:
Die maximale Größe der Nutzdaten im AS511 Protokoll war bei den S5, mit denen ich probiert habe, nur durch das Ende der Speicherbereiche begrenzt. 4 oder 8 oder 16k gehen an einem Stück. Das läßt sich aber mit Libnodave nicht nutzen, weil der interne Puffer von daveConnection nur 2048? Byte umfaßt...
 
Hallo Zottel,

danke für deine rasche Antwort.

Das läßt sich aber mit Libnodave nicht nutzen, weil der interne Puffer von daveConnection nur 2048? Byte umfaßt...
Das lässt sich doch über #define daveMaxRawLen 2048 oder einem Buffer in daveReadBytes beinflussen, oder nicht?

Die Idee mit dem Baustein werde ich aber weiter verfolgen wenn das die einzige sinnvolle Möglichkeit ist.
 
Zurück
Oben