# AGLink - S7-1512SP Zykluszeit



## netmaster (9 Juli 2021)

Hallo zusammen,

bei meinen aktuellen Projekt greift ein bauseitiges System vom Kunden auf meine Steuerung über den AGLink Treiber auf meine Datenbausteine zu.
Es werden ca. 2500 Variablen gelesen/geschrieben. Alle Datenbausteine sind optimiert und es findet ein symbolischer Zugriff statt. Polling steht auf 1000ms.
Jetzt ist mir aufgefallen, dass sich meine Zykluszeit von 50ms auf ca. 90ms alle 1000ms erhöht, in dem Moment wo die Anbindung aktiv ist.
Zyklusbelastung durch Kommunikation habe ich bewusst von 50 auf 25% reduziert, da sich sonst meine Zykluszeit noch weiter erhöht hätte.

Ist dieses Verhalten normal bzw. ist euch sowas auch schon aufgefallen?
Gibt es hier eine Lösung, die Auswirkung auf die Zykluszeit kleiner zu halten, ohne die CPU zu tauschen?

Vielen Dank im Voraus.


----------



## Rainer Hönle (9 Juli 2021)

Aufgrund der Security hat die CPU für die Kommunikation zusätzliche Arbeit. Dies schlägt sich in der Zykluszeit nieder (vor allem bei dem kleinen und leistungsschächerem CPUs, einer 1518 merkt man hier kaum etwas an). 
Hältst Du die Verbindung dauernd offen oder baust Du diese zum Lesen auf und danach wieder ab?
Optimieren kanst Du z. B. indem die Datenm in einem Array liegen und dieses als Ganzes abgefragt wird.


----------



## netmaster (9 Juli 2021)

Wie kann ich den Punkt "Aufgrund der Security" hat die CPU zusätzlich Arbeit. Hat dies was mit dem SPS Passwort und der Zugriffsstufe zu tun, oder ist dies durch die Symbolische Adressierung generell bedient?
Verbindung sollte permanent Aufgebaut sein, dies werde ich aber in meine SPS nicht erkennen können?
Viele der Daten liegen in einem Array, aber ich vermute es werden die einzelnen Datenpunkte abgefragt anstatt dem ganzen Array. Aber dies kann ich in Erfahrung bringen.


----------



## Rainer Hönle (9 Juli 2021)

Es hat mit der symbolischen Adressierung und dem Ganzen darum herum zu tun. Es ist nicht mehr nur einfach "Gibt mir ab der Adresse x Daten" die dann geliefert werden.
Einfach den Quellcode des Programms ansehen, das ACCON-AGLink verwendet. Dort sollte alles ersichtlich sein. Wenn dieser nicht vorliegt, dann hilft nur die Analyse eines wireshakr-Protokolls. Für entsprechende Änderungen ist allerdings der Quellcode unumgänglich.


----------



## Thomas_v2.1 (9 Juli 2021)

Rainer Hönle schrieb:


> Es hat mit der symbolischen Adressierung und dem Ganzen darum herum zu tun. Es ist nicht mehr nur einfach "Gibt mir ab der Adresse x Daten" die dann geliefert werden.


Habt ihr schon mal getestet ob der Zugriff auf "nicht optimierte" Datenbausteine bei der 1500er schneller ist? Auf diese gibt es dann auch zwei Zugriffsmöglichkeiten, wenn Put/Get erlaubt ist über das alte S7comm Protokoll, oder über S7comm-plus existiert auch noch die Möglichkeit des Zugriffs über Absolutadressen. Über S7comm fällt ja einiges an Rechnerei weg.


----------



## netmaster (9 Juli 2021)

Thomas_v2.1 schrieb:


> Habt ihr schon mal getestet ob der Zugriff auf "nicht optimierte" Datenbausteine bei der 1500er schneller ist? Auf diese gibt es dann auch zwei Zugriffsmöglichkeiten, wenn Put/Get erlaubt ist über das alte S7comm Protokoll, oder über S7comm-plus existiert auch noch die Möglichkeit des Zugriffs über Absolutadressen. Über S7comm fällt ja einiges an Rechnerei weg.



Getestet noch nicht, bin aber überzeugt, das es da weniger auf die Zykluszeit geht.
Wollten uns erstmal die "Arbeit" Sparren die Adressierung aller Variablen anzupassen. 



Rainer Hönle schrieb:


> Es hat mit der symbolischen Adressierung und dem Ganzen darum herum zu tun. Es ist nicht mehr nur einfach "Gibt mir ab der Adresse x Daten" die dann geliefert werden.
> Einfach den Quellcode des Programms ansehen, das ACCON-AGLink verwendet. Dort sollte alles ersichtlich sein. Wenn dieser nicht vorliegt, dann hilft nur die Analyse eines wireshakr-Protokolls. Für entsprechende Änderungen ist allerdings der Quellcode unumgänglich.


So wie ich dies verstanden habe, wäre es am besten Array komplett zu lesen. Macht es hier einen unterschied ob dies ein Array of byte/int/real usw.. ist oder ob es ein Array of UDT ist?
Kann ich sowas selbst in Wireshark rauslesen wie auf die Variablen zugegriffen wird, wenn ich eine Aufzeichnung habe?

Noch eine allgemeine Frage, die Performance von OPC UA mit eine Siemens CPU als Server wird wahrscheinlich eher schlechter sein?


----------



## Rainer Hönle (10 Juli 2021)

Es macht einen Unterschied, denn ein Array von UDTs wird von ACCON-AGLink derzeit nicht unterstützt. Somit bringt nur ein Array of byte/int/real ... einen Vorteil.
Ob Du das aus dem wireshark Protokoll herauslesen kannst, hängt davon ab, wie groß Deine Erfahrung mit einer Protokollanalyse ist. wireshark ist ja Dank Thomas v2.1 ein hervorragendes Tool für die Siemens Protokollanalyse.


----------

