CYCLE_TIME
Einleitung
Der Funktionsblock CYCLE_TIME dient zur Berechnung der verstrichenen Zeit zwischen zwei aufeinanderfolgenden Aufrufen. Er ist ein nützliches Werkzeug zur Überwachung und Diagnose von Zykluszeiten in Echtzeitanwendungen, beispielsweise zur Leistungsanalyse oder zur Erkennung von unerwarteten Verzögerungen in einem Steuerungssystem.
Schnittstellenstruktur
Ereignis-Eingänge
REQ: Startet die Berechnung der Zykluszeit. Bei diesem Ereignis wird der Algorithmus ausgeführt.
Ereignis-Ausgänge
CNF: Wird ausgelöst, sobald die Berechnung abgeschlossen ist. Dieses Ereignis bestätigt die Ausführung und liefert die berechneten Werte an die Datenausgänge.
Daten-Eingänge
TM (DINT): Stellt den aktuellen Zeitstempel zum Zeitpunkt des Aufrufs bereit. Dieser Wert wird typischerweise von einer Systemuhr oder einem Timer-Baustein geliefert. Initialwert ist
0.
Daten-Ausgänge
CYCLE (DINT): Enthält die berechnete Zykluszeit, also die Differenz zwischen dem aktuellen (
TM) und dem vorherigen Zeitstempel (LAST). Initialwert ist0.LAST (DINT): Speichert den Zeitstempel des letzten Aufrufs (
TM). Dieser Wert wird für die nächste Berechnung verwendet. Initialwert ist0.
Adapter
Dieser Funktionsblock verfügt über keine Adapterschnittstellen.
Funktionsweise
Bei jedem Eintreffen des REQ-Ereignisses wird der zugehörige Algorithmus REQ ausgeführt. Dieser Algorithmus führt zwei wesentliche Operationen durch:
Berechnung der Zykluszeit: Die Differenz zwischen dem neu eingehenden Zeitwert
TMund dem gespeicherten WertLAST(vom vorherigen Aufruf) wird berechnet und an den AusgangCYCLEausgegeben.Aktualisierung des Zeitstempels: Der aktuelle Eingangswert
TMwird im internen SpeicherLASTfür den nächsten Berechnungszyklus gesichert.
Unmittelbar nach der Ausführung des Algorithmus wird das CNF-Ereignis mit den aktualisierten Werten an CYCLE und LAST ausgelöst.
Technische Besonderheiten
Der Baustein ist ein Simple Function Block (Basic FB) gemäß IEC 61499.
Die verwendeten Datentypen (
DINT) sind vorzeichenbehaftete 32-Bit-Integer, die für die Darstellung großer Zeitwerte (z.B. in Millisekunden oder Mikrosekunden) geeignet sind.Die Initialwerte von
TM,CYCLEundLASTsind auf0gesetzt. Der erste gültigeCYCLE-Wert nach dem Start ergibt sich daher aus der DifferenzTM - 0. Dies sollte bei der Initialisierungslogik der Anwendung berücksichtigt werden.
Zustandsübersicht
Der Baustein besitzt einen einzigen Execution Control State (EC-State) mit dem Namen REQ. Bei Eintritt in diesen Zustand wird stets der Algorithmus REQ ausgeführt und anschließend das CNF-Ereignis produziert.
Anwendungsszenarien
Zykluszeitüberwachung: Kontinuierliche Messung der Ausführungszeit eines Programms oder eines bestimmten Programmteils.
Performance-Monitoring: Identifikation von Engpässen oder ungewöhnlich langen Zykluszeiten in einer Steuerungsapplikation.
Diagnose: Protokollierung von Zykluszeiten zu Analysezwecken oder zur Erstellung von Systemlaufzeitstatistiken.
Adaptive Steuerung: Bereitstellung der aktuellen Zykluszeit für Algorithmen, deren Verhalten von der verfügbaren Rechenzeit abhängen soll.
⚖️ Vergleich mit ähnlichen Bausteinen
Im Vergleich zu generischen Zeitmessbausteinen (wie E_DELAY oder E_CYCLE) ist CYCLE_TIME spezialisiert auf die Differenzbildung zwischen aufeinanderfolgenden Zeitpunkten. Er führt keinen eigenen Timer, sondern wertet extern bereitgestellte Zeitstempel aus. Bausteine wie E_SR oder E_R_TRIG dienen grundlegend anderen Zwecken (Speichern, Flankenerkennung) und bieten keine Zeitdifferenzberechnung.
🛠️ Zugehörige Übungen
Fazit
Der CYCLE_TIME-Funktionsblock ist ein einfaches, aber effektives Werkzeug zur Laufzeitmessung in IEC 61499-basierten Steuerungssystemen. Seine klare Schnittstelle und einfache Funktionsweise machen ihn zu einer robusten Komponente für Diagnose- und Monitoring-Aufgaben, wo die Genauigkeit und Zuverlässigkeit der Zykluszeiterfassung im Vordergrund steht.