B&R Zykluszeit ermitteln

Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
also auf die ursprüngliche Frage zurück.

Du musst in die physical View gehen und über das Kontextmenu den profiler starten.

Du kannst die Messung aber nur machen wenn das System läuft, also lass es in der 100 ms Taskklasse.

Nachdem du den Profiler geöffnet hast bekommst du eine neue Toolbar direkt über dem Fenster.
Mach in dieser Reihenfolge
- Konfiguration
- Installieren
- Starten (falls das nicht sogar automatisch nach dem Installieren passiert).
- die Aufzeichnung/Messung dauert ganz kurz
- dann kannst du die Daten laden.

Das sollte mit den Standard-Einstellungen funktionieren.

Du findest in den geladenen Daten deinen Task. Du findest dazu die Min- Max und Average Zeiten. Du findest Brutto - und Netto Zeiten. Netto Zeiten sind die echten Bearbeitungszeiten, Bruttozeiten berücksichtigen die Unterbrechungen durch die schnelleren Taskklassen (100 ms TK werden alle 10ms von der 10ms Taskklasse unterbrochen). Die Zeitberechnung wird in diesem Fall etwas kompliziert :).

Willst du im Programm selber was messen verwendest du meiner Meinung nach am Besten TIM_tick(), die Genauigkeit ist dabei aber nur 10ms, Mir fällts momentan nicht ein, aber ich dachte da gibts noch einen Zähler mit 1ms Auflösung, aber vielleicht täusche ich mich da. TIM_tick liefert einen Wert zw. 0...99, d.h. du musst einen Überlauf mit 100 berücksichtigen.

Genauer und sicherer ist der Profiler.

Hoffe das hilft
bg
bb
 
Hallo zusammen,

wenn man sich mit dem Profiler nicht auseinandersetzen will, kann man auch die Zeit einfach messen.
Am Beginn des Cyclic-Teils Start=UDINT(clock_ms())
Am Ende dann Dauer=UDINT(clock_ms())-Start

Start und Dauer sind UDINT. clock_ms() ist in der Bibliothek astime.
Dauer zeigt dann jeweils die Dauer des zyklischen Teils im ms an.
Will man das nicht ständig, kann es z.B. mit einer IF-Schleife getriggert werden.

Grüße
 
Zuviel Werbung?
-> Hier kostenlos registrieren
wenn man sich mit dem Profiler nicht auseinandersetzen will, kann man auch die Zeit einfach messen.
Am Beginn des Cyclic-Teils Start=UDINT(clock_ms())
Am Ende dann Dauer=UDINT(clock_ms())-Start

Ah ja, das ist das was mir nicht eingefallen ist.... ich war noch in der SG3 Welt unterwegs wie es aussieht....

bg
bb
 
Du brauchst eigentlich nur eine Profiler Konfiguration erstellen, diese auf der SPS installieren, starten, stoppen (wenn diese auf dauerhafte Aufzeichnung eingestellt ist) und hochladen.
Danach kannst du die Zeiten die deine einzelnen Tasks wirklich benötigen schön aus der Tabelle ablesen, oder aber auch Grafisch anzeigen lassen. Ein stoppen der Steuerung ist dabei nicht notwendig.
Siehe auch angehängte Screenshots.

lg.
Michi
 

Anhänge

  • 2013-11-28_01-56-50.png
    2013-11-28_01-56-50.png
    34,9 KB · Aufrufe: 10
  • 2013-11-28_01-57-35.jpg
    2013-11-28_01-57-35.jpg
    71,2 KB · Aufrufe: 10
  • 2013-11-28_01-53-08.jpg
    2013-11-28_01-53-08.jpg
    57,6 KB · Aufrufe: 9
Hey, danke für eure Antworten. Ich hab mir das auch schon so ungefähr gedacht, aber irgendwas schein ich trotz eurer super ANleitung noch falsch zu machen, denn die einzelnen Programme werden in der Grafik nicht angezeigt. Da fehlt doch auch dieses + vor Cyclic #4 in dem "Filter aufgezeichneter Objekte".
Kann es sein, dass es daran liegt dass ich im Servce Mode bin und das Programm kompiliert und übertragen habe?

Den anderen Vorschlag versuche ich jetzt gleich ;)

1.jpg2.jpg
 
Die SPS muss natürlich laufen (RUN) um die Durchlaufzeiten der Tasks messen zu können.
Hast du in der Konfiguration auch dien Benutzertasks aktiviert? Siehe Screenshot.
 

Anhänge

  • 2013-11-28_11-24-45.png
    2013-11-28_11-24-45.png
    27,4 KB · Aufrufe: 7
Danke Leute, ich hab den Dreh jetzt glaube raus :)
Wenn noch ne frage auftaucht, melde ich mich!
Ich weiß leider nicht woran es lag x(

Also großes danke erstmal ;)


Gesendet von meinem iPhone mit Tapatalk
 
Zurück
Oben