Step 7 Laufzeit eines FC bzw. FB loggen

Pico1184

Level-2
Beiträge
332
Reaktionspunkte
9
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

wir möchten an einer Anlage herausfinden warum die CPU eine ziemlich hohe Zykluszeit hat.
Ist es realistisch in jedem FB und FC am Bausteinanfang und Bausteinende einen TIME_TCK Aufruf durchzuführen und diese ermittelten Zeiten zu subtrahieren. Gibt das eine Zuverlässige Aussage über die Zykluszeit eines Bausteins. Wir möchten damit die Zeitbremse herausfinden.....

Grüsse Pico
 
Hallo Pico,
ich hatte auch mal das Problem, dass ich herausfinden musste was in meinem Programm wie lange dauert, allerdings hatte ich TwinCAT im Einsatz. Ich habe dafür sowohl die Systemzeit als auch die Ticks genutzt. Zusätzlich habe ich noch Zähler genutzt, die die Anzahl der Aufrufe eines FBs ermitteln. Damit konnte ich recht gut ermitteln, wer der Zeitfresser war.

Von irgendwas mit Internetzugang gesendet.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wenn es kein Problem ist, dass die Anlage auf Stopp geht. Einfach die Maximale Zykluszeit so weit herunterdrehen, bis diese auslöst. Dann müsste man doch in im Diagnosepuffer sehen, wo es passiert ist.
Hätte den Vorteil, dass man nicht in vielen Programmteilen die Rechnung einbauen muss.
Ansonsten müsste man wissen ob bei TIME_TCK die aktuelle Systemzeit beim abarbeiten des aktiven Schritts oder vom Zyklusbeginn ausgegeben wird.
Letzteres würde ja Verfäschungen anzeigen und kaum was nützen.
 
Wenn es kein Problem ist, dass die Anlage auf Stopp geht. Einfach die Maximale Zykluszeit so weit herunterdrehen, bis diese auslöst. Dann müsste man doch in im Diagnosepuffer sehen, wo es passiert ist.
Bringt wahrscheinlich nichts. Wenn du 5 FBs mit 5/5/5/50/5ms oder 5/50/5/5/5ms hast löst die Mindestbegrenzung in beiden Fällen bei 70ms aus.
Die Abbruchstelle liegt dann immer beim letzen FB.

Man könnte damit was finden wenn man sporadisch im Vergleich zum Normalzyklus eine extreme Erhöhen hat.
Da wäre man aber bei min. doppelt so lang wie Normalzyklus damit man definitiv sagen kann dass die Unterbrechungsstelle im betroffenen Baustein ist.

@Pico: Ist die Zykluszeit konstant zu hoch?

Ansonsten müsste man wissen ob bei TIME_TCK die aktuelle Systemzeit beim abarbeiten des aktiven Schritts oder vom Zyklusbeginn ausgegeben wird.
Letzteres würde ja Verfäschungen anzeigen und kaum was nützen.
SFC64 arbeitet unabhängig vom Zyklus und würde gehen. Ich würde es auch so machen.

Ich würde jedoch zunächst versuchen das Programm am Simulator oder auf ner Test-CPU laufen zu lassen, wenn's ein generelles Problem ist kann man (auch wenn die Zykluszeiten mit ner realen CPU nicht zusammenpassen) zumindest sehen welcher Teil am meisten braucht. Und im Simulator/Test-CPU kannst du Baustein-aufrufe einfach rausstreichen.

An der laufenden Anlage würd ich's wie gesagt mit SFC64 machen.
 
@Pico: Ist die Zykluszeit konstant zu hoch?

Die Zykluszeit schwankt zwischen 30msec und geht zeitweise hoch bis 60msec.
Es erfolgen in einigen Bausteinen direkte Zugriffe aufs PA und PE um Daten eines Aktors auszulesen.

Wenn es kein Problem ist, dass die Anlage auf Stopp geht.

Die Anlage darf auf keinen Fall auf Stop gehen, daher muss ich es jetzt zuerst mal mit dem Time_Tck probieren.......
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Zykluszeitschwankungen können auch durch Kommunikationslast verursacht sein. Auf wieviel Prozent hast Du denn die Begrenzung der Kommunikationslast eingestellt? Kannst Du diesen Wert evtl. kleiner einstellen?

P.S.: Um welche CPU geht es hier eigentlich? Gibt es im Programm nur den OB1 oder auch andere? Falls ja, welche Last verursachen diese?
 
Ist es realistisch in jedem FB und FC am Bausteinanfang und Bausteinende einen TIME_TCK Aufruf durchzuführen und diese ermittelten Zeiten zu subtrahieren.

Wenn die Bausteinbearbeitung durch höherpriorisierte OBs unterbrochen wird, kannst Du daran nichts erkennen.

Also wie Du auch schon a den anderen Beiträgen siehst, so einfach ist das alles nicht.

Du wirst nicht drum herum kommen, mit Sachverstand das Programm zu analysieren und evtl. Ursachen zu ermitteln. Das kannst aber schon auch in Step7/PLCSIM oder ner Test-CPU machen.

Was ist das denn für ne Anlage und welche CPU und sonstige Infos?

In der Prozessautomatisierung (z.B. PCS7 mit S7-400) sind Zykluszeiten in dem Bereich keine Seltenheit, u.A. läuft auch eh viel in Weckalarmen so dass die Zykluszeit vom OB1 so gut wie keine Rolle spielt. In anderen Brachen/Programmierstilen siehts je nach Aufgabe sicherlich anders aus.

Also für weitere konkrete Hilfe bräuchte man schon konkretere Infos, für den Anfang schonmal über die verwendeten OBs usw.

Gruß.
 
Zurück
Oben