Zeitfresser finden

mailmir

Level-1
Beiträge
75
Reaktionspunkte
3
Hallo zusammen,
Ich bin bei der Optimierung meiner Beckhoff-Software auf der Suche nach "Zeitfressern"
Mein Musterprojekt hat (ohne Klemmenkommunikation) derzeit gut 4 ms (Lüftung und Heizung)
Kennt jemand eine Möglichkeit für die einzelnen Programmteile eine "Zeitmessung" zu integrieren um weitere Optimierungen vorzunehmen?

DANKE für eure Rückmeldung und schöne Sonntag noch.
 
Ich bin bei der Optimierung meiner Beckhoff-Software auf der Suche nach "Zeitfressern"
:unsure: Bei der Optimierung Deiner Software?
Wie willst Du denn reagieren, wenn Du einen Zeitfresser identifiziert hast? Genauer hingucken, ob der Programmierer (Du!) geschlampt hat?
Irgendwie hat man doch beim Programmieren ein Gefühl dafür, wo sich die Zeitfresser befinden.

Wenn Du bei der Optimierung einer Software, die Du (noch) nicht gut kennst, auf die Idee kämst, eine ZeitfresserSuchFunktion zu implementieren, könnte ich Dir noch so einigermassen folgen.
Was machst Du denn in Deiner Software und in welcher Sprache programmierst Du?
ProgrammSchleifen stehen sicherlich ganz oben auf der Liste der ZeitfressVerdächtigen. Verwendest Du ProgrammSchleifen?
Hast Du damit zu kämpfen, dass die ZyklusZeit "sporadisch" in die Höhe geht - oder regelmässig in jedem Zyklus zu hoch liegt?
Verwendest Du häufig "vorgefertigte" FCs/FBs, bei denen Du nicht sehen/abschätzen kannst, was intern abläuft?
Könnte es sein, dass einige davon als "eierlegende Wollmilchsau" konzipiert sind und Du nur ein Minimum der Möglichkeiten nutzt, will sagen, dass Du unnötig viel Ballast mitschleppst?

Wenn die Zeiten, die Du messen willst, sehr klein sind, wäre es naheliegend, die zu testende BefehlsFolge in einer Schleife zig-mal zu wiederholen. Aber bei einem zyklischen Programm dürfte dieses Verfahren wohl eher ungeeignet sein bzw. zu unerwünschten Folgen bei der Funktionalität des Codes führen.
 
Ich könnte mir vorstellen das Du Baustein für Baustein überprüfst. Vor dem Baustein einmal die Zeit aufnehmen, nach dem Baustein die Zeit
aufnehmen und die Differenz ausrechnen. Dann weißt Du wie lange dieser eine Baustein gebraucht hat.
So mache ich es in einigen S7-Steuerungen, jeweils mit verschiedenen Mitteln.
Aber da Du die Beckhoff programmiert hast wirst Du sicherlich den Weg bzw. die Anweisungen wissen die Du dafür nutzen kannst.
 
Hoi Heinileini (interessanter Name)

ja, bei der Optimierung MEINER Software. Es geht doch immer besser, oder? Und ich lerne gerne dazu wie ich mich selbst verbessern kann :cool:

Zu deinen Fragen:
diese kann ich (pauschal, mehr oder weniger) alle mit "Ja" beantworten.

Es handelt sich um Applikationssoftware für Beckhoff-SPS. Hier bin ich eher ein Feind der "Eierlegenden Wollmilchsau" **hahaha**
Es geht also nicht darum das ich derzeit ein akutes Zeitproblem habe, es geht um's lernen und selbst verbessern.
 
- Was machst Du denn in Deiner Software und in welcher Sprache programmierst Du?
- Verwendest Du ProgrammSchleifen?
- Hast Du damit zu kämpfen, dass die ZyklusZeit "sporadisch" in die Höhe geht - oder regelmässig in jedem Zyklus zu hoch liegt?
- Verwendest Du häufig "vorgefertigte" FCs/FBs, bei denen Du nicht sehen/abschätzen kannst, was intern abläuft?
- Könnte es sein, dass einige davon als "eierlegende Wollmilchsau" konzipiert sind und Du nur ein Minimum der Möglichkeiten nutzt, will sagen, dass Du unnötig viel Ballast mitschleppst?
Zu deinen Fragen:
diese kann ich (pauschal, mehr oder weniger) alle mit "Ja" beantworten.
:unsure: Ach so.
 
Hoi Martain,

warum Glaskugel?

Heinileini: Genauer hingucken, ob der Programmierer (Du!) geschlampt hat?
Antwort: JA, nicht unbedingt geschlampt, aber besser machen könnte.

Heinileini: Verwendest Du ProgrammSchleifen?
Antwort: JA, ich verwende Programmschleifen für initialisierungen (einmalig beim Start)

Heinileini: Verwendest Du häufig "vorgefertigte" FCs/FBs, bei denen Du nicht sehen/abschätzen kannst, was intern abläuft?
Antwort: JA, Bibliotheken vom Hersteller (Beckhoff)

Heinileini: Was machst Du denn in Deiner Software und in welcher Sprache programmierst Du?
Antwort: Applikation für eine Heizungs-/Lüftungssteuerung

Heinileini: . . . . Frage nach der Eierlegenden Wollmilchsau
Antwort: Nein

Martain: 4ms = Zycluszeit?
Antwort: Nein, die ist 20ms, 4 ms braucht die Applikation derzeit. Wenn dann noch die Kommunikation mit den Ein-/Ausgangsklemmen dazu kommt wird die Zeit natürlich höher sein.
 
In der Utility-Bibliothek gibt es den "Profiler" Baustein. Eine Instanz musst du 2x, quasi als Klammer um den interesssanten Code herum aufrufen.
Du erhälst dann die Min/Max und Average Zeit des Codes zwischen den Aufrufen..

Irgendwann (ich warte da schon eine ganze Weile darauf und hoffe auf die 4026, also in ca 1/2 Jahr) soll es dann eine (kostenpflichtige) Function TE1210 geben die per Click mir diese Werte für alle Bausteine/Aufrufhierarchien oder so herausgeben soll.

Guga
 
@KLM. Beckhoff nutzt zwar den CodeSys PLC-Anteil hat aber eine eigene Runtime.
Also anders als mit Wago/Schneider Electric... die komplett 3S nutzen.
Das Profiler AddOn von 3S wird mit Beckhoff nicht funktionieren. Das Beckhoff Equivalent ist dann die TE1210.
 
@KLM. Beckhoff nutzt zwar den CodeSys PLC-Anteil hat aber eine eigene Runtime.
Also anders als mit Wago/Schneider Electric... die komplett 3S nutzen.
Das Profiler AddOn von 3S wird mit Beckhoff nicht funktionieren. Das Beckhoff Equivalent ist dann die TE1210.
Rein Interessehalber, hat Beckhoff wirklich eine komplett selbst Entwickelte Runtime oder haben die die Codesys Runtime angepasst?
 
Rein Interessehalber, hat Beckhoff wirklich eine komplett selbst Entwickelte Runtime oder haben die die Codesys Runtime angepasst?
Beckhoff hat es komplett selbst entwickelt. TwinCat 3 war früher im VisualStudio implementiert. Jetzt kannst du auch die eigene Entwicklungsumgebung ohne VisualStudio installieren

@Zeitfresser
DANKE für alle Antworten. Es gibt viel zu tun / testen.
 
Beckhoff hat es komplett selbst entwickelt. TwinCat 3 war früher im VisualStudio implementiert. Jetzt kannst du auch die eigene Entwicklungsumgebung ohne VisualStudio installieren
Es ist auch weiterhin in VS integriert, die XAE Shell ist die Visual Studio Shell, was beim Start auch zu lesen ist.
Die Runtime mag eine komplette Eigenentwicklung sein, was ja meine Frage war, aber bei der Entwicklungsumgebung ist noch einiges von 3S (Jetzt Codesys) dabei.
 
Zurück
Oben