Abarbeitung FOR Schleife (Zykluszeit)

mike_roh_soft

Level-1
Beiträge
191
Reaktionspunkte
11
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Leute,

ich steh grad aufm Schlauch...

Könnt ihr mir sagen wir folgender Code abgearbeitet wird?

Code:
bFirstCycle := TRUE;

clkImpulse(PT:= t#5s, Q=> ); //Alle 5 Sek einen Impuls

        IF    clkImpulse.Q
               OR bFirstCycle     THEN

            FOR usintSchleifenzaehler :=1 TO 100 BY 1 DO
                
                   Anweisungen;

            END_FOR;

           bFirstCycle := FALSE;

        END_IF;

Wird bFirstCycle erst nach zurückgesetzt wenn usintSchleifenzaehler = 100 ist oder schon bei usintSchleifenzaehler =2 ??

Also wenn erst bei 100 würde sich das auf die Zykluszeit auswirken, oder?
Wenn bei 2 dann verstehe ich nicht genau wie die SPS "denkt" ?!?!

Gruß Mike
 
Die FOR-Schleife wird 100mal aufgerufen, erst dann wird die Schleife verlassen.

Das mit der Zykluszeit ist eine gute Frage, je nach dem was deine Anweisung macht...

Hatte auch schon Probleme, aber die waren selbsgemacht (36'000er FOR-Schleife mit grösseren Berechnungen)

Der Nachteil von For-Schleifen die nur azyklisch aufgerufen werden, besteht in der Gefahr, dass im 999'999'999en Fall bei grossen Programmen mehrere Schleifen im gleichen Zyklus aufgerufen werden, und eine Zykluszeitüberschreitung produzieren... (Die dann sehr schwer nachvollziehbar ist)

Zeige sonst mal deine Anweisung, denke aber bei 100 Schleifendurchläufen sollte das kein Problem sein...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi,

danke schon mal für die Hinweise...

Meine Anweisungen sind nicht der Rede wert... meine FOR-Schleife geht auch nur bis 20.
Ich wollte es einfach mal wissen... vielleicht teste ich das mal?!?!

Wer nicht fragt bleibt dumm :)

Gruß
 
Hi,

also ich habe das gerade mal getestet... hätte ich auch gleich machen können ;)

Habe einen Breakpoint auf die Zeile gesetzt:
Code:
bFirstCycle := FALSE;
Und als die SPS gestoppt hatte ware der Index der FOR-Schleife bei 101.
D.h. es wird tatsächlich zuerst die Schleife komplett durchgeackert und dann geht es im Ablauf weiter!

Gruß
 
Ja das wirst du nicht so einfach Testen können :)

Aber versuchsmal, würde mich auch interessieren!

String-Operationen, Datenstrukturen hin und her kopieren und Berechnungen mit REAL/LREAL heizen der SPS ein...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Verschachtelte Schleife!
Gibt nix besseres um eine SPS in die Knie zu zwingen!

Ansonsten lachen moderne SPSen eigentlich nur müde über die Auslastung durch die Programme die auf ihnen laufen. Ich glaube das beste was ich je hinbekommen habe waren 40% Echtzeitauslastung bei einer BX8000 die 30 Achsen Regeln musste.
Meine jetzige CX9000 dümpelt trotz mehrer Sortieralgorithmen (Array umhergeschiebe der übelsten Sorte) nur um die 7% Auslastung herum....
 
Hmmm...
also da ich ne Visu programmiere mache ich viel mit Strings und Datumsformaten rum. Was das einzige ist was Anspruch haben könnte!

Habe nen CX9010 und der hat grad 18% Echtzeitauslastung...
Und daran hängen nur paar K-Bus Karten zur Gebäudeautomatisierung (Eigenheim).

Was ist eigentlich wenn man an die 100% Auslastung käme?
 
Die azyklische ADS-Kommunikation gehört nach meinem Verständnis nicht zur Echtzeit, sie würde unter einer hohen Echtzeitauslastung wohl am meisten leiden. Ich weiss allerdings nicht, ob Beckhoff ADS mit in die Auslastungsanzeige einbezieht.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Und als die SPS gestoppt hatte ware der Index der FOR-Schleife bei 101.
D.h. es wird tatsächlich zuerst die Schleife komplett durchgeackert und dann geht es im Ablauf weiter!
Ist nunmal so per Defintion. Hattest du was anderes erwartet?

Habe nen CX9010 und der hat grad 18% Echtzeitauslastung...
Und daran hängen nur paar K-Bus Karten zur Gebäudeautomatisierung (Eigenheim).
Mit welcher Zykluszeit?

Was ist eigentlich wenn man an die 100% Auslastung käme?
Bei über 100% wird der Zyklus nicht fertig. Dann gibt's Überschreitungen. Passiert das mehrfach und hintereinandern ist das schlecht für die Qualität zB einer Regelung. Außerdem findet das I/O-Update nicht statt. Feldbussignale werden nicht eingelesen oder ausgegeben. Irgendwann schlägt der Watchdog der Klemmen zu und die Signale fallen ab (ja nach Konfiguration) usw.
Die maximale Grenze sollte bei 80% bis 90% eingestellt sein, sonst käme die Windows-Ebenes (= Nicht-Echtzeit) nicht mehr zum Zuge und das Gerät wäre unbedienbar. Alles außerhalb des TwinCAT würde nicht funktionieren.
 
Zurück
Oben