SPS-Neustart ist doch egal...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?
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.
Kommunikation belastet die bisherigen kleineren CPUs extrem.
Am besten - falls du eine bekommst - auf eine CPU der neuen Generation umsteigen.
Was meinst du eigentlich mit "Bausteine die mit dem Panel kommunizieren"?Ich habe auch alle Bausteine die mit den Panel Kommunizieren deaktiviert
dann ist die "alte" 1515 nicht wirklich "schnelller" als die "alte" 1513!@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.
Sind das Motion Control Achsen?Die Zykluszeit ist relativ hoch weil hier 8 Technologie Objekte als Positionierer im Programm sind.
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)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.
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!
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...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.
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 weglassendie sind für die Fehlermeldung und für die Materialverfolgung.
100ms Variablenaktualisierung macht ja vielleicht bei einer "schnellen" Kurvenanzeige Sinn aber bei Fehlermeldungen....keine Ahnung, wie Du im Visubild erkennen willst, wenn sich irgendwas in 100ms ändert. 500ms sind da eigentlich genug...
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?