Taktzeitmessung bei IEC-programmierbaren Zielsystemen

Frage:
Wie lässt sich durch eine einfache Programmerweiterung bei IEC-programmierbaren Zielsystemen die Zeit zwischen zwei Ereignissen (z. B. binäre Merkersignale) messen?

Antwort:
Erweitern Sie Ihr IEC-Projekt wie folgt:
  • Erstellen Sie eine neue POU (z.B. POU MeasuringCycleTime in FUP).
  • Fügen Sie im Netzwerk 1 einen Baustein L_PHINTK (z. B. die Erstinstanz L_PHINT3) ein und beschalten Sie den Baustein wie unten dargestellt. Der Eingang L_PHINT3.bLoad_b muss mit dem Startereignis (Startsignal für den zu messenden Zyklus) verbunden sein.
  • Fügen Sie ein Netzwerk 2 an, in dem Sie die Variable zum Beenden der Zeitmessung über eine positive Flankenauswertung (FB R_TRIG1) führen und darüber einen Selektor (Funktion SEL) steuern. Der Selektor wirkt durch die Rückführung des Ausgangssignals auf den zweiten Eingang als Sample&Hold-Glied und übernimmt mit jeder positiven Flanke am Stop-Signal die über L_PHINT3 gebildete Zeitinformation.
  • Legen Sie im Parameter-Instanzmanager die interne Variable L_PHINT3.byMode als Codestellen-Erstinstanz an und initialisieren Sie die Codestelle auf einen Wert 1 (Modus 1: flankengesteuertes Rücksetzen des Integrators L_PHINT3).
  • Legen Sie eine Intervalltask an, die in Zeitabständen der gewünschten Messauflösung aufgerufen wird (Beispiel: Wenn Sie ein Zeitintervall in einer gewünschten Auflösung von 5ms messen möchten, müssen Sie die Intervalltask mit einer Zykluszeit von 5ms einrichten.). Wenn bereits eine Intervalltask mit dem gewünschten Aufrufintervall besteht, können Sie diese nutzen.
  • Hängen Sie  Ihre POU an die neu eingerichtete Intervalltask an bzw. rufen Sie Ihre POU in einer bestehenden Intervalltask auf.

Im unten dargestellten Beispielprogramm wird die Zeitmessung über eine positive Flanke an der Variablen bStartTrigger_b gestartet. Die Messung wird beendet, wenn eine positive Flanke auf der Variable bStopTrigger_b erkannt wird. Die gemessene Zykluszeit zwischen den positiven Flanken auf den Variablen bStartTrigger_b und bStopTrigger_b wird in [ms] auf der Variablen dnCycleTime angezeigt.

URL zur Verlinkung dieses AKB-Artikels: https://www.lenze.com/de-de/go/akb/200606698/0/
Kontaktformular