Zykluszeit berechnen

MSB

Level-3
Beiträge
7.185
Reaktionspunkte
1.647
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich mache gerade eine kleine Fortbildung (Meisterkurs), diese beinhaltet unter anderem den SPS-Techniker nach VDMA ...

Heute waren FB's mit Multiinstanzen und son Zeuch dran ... funktionell habe ich damit ja keinerlei Problem.

Nur dann gings an den Faktor Zykluszeit bei der Art von Programmierung.
Mir ist prinzipiell klar das FB's und hier insbesondere Multiinstanz-FB's mit den ganzen "internen" AR-Schieberei
prinzipiell länger brauchen als konventionell programmierte Bausteine, soll in dem Fall aber egal sein.

Lange Rede, wenig Sinn, der Lehrer meinte:
Die Zykluszeit beim Aufruf von FB's als Multiinstanz errechnet sich wie folgt:
Größe Byte MutterFB/2 * Zykluszeit/Wortoperation
+
Größe Byte Multinstanz-FB/2 * Zykluszeit/Wortoperation * Anzahl Aufrufe

Vorraussetzung natürlich, das im FB nichts bedingtes steht.

Gibts da irgend einen Zusammenhang der mir bisher so nicht klar war,
oder ist das ganze (meine Meinung) Blödsinn, der maximal durch Zufall stimmt?
Wollte hier nur mal andere Meinungen hören, im Idealfall werden daraus ja neue Erkenntnisse.

Mfg
Manuel
 
Zykluszeit


  1. Bestimmen Sie mithilfe der Operationsliste die Laufzeit des Anwenderprogramms.
  2. Berechnen und addieren Sie die Transferzeit für das Prozessabbild. Richtwerte dazu finden Sie in Tabelle 9.3 "Anteile der Prozessabbild-Transferzeit".
  3. Addieren Sie dazu die Bearbeitungszeit im Zykluskontrollpunkt. Richtwerte dazu finden Sie in Tabelle 9.4 "Betriebssystembearbeitungszeit im Zykluskontrollpunkt".
Als Ergebnis erhalten Sie nun die Zykluszeit.

alles andere ist IMHO dummes gewäsch ... vielleicht kann man glück haben, dass die mittlere word-befehl-bearbeitungszeit in abhängigkeit mit der bausteingröße ZUFÄLLIG einen ähnlichen wert ergibt, aber weder logisch noch esoterisch ist das nachvollziehbar...
die operationsliste unterscheidet übrigens nicht zwischen multiinstanz und "normalem" bausteinaufruf ... das beste an der stelle wäre sich mal den MC7-code für einen multiinstanzbaustein anzusehen und mit einem anderen zu vergleichen, dann kann man in etwa eine aussage treffen, welche gravierenden unterschiede entstehen. (diese dürften aber recht gering sein)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
...
Lange Rede, wenig Sinn, der Lehrer meinte:
Die Zykluszeit beim Aufruf von FB's als Multiinstanz errechnet sich wie folgt:
Größe Byte MutterFB/2 * Zykluszeit/Wortoperation
+
Größe Byte Multinstanz-FB/2 * Zykluszeit/Wortoperation * Anzahl Aufrufe
...
wie so oft in der Schule handelt es sich hierbei um eine stark vereinfachte Darstellung eines Sachverhaltes, der sich selbstverständlich auch facettenreicher betrachten lässt.
 
Ich habe in 14 Jahren Automatisierungstechnik noch nie eine Zykluszeitberechnung,- abschätzung, oder so durchgeführt.
Über den Daumen peilen, was man an CPU braucht und los.
Zwei mal ist es passiert, daß die CPUs getauscht werden mußten.
Das eine mal, als statt einer 115-945 eine 315 genommen wurde:rolleyes:.
Das war 1999, beim ersten S7-Projekt in der Firma.
Und dieses Jahr 315er gegen Vipa-Speed7, weil ich in Graph programmiert hatte, was bei der Hardwareprojektierung, die ohne mich stattfand, noch nicht bekannt war.
 
@derwestermann
Ich gebe dir ja zu 100% recht, auch wenn es mit dem Thema eigentlich nichts zu tun hat ...
In der Praxis hat mich das bisher auch noch nicht so wirklich interessiert,
bzw. die CPU wird grob geschätzt, und zu 99% haut das dann auch so hin.

Ein weiterer Splien des Lehrers sind das man nur max 10ms Zykluszeit haben sollte,
weil das in etwa auch der Anzugsgeschwindigkeit von Schützen entspricht.
Ich sage dann nur immer, das bei vielen Anlagen auch 200ms Zykluszeit keinem auffallen würden,
bei wieder anderen Sachen sind auch die 10ms gravierend zu langsam.
Ich schätze mal der Kollege Perfektionist wird davon ein Liedchen singen können.

Wie gesagt die "normale" Berechnung über die div. Befehlsausführungszeiten ist ja bekannt,
zumindestens theoretisch.
Allerdings hat man bei einem FB selbst bei einem simplen Lade Transferiere, oder Verknüpfung,
ja deutlich mehr an Befehlen im effektiven MC7-Code als die die man eigentlich sieht ...
Insofern hat sich das ganze spätestens ab dem Zeitpunkt erledigt.

Mfg
Manuel
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ein weiterer Splien des Lehrers sind das man nur max 10ms Zykluszeit haben sollte,
weil das in etwa auch der Anzugsgeschwindigkeit von Schützen entspricht.
Ich sage dann nur immer, das bei vielen Anlagen auch 200ms Zykluszeit keinem auffallen würden,
bei wieder anderen Sachen sind auch die 10ms gravierend zu langsam.
Ich schätze mal der Kollege Perfektionist wird davon ein Liedchen singen können.

Das mit den 10ms soll er dann mal an Siemens weiter sagen!
Evtl spendieren sie dann den Steureungen mal wieder neue CPU's :ROFLMAO:
Da sieht man mal wieder wie weit die Lehrer von der Realität wech sind ...


Wie gesagt die "normale" Berechnung über die div. Befehlsausführungszeiten ist ja bekannt,
zumindestens theoretisch.
Allerdings hat man bei einem FB selbst bei einem simplen Lade Transferiere, oder Verknüpfung,
ja deutlich mehr an Befehlen im effektiven MC7-Code als die die man eigentlich sieht ...
Insofern hat sich das ganze spätestens ab dem Zeitpunkt erledigt.

Ob bei der Berechnung auch die Daten des Instanz-DB's berechnet wurden :confused:
Die Zeiten welche der Hersteller angibt sind ja die Zeiten für die Codierten Befehle! D.h. Ausführungszeiten im übersetzten Code.
Sieht man z.B. an den Unterschieden bei Operationen an DB's!
Da gibts Unterschiede zwischen z.B.

S DBxx.DBXy.y

und

A DBxx
S DBXy.y
 
So als Schüler soll man ja auch mal Fragen stellen können.
Dein Lehrer soll Euch mal die Bearbeitungszeit eines SCL-, Graph-, oder HiGraph-Bausteines vorrechnen.
*ROFL*
 
@Boxy
Wobei das ja noch allgemein und nachvollziehbar ist, wobei dein Beispiel exakt dasselbe ist, und exakt gleich lang braucht,
was ich meinte ist z.B. folgendes (siehe Bildchen im Anhang), vor allem "Netzwerk 2" mit der IN_OUT Variable ist sehr "aufschlussreich", die Var ist deklariert als ARRAY[0..99] OF INT ...

Mfg
Manuel
 

Anhänge

  • Code_Anwendersicht.jpg
    Code_Anwendersicht.jpg
    39,3 KB · Aufrufe: 52
  • Code_MC7.jpg
    Code_MC7.jpg
    50,9 KB · Aufrufe: 59
Zurück
Oben