Step 7 Ermittlung der Abarbeitungszeit eines Bausteins bei S7 Steuerung

Sevenbust

Level-1
Beiträge
2
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich habe hier eine Maschine mit einer S7-317 CPU. Das Programm dieser CPU wird grossteils über einen FB Abgearbeitet der alle 20 ms durch den OB 35 aufgerufen wird.
Es werden in diesem FB 120 FC´s teileweise unter FB´s. Ich habe momentan die Vermutung dass die CPU es nicht immer schafft in den 20 ms alle Baustein abzuarbeiten.
Die Zykluszeitanzeige der CPU schwankt zwischen 40 und 60ms. Allerdings denke ich dass hier die Abarbeitung des OB 1 noch mit Ermittelt wird. Deshalb möchte ich die reine Abarbeitungszeit des vom OB 35 aufgerufenen FB´s ermitteln.

Gibt es eine Möglichkeit das zu erreichen. Evtl. auch mit durch Programmänderung mit Zählern o. ä. oder bietet S7 schon eine Möglichkeit?


Gruss und vielen Dank.
 
SFC64 TIME_TCK am Anfang und am Ende des OB aufrufen und die Zeiten subtrahieren.

Hast Du denn Einträge im Diagnosepuffer daß sich die OB35-Aufrufe "gestaut" haben?
Außerdem wird (glaube ich) in dem Fall der OB85 aufgerufen oder CPU-Stop.
Korrektur: der Zeitfehler-OB OB80 wird aufgerufen

Harald
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo PN/DP,

ja ich habe im Diagnosepuffer Meldungen vom OB 35, es wird dann der OB 80 aufgerufen. In diesem ist aber nichts programmiert. Allerdings ist er vorhanden somit passiert nichts.
Aber das mit dem SFC 64 wusste ich nicht. Werde es ausprobieren.

Danke.
 
Für die Fragestellung (Vermutung dass die CPU es nicht immer schafft in den 20 ms alle Baustein abzuarbeiten) ist es am einfachsten im OB80 eine Reaktion zu programmieren, falls er wg. OB35-Überlauf aufgerufen wird.

Die Zeitmessung mit TIME_TCK würde die Laufzeit des OBs incl. dessen Unterbrechungen messen. Selbst wenn er unterhalb 20 ms bliebe, könnte es zu Überläufen kommen, etwa wenn er zeitweise ausgesperrt würde, z.B. durch Aufrufe von DIS_AIRT oder auch durch systeminterne Vorgänge, die gewisse Sperren mit sich bringen.
 
Was passiert nicht?

.. es wird dann der OB 80 aufgerufen. In diesem ist aber nichts programmiert. Allerdings ist er vorhanden somit passiert nichts...
Jaja, nur keinen CPU-Stopp verursachen, könnte ja peinlich sein ;) .

Man sollte sich eigentlich fragen: "Was passiert nicht?" . Diese Frage kann ich allerdings auch nicht beantworten. Wird der OB dennoch abgearbeitet, mit längerer Zykluszeit? Oder wird mitten drin abgebrochen? Letzteres wäre wohl fatal. Und wie muß man eigentlich den Hinweis aus der Online-Hilfe verstehen?

..Hinweis:
Wenn der OB 80 in demselben Zyklus zweimal aufgrund der Zykluszeitüberschreitung aufgerufen wird, geht die CPU in STOP...

Wirklich erst dann? Das würde mich mal wirklich brennend interessieren, hatte diesen Hinweis bisher nie wahr genommen.

Die Zykluszeit-Kontrolle mit der SFC64 ist auch bei mir fester Bestandteil des OB35.


Gruß, Onkel


Nachtrag:
Ohne OB80 geht die CPU sofort bei Zyklusüberschreitung in Stopp, und mit dem OB80 erst nach zweimaliger Zyklusüberschreitung, falls explizit nichts anderes programmiert ist? Das würde Sinn machen.
 
Zuletzt bearbeitet:
Zurück
Oben