Zeitdauer für Befehle im OB35 messen/anzeigen

toto45

Level-1
Beiträge
65
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
eingestezt: S7-300 CPU 315

Hallo,
eine Frage.
Die Aufrufzeit des OB35 kann man einstellen. Mich würde interressieren wie man sehen kann wie lange der OB35 für die in ihm stehenden Befehle braucht. Gibt es da eine Möglichkeit dies zu messen bzw anzeigen zu lassen.
Nutze den OB35 praktisch als Taktgenerator indem ich ihn alle xx ms aufrufen lasse und darin gezählt wird. Bin jetzt bei 10ms(100Hz) würde gerne wissen wie weit ich noch runter gehen kann. Möchte aber einen gewissen Puffer als Sicherheit. Deshalb würde ich gerne wissen wie lange er braucht um die Befehle auszuführen.
 
Hallo,
es gibt für alle Step7-Befehle CPU-bezogen eine festgelegte Bearbeitungsdauer, die in einer Liste dokumentiert ist.
Damit würde ich ggf. mal arbeiten.

Gruß
Larry
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Speichere zum Start des OB35 mit Hilfe des SFC64 (TIME_TCK) die Startzeit und am Ende des OB35 mit einem erneuten Aufruf des SFC 64 die Endzeit und berechne Dir die Laufzeit!
 
Richtig, da es ne Systemfunktion ist, ist SIEMENS doch hoffentlich so verschwänderisch mit den Recourcen *ROFL*

Einfach das Ganze mal mit nem leeren OB35 und zwei SFC Zugriffen probieren!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
wenn man die CPU-Hardware munter laden kann, dann würde ich schrittweise solange die Aufrufzeit des OB35 verringern, bis im Diagnosepuffer ein Eintrag für eine OB80-Anforderung erscheint. Dann ist nämlich der Aufruftakt kürzer als die Dauer der Bearbeitung. Anschließend die Aufrufzeit um die Sicherheitsdauer x ms erhöhen - und fertich!

Zeitfehler-OB (OB 80)​
Beschreibung​
Das Betriebssystem der CPU ruft den OB 80 auf, wenn bei der Bearbeitung einesOB einer der folgenden Fehler auftritt: Überschreiten der Zykluszeit,Quittierungsfehler bei der Bearbeitung eines OB, Vorstellen der Uhrzeit(Uhrzeitsprung) zum Starten eines OB, Wiedereintritt in RUN nach CiR. Trittbeispielsweise ein Startereignis für einen Weckalarm-OB auf, bevor die vorherigeBearbeitung desselben OB beendet ist, dann ruft das Betriebssystem den OB 80auf.Wurde der OB 80 nicht programmiert, dann wechselt die CPU in den​
Betriebszustand STOP.

Die Methode ist zwar ein bisschen "Try and Error", sollte aber ohne großes Studium von Handbüchern oder langen Berechnungen funktionieren. ;)

Gruß Approx
 
Zuletzt bearbeitet:
Hallo,

wenn das mal so einfach wäre...
Die Methode mit dem TimeTick funktioniert nicht. Der Tick hat eine Darstellung von 1msec,
jedoch nicht zwangsläufig auch eine Auflösung von 1msec. (im PLCSIM) hat er zum Beispiel
eine Auflösung von 10msec.
Typische Befehlsausführungszeiten liegen (bei 315) ~ 0,1usec, der OB35 müsste also schon
10000 Befehle lang sein, damit er 1msec läuft!!!

Wenn messen, dann so: Code aus OB35 in einen FC kopieren.
Diesen FC in einer Schleife so 100 - 10000 (je nach Länge OB35) mal aufrufen, mit SFC64
vor der Schleife die Startzeit ermitteln sowie nach der Schleife Endzeit
ermitteln. Differenz / Aufrufe der Schleife = Laufzeit in ms.

mfg
Erdmann
 
Hallo,

wenn das mal so einfach wäre...
Die Methode mit dem TimeTick funktioniert nicht. Der Tick hat eine Darstellung von 1msec,
jedoch nicht zwangsläufig auch eine Auflösung von 1msec. (im PLCSIM) hat er zum Beispiel
eine Auflösung von 10msec.
Typische Befehlsausführungszeiten liegen (bei 315) ~ 0,1usec, der OB35 müsste also schon
10000 Befehle lang sein, damit er 1msec läuft!!!

Wenn messen, dann so: Code aus OB35 in einen FC kopieren.
Diesen FC in einer Schleife so 100 - 10000 (je nach Länge OB35) mal aufrufen, mit SFC64
vor der Schleife die Startzeit ermitteln sowie nach der Schleife Endzeit
ermitteln. Differenz / Aufrufe der Schleife = Laufzeit in ms.

mfg
Erdmann

Wenn man eine Speed7 basierende S7-Cpu hat, gibt es für solche Dinge den µs Ticker (misst auf µs genau und der SFB7 braucht ca. 1µs Laufzeit)
Die S7-400 hat für die OBs einen eigenen Baustein, der die OB-Laufzeit auch in µs anzeigt. (SFC 7 )

Die Messung innerhalb einer Schleife kann bei manchen CPU ziemlich nach hinten losgehen:
z.B. die 317-EK13 läuft durch die Caches in manchen Schleifen 3mal schneller als ohne Schleife.
Deswegen sollte in diesem Fall der Code ausreichend oft sequentiell hintereinander kommen um diesen
Effekt zu umgehen.
Die Angaben im SIEMENS Handbuch beschreiben im Allgemeinen aber den langsameren Fall.
 
Zurück
Oben