TIA Zykluszeit steigt bei Simulation Comfort Panel

Z-Diode

Level-2
Beiträge
77
Reaktionspunkte
3
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Zusammen,

habe eine Frage bezüglich der Zykluszeit.

Ich hab hier eine Test SPS (1513) und ein Programm soweit fertig gestellt und getestet. Nur ist mir Aufgefallen sobald ich die SPS Neustart (als Strom an/aus) oder das Panel in Simulationsmodus schalte die Zykluszeit extrem hoch geht von 22ms(*) zu 140ms bis 210ms.

Ich habe als erstes gedacht es liegt an den TO Objekten aber das hat zwar Einfluss auf die Zykluszeit aber wenn ich das Panel in Simulation aktive steigt die Zykluszeit dennoch von 5ms auf 80ms bis 110ms.
Ich habe auch alle Bausteine die mit den Panel Kommunizieren deaktiviert aber hat auch nicht viel geändert.

Jetzt meine Frage ist das normal mit der Simulation oder bekomme ich später auf der Richtigen Anlage (1515+TP900) Probleme?


(*) Die Zykluszeit ist relativ hoch weil hier 8 Technologie Objekte als Positionierer im Programm sind.
 
Kommunikation benötigt auf der CPU auch Rechenleistung... Je nachdem wieviele Variablen mit welchem Trigger das Panel da aus der CPU holt. Beobachten mit dem PG kostet auch Zykluszeit...

die 1515 ist ca. 4mal schneller als die 1513 (bei den neuen Typen):
1692715064636.png

bei den alten Typen ist der Unterschied marginal:
1692715618092.png

ob Du Probleme krigst, hängt halt davon ab, welche Zykluszeit Du zwingend brauchst.
 
Zuletzt bearbeitet:
hallo vielen dank für den Input.

Das passiert aber nur beim Neustart der SPS ist das die Initialisierung der Kommunikation?

Das sind jetzt nicht wenig Variablen das meiste hab ich in ein Array gepackt. Nur ein Teil hab ich von ein Kollegen übernommen der relativ viel Einzel bits und ints rüber schaufelt.
Die Zeiten hab ich versucht sinnvoll einzustellen (z.b. Fehlermeldung 1s aber Motordaten zb. 100ms). Vielleicht probiere ich hier noch was rum.

Gibt es sonst eine Möglichkeit (ohne das Programm komplett zu überarbeiten) um das Problem etwas abzufedern?
 
Das passiert aber nur beim Neustart der SPS ist das die Initialisierung der Kommunikation?

Das sind jetzt nicht wenig Variablen das meiste hab ich in ein Array gepackt. Nur ein Teil hab ich von ein Kollegen übernommen der relativ viel Einzel bits und ints rüber schaufelt.
Die Zeiten hab ich versucht sinnvoll einzustellen (z.b. Fehlermeldung 1s aber Motordaten zb. 100ms). Vielleicht probiere ich hier noch was rum.

Gibt es sonst eine Möglichkeit (ohne das Programm komplett zu überarbeiten) um das Problem etwas abzufedern?
SPS-Neustart ist doch egal...

Bei den Arrays wars glaub so, dass das Panel dann, auch wenn nur eine Variable im Bild benötigt wird, das ganze Array übertragen wird! Aber wie das konkret abläuft ist bissl undurchsichtig. Thomas hat da mehr Einsicht... (nicht umsonst steht da in der TIA-Hilfe WARNUNG und VORSICHT)

Besonderheiten
Auf Bediengeräten sowie in RT Advanced werden bei Zugriff auf ein Element eines skalaren Arrays (mit Ausnahme von Arrays von String/WString) immer alle Arrayelemente auf einmal von der Steuerung gelesen oder geschrieben.

Bei RT Professional werden die Arrayelemente immer einzeln von und zur Steuerung gelesen und geschrieben.

Beispiel zu den Bediengeräten und RT Advanced:
Eine Arrayvariable mit 100 Arrayelementen vom Datentyp "Real" ist projektiert.
Wenn sich ein 4 Bytes großes Arrayelement ändert, werden 100 x 4 Bytes in die Steuerung geschrieben.

Warnung
Erhöhte Systemauslastung und Performanceeinbußen
Aufgrund der gleichzeitigen Übertragung aller Arrayelemente eines skalaren Arrays dauert speziell das Schreiben zur Steuerung bei Zugriff auf ein Element eines größeren Arrays länger als das Schreiben einer Variablen mit gleichem Datentyp. Berücksichtigen Sie dies bei der Auslegung der Kommunikation.
Beachten Sie auch, dass bei skalaren Arrays das Lesen von ganzen Arrayvariablen von der Steuerung in der Regel schneller ist als die Summe der Lesezugriffe auf die gleiche Anzahl von elementaren Variablen des gleichen Datentyps.

Vorsicht
Dateninkonsistenz bei Arrayvariablen
Wenn in einer skalaren Arrayvariablen der Wert eines einzelnen Elements geändert werden soll, wird das gesamte Array gelesen, geändert und als vollständiges Array wieder zurückgeschrieben. Änderungen an anderen Arrayelementen, die zwischenzeitlich in der Steuerung vorgenommen werden, werden beim Zurückschreiben überschrieben.
Achten Sie darauf, dass unterschiedliche Stellen, z. B. Bediengerät und Steuerung, nicht zur selben Zeit Werte in dieselbe Arrayvariable schreiben. Um die Arrayvariable mit der Steuerung zu synchronisieren, benutzen Sie z. B. die synchrone Übertragung von Rezepturdatensätzen.
Hinweis

Arrayvariablen als Listeneintrag von Multiplexvariablen
Arrayvariablen des Datentyps Char oder WChar können wie Variablen des Datentyps String verwendet werden.
Die Verwendung einer Arrayvariablen des Datentyps Char oder WChar als Listeneintrag einer Multiplexvariablen im Editor "HMI-Variablen" wird aber nicht unterstützt.

Verwendung in Skripten
Um die Performance zu erhalten, verwenden Sie in Skripten zum Ändern von skalaren Arrays immer interne Arrays.
Am Anfang des Skripts kopieren Sie das PLC-Array in das interne Array.
Während das interne Array durch das Skript bearbeitet wird, belasten Sie dadurch nicht die Kommunikation zur Steuerung.

100ms ist arg schnell, würd ich nur für vielleicht 10 Variablen im Notfall machen. 1s ist normal.

Dann kommts noch drauf an, was unter "Erfassungsart" eingestellt ist. Also ob wirklich zyklisch geholt wird oder nur wenn im aktuell offenen Bild die Variable benötigt wird...

Zur SPS. Wenn man schnelle Zykluszeit braucht ist es sinnvoll, die Programmteile welche schnell sein MÜSSEN in nen schnellen Weckalarm zu legen, den (langsamen) Rest in OB1.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
@Blockmove ja hast recht leider war die Bestellung so lange schon raus das wir leider die 1515 in der "alten" Version (2AM02) bekommen haben.

Die für den Test ist auch eine alte Version (1AL02) die wir gerade so im Keller noch gefunden haben.
 
Hallo,

@ducati
Habe mir das mal im Detail anschaut es handelt sich um insgesamt 411 Variablen (also mit Arrays). 150 Vairablen werden im Zyklich erfasst 100ms , 25 Variablen werden mit 500ms erfasst und der Rest mi 1s. Nur die Fehlerwörter werden kontinuierlich erfasst.

Die Zykluszeit ist eine gute Frage wir haben eine Materialverfolgung da benötigen wir 15ms der wird realisiert über ein "Cyclic Interrup". Für den Rest würde die 20ms "okay" sein. Ich sehe nichts Zeitkritisches solange die Positionierung relativ genau ist.

@DeltaMikeAir
Okay habe mich durch meine Unwissenheit falsch ausgedrückt habe die ganze Befüllen der Panelstruktur deaktiviert da hier einige Schleifen durchlaufen werden

@NBerger
Sind Motion Achsen mit Telegramm 106 + 750 mit 4ms Takt. Wobei für den Test jetzt hab ich die Hardware aus den Projekt geworfen und alles in Simulation gesetzt (bei den TO Objekten).

Ich glaube das war dann auch zu viel mit den 4ms ich habe das mal auf 8ms (MC_Servo) gesetzt und jetzt steigt die Zykluszeit nur kurz auf 60ms.



Wenn mehr Zykluszeit gewünscht ist muss ich entweder das Programm optimieren oder eine neue 1515 einsetzten. Wobei ich denke mit 14 Achsen im maximal Ausbau wird mir auch die Programmoptimierung nichts nützen mit 4ms Sendetakt.
 
Habe mir das mal im Detail anschaut es handelt sich um insgesamt 411 Variablen (also mit Arrays). 150 Vairablen werden im Zyklich erfasst 100ms , 25 Variablen werden mit 500ms erfasst und der Rest mi 1s. Nur die Fehlerwörter werden kontinuierlich erfasst.
150 Variablen zyklisch Fortlaufend mit 100ms ist schon viel... wofür brauchst Du die denn? Dann noch die ganzen Arrays... und in Verbindung mit ner kleinen gewünschten SPS-Zykluszeit... Naja schon grenzwertig, bzw. das geht nicht von selbst sondern benötigt Optimierung an diversen Stellen (Panel und SPS)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
die sind für die Fehlermeldung und für die Materialverfolgung.

Die Auslegung für die 15150 war mit Siemens abgestimmt hat aber im Vorfeld gesagt das mit 4ms Motion es etwas knapp werden könnte. Wie immer sind später die Anforderung gestiegen besonders mit der Material Verfolgung.

Brauchen Arrays mehr Kommunikationslast?

Werde mir das aber dank eurer Hilfe nochmals genauer anschauen und hoffentlich etwas optimieren.
 
Brauchen Arrays mehr Kommunikationslast?
Bei den Arrays wars glaub so, dass das Panel dann, auch wenn nur eine Variable im Bild benötigt wird, das ganze Array übertragen wird!
Besonderheiten
Auf Bediengeräten sowie in RT Advanced werden bei Zugriff auf ein Element eines skalaren Arrays (mit Ausnahme von Arrays von String/WString) immer alle Arrayelemente auf einmal von der Steuerung gelesen oder geschrieben.

Bei RT Professional werden die Arrayelemente immer einzeln von und zur Steuerung gelesen und geschrieben.

Beispiel zu den Bediengeräten und RT Advanced:
Eine Arrayvariable mit 100 Arrayelementen vom Datentyp "Real" ist projektiert.
Wenn sich ein 4 Bytes großes Arrayelement ändert, werden 100 x 4 Bytes in die Steuerung geschrieben.

Warnung
Erhöhte Systemauslastung und Performanceeinbußen
Aufgrund der gleichzeitigen Übertragung aller Arrayelemente eines skalaren Arrays dauert speziell das Schreiben zur Steuerung bei Zugriff auf ein Element eines größeren Arrays länger als das Schreiben einer Variablen mit gleichem Datentyp. Berücksichtigen Sie dies bei der Auslegung der Kommunikation.
Beachten Sie auch, dass bei skalaren Arrays das Lesen von ganzen Arrayvariablen von der Steuerung in der Regel schneller ist als die Summe der Lesezugriffe auf die gleiche Anzahl von elementaren Variablen des gleichen Datentyps.

Vorsicht
Dateninkonsistenz bei Arrayvariablen
Wenn in einer skalaren Arrayvariablen der Wert eines einzelnen Elements geändert werden soll, wird das gesamte Array gelesen, geändert und als vollständiges Array wieder zurückgeschrieben. Änderungen an anderen Arrayelementen, die zwischenzeitlich in der Steuerung vorgenommen werden, werden beim Zurückschreiben überschrieben.
Achten Sie darauf, dass unterschiedliche Stellen, z. B. Bediengerät und Steuerung, nicht zur selben Zeit Werte in dieselbe Arrayvariable schreiben. Um die Arrayvariable mit der Steuerung zu synchronisieren, benutzen Sie z. B. die synchrone Übertragung von Rezepturdatensätzen.
Hinweis

Arrayvariablen als Listeneintrag von Multiplexvariablen
Arrayvariablen des Datentyps Char oder WChar können wie Variablen des Datentyps String verwendet werden.
Die Verwendung einer Arrayvariablen des Datentyps Char oder WChar als Listeneintrag einer Multiplexvariablen im Editor "HMI-Variablen" wird aber nicht unterstützt.

Verwendung in Skripten
Um die Performance zu erhalten, verwenden Sie in Skripten zum Ändern von skalaren Arrays immer interne Arrays.
Am Anfang des Skripts kopieren Sie das PLC-Array in das interne Array.
Während das interne Array durch das Skript bearbeitet wird, belasten Sie dadurch nicht die Kommunikation zur Steuerung.
kommt drauf an, wenn Du wirklich zyklisch fortlaufend alle Variablen brauchst, ist Array schneller als alle Variablen einzeln zu holen.. Wenn Du aber nur 1 Variable in dem grad geöffneten Bild brauchst, wird das komplette Arrray geholt, ist dann x-fach langsamer...
 
Zuletzt bearbeitet:
die sind für die Fehlermeldung und für die Materialverfolgung.
keine Ahnung, wie Du im Visubild erkennen willst, wenn sich irgendwas in 100ms ändert. 500ms sind da eigentlich genug... Man sollte sich auch mal überlegen, wofür so ein Panel in der Praxis eigentlich da ist, und die ganzen bunten Superschreibtischideen mal weglassen ;)

Was für ein Panel wird das denn wirklich? Ich würd die Tests auch mit dem originalen Panel machen und nicht mit der Simulation. Simulation hat da grad was Timing und Zykluszeit angeht, wenig Aussagekraft.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
keine Ahnung, wie Du im Visubild erkennen willst, wenn sich irgendwas in 100ms ändert. 500ms sind da eigentlich genug...
100ms Variablenaktualisierung macht ja vielleicht bei einer "schnellen" Kurvenanzeige Sinn aber bei Fehlermeldungen....
Bei Fehlermeldungen kann man sich ja mal überlegen, ob nicht 500ms oder 1s auch ausreichend wären.
 
Fehlermeldung also für das Meldeystem z.B. Not-Aus werden 1s abgefragt aber zyklisch fortlaufend

Die Fehler gehören zu Materialverfolgung wenn was nicht in Ordnung ist aber dann nur wenn man auf dem Bild ist.


Ich werde mir das nochmal alles anschauen für meinen Teil. Die Materialverfolung wurde von ein Kollegen erstellt und werde mit diesen nochmals sprechen. Aber die schnelle Abfrage hilft den Inbetriebnehmer und am Anfang den Kunden. Früher war auch die Materialverfolgung in einer separaten SPS

Nochmals Danke für die Hilfe
 
Letztlich ist das Ganze eine ziemliche Unverschämtheit von Siemens.
Sie verkaufen nicht gerade billige CPUs und sind dann weniger leistungsfähig als ein 100€ Raspberry 4.
Es wird immer mehr Funktionalität reingepackt (OPC-UA, Verschlüsselung, …) aber die bisherigen CPUs sind kaum geeignet. Empfehlung des Support bisher: „Nehmen Sie halt eine 1518“.
Bin gespannt, wie die neuen Multicore-CPUs sind.
 
Zurück
Oben